Skip to content

Commit

Permalink
Merge pull request #4 from omodauda/facebook_oauth
Browse files Browse the repository at this point in the history
implemented user auth using google & facebook oauth
  • Loading branch information
GoZaddy authored Jun 21, 2020
2 parents 4d78410 + 0babe11 commit 27aec14
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 2 deletions.
12 changes: 10 additions & 2 deletions Controllers/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ module.exports = {
// Check if there is a user with the same email
const foundUser = await User.findOne({ "local.email": email });
const existingUser = await User.findOne({"google.email": email});
if (foundUser || existingUser) {
const facebookUser = await User.findOne({"facebook.email": email});
if (foundUser || existingUser || facebookUser) {
return res.status(403).json({ error: 'Email is already in use'});
}

Expand Down Expand Up @@ -61,9 +62,16 @@ module.exports = {

googleOAuth: async (req, res, next) => {
// Generate token
console.log('got here');
// console.log('got here');
const token = signToken(req.user);
res.status(200).json({ token });
},

facebookOAuth: async (req, res, next) => {
// console.log('got here');
// console.log('req.user', req.user);
const token = signToken(req.user);
res.status(200).json({ token });
}

}
2 changes: 2 additions & 0 deletions Routes/authRoute.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,7 @@ router.route('/signin')
router.route('/oauth/google')
.post(passport.authenticate('googleToken', { session: false }), UsersController.googleOAuth);

router.route('/oauth/facebook')
.post(passport.authenticate('facebookToken', { session: false}), UsersController.facebookOAuth);

module.exports = router;
8 changes: 8 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"mongoose": "^5.9.19",
"multer": "^1.4.2",
"passport": "^0.4.1",
"passport-facebook-token": "^4.0.0",
"passport-google-plus-token": "^2.1.0",
"passport-jwt": "^4.0.0",
"passport-local": "^1.0.0",
Expand Down
32 changes: 32 additions & 0 deletions passport.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const JwtStrategy = require('passport-jwt').Strategy;
const { ExtractJwt } = require('passport-jwt');
const LocalStrategy = require('passport-local').Strategy;
const GooglePlusTokenStrategy = require('passport-google-plus-token');
const FacebookTokenStrategy = require('passport-facebook-token');
const User = require('./Models/authModel');

// JSON WEB TOKENS STRATEGY
Expand Down Expand Up @@ -58,6 +59,37 @@ passport.use('googleToken', new GooglePlusTokenStrategy({
}
}));

//FACEBOOK OAUTH STRATEGY
passport.use('facebookToken', new FacebookTokenStrategy({
clientID: process.env.FACEBOOK_APP_ID,
clientSecret: process.env.FACEBOOK_APP_SECRET
}, async (accessToken, refreshToken, profile, done) => {
try{
console.log('profile', profile);
console.log('accessToken', accessToken);
console.log('refreshToken', refreshToken);

const existingUser = await User.findOne({ "facebook.id": profile.id });
if (existingUser) {
return done(null, existingUser);
}

const newUser = new User({
method: 'facebook',
facebook: {
id: profile.id,
email: profile.emails[0].value
}
});

await newUser.save();
done(null, newUser)
} catch(error) {
done(error, false, error.message);
}
}));


// LOCAL STRATEGY
passport.use(new LocalStrategy({
usernameField: 'email'
Expand Down

0 comments on commit 27aec14

Please sign in to comment.