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 | 5x 5x 5x 5x 5x 15x 15x 15x 1x 1x 14x 5x 5x 9x 1x 1x 8x 8x | 'use strict'
const passport = require('koa-passport')
const LocalStrategy = require('passport-local').Strategy
const logger = require('../../util/logger').tag('passport')
exports.setup = function (User, config) {
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password', // this is the virtual field on the model
},
async(email, password, done) => {
try {
const user = await User.findOne({ email: email.toLowerCase() })
if (!user) {
logger.error('用户名错误', { email })
return done(null, false, { msg: '用户名错误!' })
}
if (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) {
logger.debug('LocalStrategy error')
return done(err)
}
}
))
} |