TwoToc code
[YouAndWeb_TwoToc] / server / auth / local / passport.js
diff --git a/server/auth/local/passport.js b/server/auth/local/passport.js
new file mode 100755 (executable)
index 0000000..8b298c9
--- /dev/null
@@ -0,0 +1,39 @@
+var passport = require('passport');
+var LocalStrategy = require('passport-local').Strategy;
+
+function localAuthenticate(User, email, password, done) {
+  User.findOneAsync({
+    email: email.toLowerCase()
+  })
+    .then(function(user) {
+      if (!user) {
+        return done(null, false, {
+          message: 'This email is not registered.'
+        });
+      }
+      user.authenticate(password, function(authError, authenticated) {
+        if (authError) {
+          return done(authError);
+        }
+        if (!authenticated) {
+          return done(null, false, {
+            message: 'This password is not correct.'
+          });
+        } else {
+          return done(null, user);
+        }
+      });
+    })
+    .catch(function(err) {
+      return done(err);
+    });
+}
+
+exports.setup = function(User, config) {
+  passport.use(new LocalStrategy({
+    usernameField: 'email',
+    passwordField: 'password' // this is the virtual field on the model
+  }, function(email, password, done) {
+    return localAuthenticate(User, email, password, done);
+  }));
+};