redirect to correct page on login or manage

merge-requests/208/head
fatchan 5 years ago
parent d200c0792e
commit f5d859c71e
  1. 8
      controllers/forms.js
  2. 2
      controllers/pages.js
  3. 3
      helpers/isloggedin.js
  4. 8
      models/forms/login.js
  5. 10
      models/pages/login.js
  6. 2
      views/includes/footer.pug
  7. 2
      views/includes/navbar.pug
  8. 2
      views/mixins/post.pug
  9. 2
      views/pages/login.pug

@ -52,7 +52,7 @@ const express = require('express')
// login to account // login to account
router.post('/login', (req, res, next) => { router.post('/login', async (req, res, next) => {
const errors = []; const errors = [];
@ -80,7 +80,11 @@ router.post('/login', (req, res, next) => {
}) })
} }
loginAccount(req, res, next); try {
await loginAccount(req, res, next);
} catch (err) {
return next(err);
}
}); });

@ -38,7 +38,7 @@ router.get('/captcha.html', captchaPage);
router.get('/changepassword.html', changePassword); router.get('/changepassword.html', changePassword);
//logout //logout
router.get('/logout', isLoggedIn, (req, res, next) => { router.get('/logout', (req, res, next) => {
//remove session //remove session
req.session.destroy(); req.session.destroy();

@ -4,5 +4,6 @@ module.exports = (req, res, next) => {
if (req.session.authenticated === true) { if (req.session.authenticated === true) {
return next(); return next();
} }
res.redirect('/login.html'); const board = req.params ? req.params.board : null;
res.redirect(`/login.html${board ? '?goto=/'+board+'/manage.html' : ''}`);
} }

@ -7,6 +7,8 @@ module.exports = async (req, res, next) => {
const username = req.body.username.toLowerCase(); const username = req.body.username.toLowerCase();
const password = req.body.password; const password = req.body.password;
const goto = req.body.goto;
const failRedirect = `/login.html${goto ? '?goto='+goto : ''}`
//fetch an account //fetch an account
let account; let account;
@ -21,7 +23,7 @@ module.exports = async (req, res, next) => {
return res.status(403).render('message', { return res.status(403).render('message', {
'title': 'Forbidden', 'title': 'Forbidden',
'message': 'Incorrect username or password', 'message': 'Incorrect username or password',
'redirect': '/login.html' 'redirect': failRedirect
}); });
} }
@ -44,14 +46,14 @@ module.exports = async (req, res, next) => {
req.session.authenticated = true; req.session.authenticated = true;
//successful login //successful login
return res.redirect('/'); return res.redirect(goto || '/');
} }
return res.status(403).render('message', { return res.status(403).render('message', {
'title': 'Forbidden', 'title': 'Forbidden',
'message': 'Incorrect username or password', 'message': 'Incorrect username or password',
'redirect': '/login.html' 'redirect': failRedirect
}); });
} }

@ -5,12 +5,8 @@ const { buildLogin } = require(__dirname+'/../../build.js')
module.exports = async (req, res, next) => { module.exports = async (req, res, next) => {
try { res.render('login', {
await buildLogin(); 'goto': req.query.goto
} catch (err) { });
return next(err);
}
return res.sendFile(`${uploadDirectory}html/login.html`);
} }

@ -1,5 +1,5 @@
small.footer small.footer
| - | -
a(href='https://github.com/fatchan/jscshan/') source code a(href='https://github.com/fatchan/jschan/') source code
- const ms = Date.now()-renderStart - const ms = Date.now()-renderStart
span + took #{ms > 0 ? ms/1000 : 0}s - span + took #{ms > 0 ? ms/1000 : 0}s -

@ -2,4 +2,4 @@ nav.navbar
a.nav-item(href='/') Home a.nav-item(href='/') Home
a.nav-item.right(href='/logout') Logout a.nav-item.right(href='/logout') Logout
a.nav-item.right(href=`/${board ? board._id+'/' : 'global'}manage.html`) Manage a.nav-item.right(href=`/${board ? board._id+'/' : 'global'}manage.html`) Manage
a.nav-item.right(href='/login.html') Login a.nav-item.right(href=`/login.html${board ? '?goto=/'+board._id : ''}`) Login

@ -47,7 +47,7 @@ mixin post(post, truncate, manage=false, globalmanage=false)
each file in post.files each file in post.files
.post-file .post-file
span.post-file-info span.post-file-info
span: a(href='/img/'+file.filename title=file.originalFilename download=file.originalFilename) #{post.spoiler ? 'Spoiler File' : file.originalFilename} span: a(href='/img/'+file.filename title='Download '+file.originalFilename download=file.originalFilename) #{post.spoiler ? 'Spoiler File' : file.originalFilename}
br br
span span
| (#{file.sizeString}, #{file.geometryString} | (#{file.sizeString}, #{file.geometryString}

@ -6,7 +6,7 @@ block head
block content block content
section.form-wrapper.flex-center.mv-10 section.form-wrapper.flex-center.mv-10
form.form-post(action='/forms/login' method='POST') form.form-post(action='/forms/login' method='POST')
//input(type='hidden' name='_csrf' value=csrf) input(type='hidden' name='goto' value=goto)
section.postform-row section.postform-row
.postform-label Username .postform-label Username
.required * .required *

Loading…
Cancel
Save