У меня проблема с PassportJs, когда я пытаюсь войти в систему как пользователь, тогда я могу получить доступ к админ-панели без входа в систему как администратор только потому, что я уже вошел в систему как пользователь!
Я очень старался, но все равно получаюПанель администратора, как только я войду как пользователь.
вот мой код
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session')
var doctorapp = require('./routes/doctor');
var receptionapp = require('./routes/reception');
var usersapp = require('./routes/users');
var app = express();
var sha1 = require('sha1');
var DBs = require('./conf');
var passportDr = require('passport'), LocalStrategyDr = require('passport-local').Strategy;
var passportRe = require('passport'), LocalStrategyRe = require('passport-local').Strategy;
passportDr.use('local-doctor', new LocalStrategyDr(
function(username, password, done) {
DBs('doctors').select().where('doctor_name', username).andWhere('doctor_pass', sha1(password)).then((dr)=>{
console.log(dr)
if(dr.length > 0 ){
return done(null, dr[0]);
}else{
return done(null, false);
}
})
}
))
passportDr.serializeUser(function(dr, done) {done(null, dr)});
passportDr.deserializeUser(function(dr, done) {done(null, dr)});
passportRe.use('local-reception', new LocalStrategyRe(
function(username, password, done) {
DBs('reception').select().where('reception_name', username).andWhere('reception_pass', sha1(password)).then((resep)=>{
if(resep.length > 0 ){
return done(null, resep[0]);
}else{
return done(null, false);
}
})
}
))
passportRe.serializeUser(function(resep, done) {done(null, resep)});
passportRe.deserializeUser(function(resep, done) {done(null, resep)});
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({secret: 'keyboard cat', resave:true, saveUninitialized:true }));
app.use('/', usersapp);
app.use(passportDr.initialize());
app.use(passportDr.session());
app.post('/lockdr', passportDr.authenticate('local-doctor', {successRedirect: '/dr', failureRedirect: '/lockdr'}));
app.use('/dr', drlogin, doctorapp);
function drlogin (req, res, next) {
if(req.isAuthenticated() ) {
next();
}else{
res.redirect('/lockdr')
}
}
app.use(passportRe.initialize());
app.use(passportRe.session());
app.post('/', passportRe.authenticate('local-reception', {successRedirect: '/re', failureRedirect: '/'}));
app.use('/re', relogin, receptionapp);
function relogin (req, res, next) {
if(req.isAuthenticated() ) {
next();
}else{
res.redirect('/')
}
}
module.exports = app;
Итак, как я могу отклонить запрос пользователя при попытке доступа в админ-панель через URL