local.js 924 B

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