Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // User.js
- var mongoose = require('mongoose'),
- bCrypt = require('bcrypt-nodejs');
- var Schema = mongoose.Schema;
- var ObjectId = Schema.ObjectId;
- var userSchema = new Schema({
- id: ObjectId,
- email: { type: String, unique: true, require: true, lowercase: true },
- password: { type: String, require: true, select: false },
- name: {
- firstName: { type: String, require: true },
- lastName: { type: String, require: true },
- username: { type: String }
- },
- avatar: { type: String },
- address: {
- street: String,
- city: String,
- state: String,
- zipcode: Number
- }
- });
- userSchema.pre('save', function(next) {
- var user = this;
- if(!user.isModified('password')) {
- return next();
- }
- bcrypt.hash(user.password, null, null, function(err, hash) {
- if (err) {
- return next(err);
- } else {
- user.password = hash;
- next();
- }
- });
- });
- module.exports = mongoose.model('User', userSchema);
- // Passport.js
- var LocalStrategy = require('passport-local').Strategy;
- var User = require('../models/user');
- var bCrypt = require('bcrypt-nodejs');
- var isValidPassword = function(user, password){
- return bCrypt.compareSync(password, user.password);
- }
- module.exports = function(passport) {
- passport.use('login', new LocalStrategy({
- usernameField: 'email',
- passwordField: 'password',
- passReqToCallback : true
- }, function(req, email, password, done) {
- // check in mongo if a user with username exists or not
- User.findOne({'email': req.body.email }, function(err, user) {
- // In case of any error, return using the done method
- if (err) {
- return done(err);
- }
- if (!user) {
- console.log('User Not Found with email');
- return done(null, false, req.flash('message', 'User Not found.'));
- }
- if (!isValidPassword(user, req.body.password)){
- console.log('Invalid Password');
- return done(null, false, req.flash('message', 'Invalid Password'));
- }
- return done(null, user);
- });
- }));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement