authentication.js 1.02 KB
Newer Older
1
/* global WIKI */
2 3 4 5 6 7 8

// ------------------------------------
// Local Account
// ------------------------------------

const LocalStrategy = require('passport-local').Strategy

9 10 11 12 13 14
module.exports = {
  init (passport, conf) {
    passport.use('local',
      new LocalStrategy({
        usernameField: 'email',
        passwordField: 'password'
Nick's avatar
Nick committed
15 16 17 18 19 20
      }, async (uEmail, uPassword, done) => {
        try {
          const user = await WIKI.models.users.query().findOne({
            email: uEmail,
            providerKey: 'local'
          })
21
          if (user) {
Nick's avatar
Nick committed
22 23 24 25 26 27 28 29
            await user.verifyPassword(uPassword)
            if (!user.isActive) {
              done(new WIKI.Error.AuthAccountBanned(), null)
            } else if (!user.isVerified) {
              done(new WIKI.Error.AuthAccountNotVerified(), null)
            } else {
              done(null, user)
            }
30
          } else {
31
            done(new WIKI.Error.AuthLoginFailed(), null)
32
          }
Nick's avatar
Nick committed
33
        } catch (err) {
34
          done(err, null)
Nick's avatar
Nick committed
35 36 37
        }
      })
    )
38
  }
39
}