TwoToc code
[YouAndWeb_TwoToc] / server / auth / local / passport.js
1 var passport = require('passport');
2 var LocalStrategy = require('passport-local').Strategy;
3
4 function localAuthenticate(User, email, password, done) {
5   User.findOneAsync({
6     email: email.toLowerCase()
7   })
8     .then(function(user) {
9       if (!user) {
10         return done(null, false, {
11           message: 'This email is not registered.'
12         });
13       }
14       user.authenticate(password, function(authError, authenticated) {
15         if (authError) {
16           return done(authError);
17         }
18         if (!authenticated) {
19           return done(null, false, {
20             message: 'This password is not correct.'
21           });
22         } else {
23           return done(null, user);
24         }
25       });
26     })
27     .catch(function(err) {
28       return done(err);
29     });
30 }
31
32 exports.setup = function(User, config) {
33   passport.use(new LocalStrategy({
34     usernameField: 'email',
35     passwordField: 'password' // this is the virtual field on the model
36   }, function(email, password, done) {
37     return localAuthenticate(User, email, password, done);
38   }));
39 };