You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

30 lines
844 B

  1. const passport = require('passport');
  2. const LocalStrategy = require('passport-local').Strategy;
  3. const { getUserForLoginData, getUserById } = require('./repository');
  4. module.exports = function initAuthMiddleware(app) {
  5. passport.use(
  6. new LocalStrategy(async (username, password, done) => {
  7. const user = await getUserForLoginData(username, password);
  8. if (!user) {
  9. return done(null, false);
  10. }
  11. return done(null, user);
  12. })
  13. );
  14. passport.serializeUser((user, done) => done(null, user));
  15. passport.deserializeUser(async (userData, done) => {
  16. const user = await getUserById(userData.id,userData.jwt);
  17. if (!user) {
  18. return done(`Could not deserialize user with id ${userData.id}`);
  19. }
  20. return done(null, user);
  21. });
  22. app.use(passport.initialize());
  23. app.use(passport.session());
  24. };