Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var LocalStrategy = require('passport-local').Strategy;
  2. var FacebookStrategy = require('passport-facebook').Strategy;
  3.  
  4.  
  5. var User            = require('../app/models/user');
  6. var configAuth = require('./auth');
  7.  
  8. module.exports = function(passport) {
  9.  
  10.  
  11.     passport.serializeUser(function(user, done){
  12.         done(null, user.id);
  13.     });
  14.  
  15.     passport.deserializeUser(function(id, done){
  16.         User.findById(id, function(err, user){
  17.             done(err, user);
  18.         });
  19.     });
  20.  
  21.  
  22.     passport.use('local-signup', new LocalStrategy({
  23.         usernameField: 'email',
  24.         passwordField: 'password',
  25.         passReqToCallback: true
  26.     },
  27.     function(req, email, password, done){
  28.         process.nextTick(function(){
  29.             User.findOne({'local.username': email}, function(err, user){
  30.                 if(err)
  31.                     return done(err);
  32.                 if(user){
  33.                     return done(null, false, req.flash('signupMessage', 'That email already taken'));
  34.                 } else {
  35.                     var newUser = new User();
  36.                     newUser.local.username = email;
  37.                     newUser.local.password = newUser.generateHash(password);
  38.  
  39.                     newUser.save(function(err){
  40.                         if(err)
  41.                             throw err;
  42.                         return done(null, newUser);
  43.                     })
  44.                 }
  45.             })
  46.  
  47.         });
  48.     }));
  49.  
  50.     passport.use('local-login', new LocalStrategy({
  51.             usernameField: 'email',
  52.             passwordField: 'password',
  53.             passReqToCallback: true
  54.         },
  55.         function(req, email, password, done){
  56.             process.nextTick(function(){
  57.                 User.findOne({ 'local.username': email}, function(err, user){
  58.                     if(err)
  59.                         return done(err);
  60.                     if(!user)
  61.                         return done(null, false, req.flash('loginMessage', 'No User found'));
  62.                     if(!user.validPassword(password)){
  63.                         return done(null, false, req.flash('loginMessage', 'invalid password'));
  64.                     }
  65.                     return done(null, user);
  66.  
  67.                 });
  68.             });
  69.         }
  70.     ));
  71.  
  72.  
  73.     passport.use(new FacebookStrategy({
  74.         clientID: configAuth.facebookAuth.clientID,
  75.         clientSecret: configAuth.facebookAuth.clientSecret,
  76.         callbackURL: configAuth.facebookAuth.callbackURL
  77.       },
  78.       function(accessToken, refreshToken, profile, done) {
  79.           console.log(profile);
  80.             process.nextTick(function(){
  81.                 User.findOne({'facebook.id': profile.id}, function(err, user){
  82.                     if(err)
  83.                         return done(err);
  84.                     if(user)
  85.                         return done(null, user);
  86.                     else {
  87.                         var newUser = new User();
  88.                         newUser.facebook.id = profile.id;
  89.                         newUser.facebook.token = accessToken;
  90.                         newUser.facebook.name = profile.displayName;
  91.                         newUser.facebook.email = profile.emails[0].value;
  92.  
  93.                         newUser.save(function(err){
  94.                             if(err)
  95.                                 throw err;
  96.                             return done(null, newUser);
  97.                         })
  98.  
  99.                     }
  100.                 });
  101.             });
  102.         }
  103.  
  104.     ));
  105.  
  106.  
  107. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement