- More, more, more...

This commit is contained in:
2019-07-04 23:06:04 -04:00
parent 6d5d238d34
commit af13551042
16 changed files with 348 additions and 94 deletions

View File

@@ -2,17 +2,17 @@ const errors = require('restify-errors');
const config = require('../config');
const handlePassportResponse = (req, res, next) => (err, passportUser, info) => {
const handlePassportResponse = (req, res, next) => (err, user, info) => {
if (err) {
return next(err);
}
const isVerifiedUser = passportUser.isRegistrationVerified();
if (passportUser && isVerifiedUser) {
const user = passportUser;
user.token = passportUser.generateJWT();
const isVerifiedUser = user &&
user.isRegistrationVerified();
if (user && isVerifiedUser) {
return res.send({ ...user.toAuthJSON() });
} else if (passportUser && !isVerifiedUser){
} else if (user && !isVerifiedUser){
return res.send({
registrationSuccess: true,
nextSteps: 'Check your email for our confirmation email, you will not be able to login without confirming.'
@@ -71,7 +71,7 @@ module.exports = function (server, auth) {
/* Facebook */
server.get(
'/auth/facebook',
'/auth/facebook/login',
passport.authenticate('facebook', {
scope: ['email', 'public_profile'],
session: false,
@@ -79,7 +79,7 @@ module.exports = function (server, auth) {
);
server.get(
'/auth/facebook/callback',
'/auth/facebook/loggedin',
(req, res, next) => {
const callback = handlePassportResponse(req, res, next);
return passport.authenticate(
@@ -89,4 +89,50 @@ module.exports = function (server, auth) {
)(req, res, next);
}
);
server.get(
'/auth/facebook/link',
auth.secure,
(req, res, next) => {
req.user.record.setLinkCheckBit((err, linkCheckBit) => {
passport.authenticate('facebookLink', {
scope: ['email', 'public_profile'],
session: false,
state: linkCheckbit,
})(req, res, next),
});
},
);
server.get(
'/auth/facebook/linked',
(req, res, next) => {
const linkCheckBit = req.query.state;
return passport.authenticate(
'facebook',
{ failureRedirect: '/profile' },
(err, profile) => {
if (err) {
return next(err);
}
User.linkFacebookProfile(linkCheckBit, profile, (err, user) => {
if (err) {
return next(err);
}
if (!user) {
return next(err, false, 'Linking the account to Facebook was unsuccessful, please try again.');
}
res.send({
success: true,
info: 'Facerbook account successfully linked',
});
});
},
)(req, res, next);
}
);
};