fix: making login flow async again for cookies
This commit is contained in:
@ -53,13 +53,30 @@ export default function(UserIdent) {
|
||||
const email = profile.emails[0].value;
|
||||
return User.findOne$({ where: { email } })
|
||||
.flatMap(user => {
|
||||
const createToken = observeQuery(
|
||||
AccessToken,
|
||||
'create',
|
||||
{
|
||||
userId: user.id,
|
||||
created: new Date(),
|
||||
ttl: user.constructor.settings.ttl
|
||||
}
|
||||
);
|
||||
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(
|
||||
( user ) => cb(null, user, null, null),
|
||||
({ user, token }) => cb(null, user, null, token),
|
||||
cb
|
||||
);
|
||||
|
||||
|
@ -119,31 +119,33 @@ export default function setupPassport(app) {
|
||||
passport.authenticate(
|
||||
strategy,
|
||||
{ session: false },
|
||||
(err, user) => {
|
||||
(err, user, userInfo) => {
|
||||
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
if (!user || !userInfo) {
|
||||
return res.redirect(config.failureRedirect);
|
||||
}
|
||||
let redirect = url.parse(successRedirect(req), true);
|
||||
|
||||
delete redirect.search;
|
||||
|
||||
req.flash(
|
||||
'success',
|
||||
'Success! You have signed in to your account. Happy Coding!'
|
||||
);
|
||||
|
||||
// redirect.query = {
|
||||
// /* eslint-disable camelcase */
|
||||
// access_token: info.accessToken.id,
|
||||
// /* eslint-enable camelcase */
|
||||
// userId: user.id.toString()
|
||||
// };
|
||||
|
||||
user.loginByRequest(req, res);
|
||||
const { accessToken } = userInfo;
|
||||
if (accessToken && accessToken.id) {
|
||||
req.flash(
|
||||
'success',
|
||||
'Success! You have signed in to your account. Happy Coding!'
|
||||
);
|
||||
const cookieConfig = {
|
||||
signed: !!req.signedCookies,
|
||||
maxAge: accessToken.ttl
|
||||
};
|
||||
res.cookie('access_token', accessToken.id, cookieConfig);
|
||||
res.cookie('userId', accessToken.userId, cookieConfig);
|
||||
req.login(user);
|
||||
}
|
||||
|
||||
redirect = url.format(redirect);
|
||||
return res.redirect(redirect);
|
||||
|
Reference in New Issue
Block a user