I am building an app using Express/Node.js with Passport.js(passport-local) & Mongoose.
There are two kind of users:
- regular users (they login using
/user-login
page and passport strategy'local-user-login'
; regular users are stored in "Users" MongoDB collection) - admins (they login using
/admin-login
page and passport strategy'local-admin-login'
; admins are stored in "Admins" MongoDB collection)
I also have 2 pages: /user_home
(needs to be accessible to logged regular users only) and /admin_home
(for logged admins only)
Route for /user_home
:
app.get('/user_home', isLoggedIn, function(req, res) {
// render the page
});
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/login');
}
If I log in as an admin and try to access /user_home
, it doesn't allow me, which is fine. My question is: how can I define another "isLoggedIn
" function that checks if I am logged in as an admin rather than a regular user? Ideally I would like to have a function "isLoggedInAsUser" and another one "isLoggedInAsAdmin".
So far I tried defining the /admin_home
route the same way:
app.get('/admin_home', isLoggedIn, function(req, res) {
// render the page
});
But it's obvious why it doesn't work. The code doesn't know that I want it to check if it's an admin rather than a regular user.
Aucun commentaire:
Enregistrer un commentaire