passport-local icon indicating copy to clipboard operation
passport-local copied to clipboard

set authentication on two entity of user

Open behzadnm99 opened this issue 4 years ago • 2 comments

Environment

  • Node version: lts
  • passport version: latest
  • passport-local version: latest

hello guys. i using passport-local for authentication and i want apply local auth strategy on two type of user : normal users and admin.

how to handle this senario with passport-local?

please help me. thank you.

behzadnm99 avatar Jul 20 '19 05:07 behzadnm99

@behzadnm99 did you find any solution for this? I am facing the same issue here.

usamamashkoor avatar Jun 03 '20 13:06 usamamashkoor

you can rename your strategy, for example :

passport.use("local-admin", new LocalStrategy(
  function(username, password, done) {
    UserAdmin.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));
passport.use("local-user", new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

and in your route :

app.post('/admin/login', 
  passport.authenticate('local-admin', { failureRedirect: '/admin/login' }),
  function(req, res) {
    res.redirect('/admin');
  });

app.post('/login', 
  passport.authenticate('local-user', { failureRedirect: '/login' }),
  function(req, res) {
    res.redirect('/');
  });

martiendt avatar Aug 13 '21 04:08 martiendt