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();
} else {
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 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. */
router.get('/', function(req, res, next) {
router.get('/', guest_only, function(req, res, next) {
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;
if (req.session.error) {
if (req.session.error !== 'Access denied!') {
@ -40,7 +49,7 @@ router.post('/login', async function(req, res) {
req.session.user = user;
req.session.success = 'Authenticated as ' + user.name;
if (user.pass_set) {
res.redirect('/controller');
res.redirect(req.query.redirect || '/controller');
} else {
res.redirect('/users/' + user.name + '/password');
}