Improve login redirection

This commit is contained in:
lideming 2021-02-24 14:14:27 +08:00
parent 0c3b2effc6
commit 1d8557ac8b
2 changed files with 13 additions and 4 deletions

View file

@ -43,6 +43,6 @@ exports.restrict = function(req, res, next) {
next(); next();
} else { } else {
req.session.error = 'Access denied!'; req.session.error = 'Access denied!';
res.redirect('/login'); res.redirect('/login?redirect=' + encodeURIComponent(req.originalUrl));
} }
} }

View file

@ -10,8 +10,17 @@ const authenticate = auth.authenticate;
const restrict = auth.restrict; const restrict = auth.restrict;
const router = express.Router(); const router = express.Router();
/** Redirect logged user to controler page */
function guest_only(req, res, next) {
if (req.session.user) {
res.redirect('/controller');
} else {
next();
}
}
/* GET home page. */ /* GET home page. */
router.get('/', function(req, res, next) { router.get('/', guest_only, function(req, res, next) {
res.render('front_door', {title: 'ztncui'}); res.render('front_door', {title: 'ztncui'});
}); });
@ -21,7 +30,7 @@ router.get('/logout', function(req, res) {
}); });
}); });
router.get('/login', function(req, res) { router.get('/login', guest_only, function(req, res) {
let message = null; let message = null;
if (req.session.error) { if (req.session.error) {
if (req.session.error !== 'Access denied!') { if (req.session.error !== 'Access denied!') {
@ -40,7 +49,7 @@ router.post('/login', async function(req, res) {
req.session.user = user; req.session.user = user;
req.session.success = 'Authenticated as ' + user.name; req.session.success = 'Authenticated as ' + user.name;
if (user.pass_set) { if (user.pass_set) {
res.redirect('/controller'); res.redirect(req.query.redirect || '/controller');
} else { } else {
res.redirect('/users/' + user.name + '/password'); res.redirect('/users/' + user.name + '/password');
} }