Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 3x 3x 3x 4x 4x 1x 1x 3x 3x 3x 3x 3x 3x 4x | 'use strict'
const passport = require('passport')
const LocalStrategy = require('passport-local').Strategy
const logger = require('../../util/logger').tag('passport')
function localAuthenticate(User, config, email, password, done) {
User.findOne({
email: email.toLowerCase(),
}).exec()
.then(user => {
if (!user) {
logger.error('用户名错误', { email })
return done(null, false, { msg: '用户名错误!' })
}
Iif (user.role === 'user' || (!config.userRoles.includes(user.role))) {
logger.error('用户待激活角色', { email })
return done(null, false, { msg: '用户待激活角色!' })
}
switch (user.status) {
case 0:
logger.error('用户待激活状态', { email })
return done(null, false, { msg: '用户待激活状态!' })
case 2:
logger.error('用户被停用', { email })
return done(null, false, { msg: '用户被停用!' })
case 3:
logger.error('用户被删除', { email })
return done(null, false, { msg: '用户被删除!' })
default:
Iif (!user.authenticate(password)) {
logger.error('密码错误', { email })
return done(null, false, { msg: '密码错误!' })
}
return done(null, user)
}
})
// .catch(err => done(err))
.catch(err => {
logger.debug('LocalStrategy error')
done(err)
})
}
// export function setup(User) {
exports.setup = function (User, config) {
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
}, function (email, password, done) {
return localAuthenticate(User, config, email, password, done);
}));
} |