fix: making login flow async again for cookies

This commit is contained in:
Mrugesh Mohapatra
2018-05-22 00:37:01 +05:30
parent 3f83cf59d5
commit e740f44bdd
2 changed files with 37 additions and 18 deletions

View File

@ -53,13 +53,30 @@ export default function(UserIdent) {
const email = profile.emails[0].value; const email = profile.emails[0].value;
return User.findOne$({ where: { email } }) return User.findOne$({ where: { email } })
.flatMap(user => { .flatMap(user => {
const createToken = observeQuery(
AccessToken,
'create',
{
userId: user.id,
created: new Date(),
ttl: user.constructor.settings.ttl
}
);
if (!user) { if (!user) {
return User.create$({ email }); return Observable.combineLatest(
User.create$({ email }),
createToken,
(user, token) => ({ user, token })
);
} }
return Observable.of(user); return Observable.combineLatest(
Observable.of(user),
createToken,
(user, token) => ({ user, token })
);
}) })
.subscribe( .subscribe(
( user ) => cb(null, user, null, null), ({ user, token }) => cb(null, user, null, token),
cb cb
); );

View File

@ -119,31 +119,33 @@ export default function setupPassport(app) {
passport.authenticate( passport.authenticate(
strategy, strategy,
{ session: false }, { session: false },
(err, user) => { (err, user, userInfo) => {
if (err) { if (err) {
return next(err); return next(err);
} }
if (!user) { if (!user || !userInfo) {
return res.redirect(config.failureRedirect); return res.redirect(config.failureRedirect);
} }
let redirect = url.parse(successRedirect(req), true); let redirect = url.parse(successRedirect(req), true);
delete redirect.search; delete redirect.search;
req.flash( const { accessToken } = userInfo;
'success', if (accessToken && accessToken.id) {
'Success! You have signed in to your account. Happy Coding!' req.flash(
); 'success',
'Success! You have signed in to your account. Happy Coding!'
// redirect.query = { );
// /* eslint-disable camelcase */ const cookieConfig = {
// access_token: info.accessToken.id, signed: !!req.signedCookies,
// /* eslint-enable camelcase */ maxAge: accessToken.ttl
// userId: user.id.toString() };
// }; res.cookie('access_token', accessToken.id, cookieConfig);
res.cookie('userId', accessToken.userId, cookieConfig);
user.loginByRequest(req, res); req.login(user);
}
redirect = url.format(redirect); redirect = url.format(redirect);
return res.redirect(redirect); return res.redirect(redirect);