fix(User): Move login logic into user model
This commit is contained in:
committed by
mrugesh mohapatra
parent
c5420229e4
commit
296387d67e
@ -19,7 +19,7 @@ import {
|
|||||||
getPort
|
getPort
|
||||||
} from '../../server/utils/url-utils.js';
|
} from '../../server/utils/url-utils.js';
|
||||||
|
|
||||||
const debug = debugFactory('fcc:user:remote');
|
const debug = debugFactory('fcc:models:user');
|
||||||
const BROWNIEPOINTS_TIMEOUT = [1, 'hour'];
|
const BROWNIEPOINTS_TIMEOUT = [1, 'hour'];
|
||||||
|
|
||||||
const createEmailError = redirectTo => wrapHandledError(
|
const createEmailError = redirectTo => wrapHandledError(
|
||||||
@ -285,49 +285,30 @@ module.exports = function(User) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
User.afterRemote('login', function(ctx, accessToken, next) {
|
User.prototype.loginByRequest = function login(req, res) {
|
||||||
var res = ctx.res;
|
const createToken = this.createAccessToken$()
|
||||||
var req = ctx.req;
|
.do(accessToken => {
|
||||||
// var args = ctx.args;
|
const config = {
|
||||||
|
|
||||||
var config = {
|
|
||||||
signed: !!req.signedCookies,
|
signed: !!req.signedCookies,
|
||||||
maxAge: accessToken.ttl
|
maxAge: accessToken.ttl
|
||||||
};
|
};
|
||||||
|
|
||||||
if (accessToken && accessToken.id) {
|
if (accessToken && accessToken.id) {
|
||||||
debug('setting cookies');
|
|
||||||
res.cookie('access_token', accessToken.id, config);
|
res.cookie('access_token', accessToken.id, config);
|
||||||
res.cookie('userId', accessToken.userId, config);
|
res.cookie('userId', accessToken.userId, config);
|
||||||
}
|
}
|
||||||
|
|
||||||
return req.logIn({ id: accessToken.userId.toString() }, function(err) {
|
|
||||||
if (err) { return next(err); }
|
|
||||||
|
|
||||||
debug('user logged in');
|
|
||||||
|
|
||||||
if (req.session && req.session.returnTo) {
|
|
||||||
var redirectTo = req.session.returnTo;
|
|
||||||
if (redirectTo === '/map-aside') {
|
|
||||||
redirectTo = '/map';
|
|
||||||
}
|
|
||||||
return res.redirect(redirectTo);
|
|
||||||
}
|
|
||||||
|
|
||||||
req.flash('success', { msg: 'Success! You are now logged in.' });
|
|
||||||
return res.redirect('/');
|
|
||||||
});
|
});
|
||||||
|
const updateUser = this.update$({
|
||||||
|
emailVerified: true,
|
||||||
|
emailAuthLinkTTL: null,
|
||||||
|
emailVerifyTTL: null
|
||||||
});
|
});
|
||||||
|
return Observable.combineLatest(
|
||||||
User.afterRemoteError('login', function(ctx) {
|
createToken,
|
||||||
var res = ctx.res;
|
updateUser,
|
||||||
var req = ctx.req;
|
req.logIn(this),
|
||||||
|
(accessToken) => accessToken,
|
||||||
req.flash('errors', {
|
);
|
||||||
msg: 'Invalid username or password.'
|
};
|
||||||
});
|
|
||||||
return res.redirect('/email-signin');
|
|
||||||
});
|
|
||||||
|
|
||||||
User.afterRemote('logout', function(ctx, result, next) {
|
User.afterRemote('logout', function(ctx, result, next) {
|
||||||
var res = ctx.res;
|
var res = ctx.res;
|
||||||
|
@ -157,42 +157,7 @@ module.exports = function enableAuthentication(app) {
|
|||||||
})
|
})
|
||||||
// at this point token has been validated and destroyed
|
// at this point token has been validated and destroyed
|
||||||
// update user and log them in
|
// update user and log them in
|
||||||
.map(user => {
|
.map(user => user.loginByRequest(req, res))
|
||||||
const emailVerified = true;
|
|
||||||
const emailAuthLinkTTL = null;
|
|
||||||
const emailVerifyTTL = null;
|
|
||||||
|
|
||||||
const updateUser = user.update$({
|
|
||||||
emailVerified,
|
|
||||||
emailAuthLinkTTL,
|
|
||||||
emailVerifyTTL
|
|
||||||
})
|
|
||||||
.do((user) => {
|
|
||||||
// update$ does not update in place
|
|
||||||
// update user instance to reflect db
|
|
||||||
user.emailVerified = emailVerified;
|
|
||||||
user.emailAuthLinkTTL = emailAuthLinkTTL;
|
|
||||||
user.emailVerifyTTL = emailVerifyTTL;
|
|
||||||
});
|
|
||||||
|
|
||||||
const createToken = user.createAccessToken$()
|
|
||||||
.do(accessToken => {
|
|
||||||
const config = {
|
|
||||||
signed: !!req.signedCookies,
|
|
||||||
maxAge: accessToken.ttl
|
|
||||||
};
|
|
||||||
if (accessToken && accessToken.id) {
|
|
||||||
res.cookie('access_token', accessToken.id, config);
|
|
||||||
res.cookie('userId', accessToken.userId, config);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return Observable.combineLatest(
|
|
||||||
updateUser,
|
|
||||||
createToken,
|
|
||||||
req.logIn(user),
|
|
||||||
);
|
|
||||||
})
|
|
||||||
.do(() => {
|
.do(() => {
|
||||||
let redirectTo = '/';
|
let redirectTo = '/';
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user