Update to support optional email register and signin

This commit is contained in:
Wu Cheng-Han 2016-12-02 01:58:14 +08:00
parent 52772829ce
commit a73d9ce39e
14 changed files with 180 additions and 16 deletions

View file

@ -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);
});
}));
}