From a73d9ce39e2107b2a9628003f05900d4a641bee5 Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Fri, 2 Dec 2016 01:58:14 +0800 Subject: Update to support optional email register and signin --- lib/auth.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'lib/auth.js') diff --git a/lib/auth.js b/lib/auth.js index 76a962f5..f167cede 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -7,6 +7,8 @@ var GithubStrategy = require('passport-github').Strategy; var GitlabStrategy = require('passport-gitlab2').Strategy; var DropboxStrategy = require('passport-dropbox-oauth2').Strategy; var GoogleStrategy = require('passport-google-oauth20').Strategy; +var LocalStrategy = require('passport-local').Strategy; +var validator = require('validator'); //core var config = require('./config.js'); @@ -35,12 +37,10 @@ function callback(accessToken, refreshToken, profile, done) { if (user.accessToken != accessToken) { user.accessToken = accessToken; needSave = true; - } if (user.refreshToken != refreshToken) { user.refreshToken = refreshToken; needSave = true; - } if (needSave) { user.save().then(function () { @@ -57,7 +57,7 @@ function callback(accessToken, refreshToken, profile, done) { }).catch(function (err) { logger.error('auth callback failed: ' + err); return done(err, null); - }) + }); } //facebook @@ -109,4 +109,25 @@ if (config.google) { clientSecret: config.google.clientSecret, callbackURL: config.serverurl + '/auth/google/callback' }, callback)); +} +// email +if (config.email) { + passport.use(new LocalStrategy({ + usernameField: 'email' + }, + function(email, password, done) { + if (!validator.isEmail(email)) return done(null, false); + models.User.findOne({ + where: { + email: email + } + }).then(function (user) { + if (!user) return done(null, false); + if (!user.verifyPassword(password)) return done(null, false); + return done(null, user); + }).catch(function (err) { + logger.error(err); + return done(err); + }); + })); } \ No newline at end of file -- cgit v1.2.3