local.js 820 B

1234567891011121314151617181920212223242526272829303132
  1. 'use strict'
  2. /* global wiki */
  3. // ------------------------------------
  4. // Local Account
  5. // ------------------------------------
  6. const LocalStrategy = require('passport-local').Strategy
  7. module.exports = (passport, conf) => {
  8. passport.use('local',
  9. new LocalStrategy({
  10. usernameField: 'email',
  11. passwordField: 'password'
  12. }, (uEmail, uPassword, done) => {
  13. wiki.db.User.findOne({ email: uEmail, provider: 'local' }).then((user) => {
  14. if (user) {
  15. return user.validatePassword(uPassword).then(() => {
  16. return done(null, user) || true
  17. }).catch((err) => {
  18. return done(err, null)
  19. })
  20. } else {
  21. return done(new Error('INVALID_LOGIN'), null)
  22. }
  23. }).catch((err) => {
  24. done(err, null)
  25. })
  26. }
  27. ))
  28. }