diff options
author | Wu Cheng-Han | 2016-12-02 01:58:14 +0800 |
---|---|---|
committer | Wu Cheng-Han | 2016-12-02 01:58:14 +0800 |
commit | a73d9ce39e2107b2a9628003f05900d4a641bee5 (patch) | |
tree | 15778b1a6e3322bfe6e6c7a68f2c6e31f4c34844 /lib/auth.js | |
parent | 52772829ce8ccc7eac1fe1df9ace65d90ef36a2c (diff) |
Update to support optional email register and signin
Diffstat (limited to 'lib/auth.js')
-rw-r--r-- | lib/auth.js | 27 |
1 files changed, 24 insertions, 3 deletions
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 |