Advertisement
Guest User

node

a guest
Feb 27th, 2016
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // User.js
  2. var mongoose = require('mongoose'),
  3.     bCrypt   = require('bcrypt-nodejs');
  4.  
  5. var Schema = mongoose.Schema;
  6. var ObjectId = Schema.ObjectId;
  7.  
  8. var userSchema = new Schema({
  9.   id: ObjectId,
  10.   email: { type: String, unique: true, require: true, lowercase: true },
  11.   password: { type: String, require: true, select: false },
  12.   name: {
  13.     firstName: { type: String, require: true },
  14.     lastName: { type: String, require: true },
  15.     username: { type: String }
  16.   },
  17.   avatar: { type: String },
  18.   address: {
  19.     street: String,
  20.     city: String,
  21.     state: String,
  22.     zipcode: Number
  23.   }
  24. });
  25.  
  26. userSchema.pre('save', function(next) {
  27.   var user = this;
  28.   if(!user.isModified('password')) {
  29.     return next();
  30.   }
  31.       bcrypt.hash(user.password, null, null, function(err, hash) {
  32.         if (err) {
  33.           return next(err);
  34.         } else {
  35.           user.password = hash;
  36.           next();
  37.         }
  38.   });
  39. });
  40.  
  41. module.exports = mongoose.model('User', userSchema);
  42.  
  43.  
  44. // Passport.js
  45. var LocalStrategy   = require('passport-local').Strategy;
  46. var User = require('../models/user');
  47. var bCrypt = require('bcrypt-nodejs');
  48.  
  49. var isValidPassword = function(user, password){
  50.   return bCrypt.compareSync(password, user.password);
  51. }
  52.  
  53. module.exports = function(passport) {
  54.  
  55.   passport.use('login', new LocalStrategy({
  56.     usernameField: 'email',
  57.     passwordField: 'password',
  58.     passReqToCallback : true
  59.   }, function(req, email, password, done) {
  60.  
  61.     // check in mongo if a user with username exists or not
  62.     User.findOne({'email': req.body.email }, function(err, user) {
  63.       // In case of any error, return using the done method
  64.  
  65.       if (err) {
  66.         return done(err);
  67.       }
  68.       if (!user) {
  69.         console.log('User Not Found with email');
  70.         return done(null, false, req.flash('message', 'User Not found.'));
  71.       }
  72.       if (!isValidPassword(user, req.body.password)){
  73.         console.log('Invalid Password');
  74.         return done(null, false, req.flash('message', 'Invalid Password'));
  75.       }
  76.       return done(null, user);
  77.     });
  78.   }));
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement