auth.js 867 B

1234567891011121314151617181920212223242526272829303132333435
  1. const passport = require('koa-passport')
  2. const fetchUser = (() => {
  3. // This is an example! Use password hashing in your project and avoid storing passwords in your code
  4. const user = { id: 55667788, username: 'meow', password: 'testmeow' }
  5. return async function() {
  6. return user
  7. }
  8. })()
  9. passport.serializeUser(function(user, done) {
  10. done(null, user.id)
  11. })
  12. passport.deserializeUser(async function(id, done) {
  13. try {
  14. const user = await fetchUser()
  15. done(null, user)
  16. } catch(err) {
  17. done(err)
  18. }
  19. })
  20. const LocalStrategy = require('passport-local').Strategy
  21. passport.use(new LocalStrategy(function(username, password, done) {
  22. fetchUser()
  23. .then(user => {
  24. if (username === user.username && password === user.password) {
  25. done(null, user)
  26. } else {
  27. done(null, false)
  28. }
  29. })
  30. .catch(err => done(err))
  31. }))