redirect to correct page on login or manage

merge-requests/208/head
fatchan 5 years ago
parent d200c0792e
commit f5d859c71e
  1. 60
      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

@ -9,29 +9,29 @@ const express = require('express')
, upload = require('express-fileupload')
, path = require('path')
, postFiles = upload({
createParentPath: true,
safeFileNames: /[^\w-]+/g,
preserveExtension: 4,
limits: {
fileSize: 10 * 1024 * 1024,
files: 3
},
abortOnLimit: true,
useTempFiles: true,
tempFileDir: path.join(__dirname+'/../tmp/')
})
createParentPath: true,
safeFileNames: /[^\w-]+/g,
preserveExtension: 4,
limits: {
fileSize: 10 * 1024 * 1024,
files: 3
},
abortOnLimit: true,
useTempFiles: true,
tempFileDir: path.join(__dirname+'/../tmp/')
})
, bannerFiles = upload({
createParentPath: true,
safeFileNames: /[^\w-]+/g,
preserveExtension: 4,
limits: {
fileSize: 10 * 1024 * 1024,
files: 10
},
abortOnLimit: true,
useTempFiles: true,
tempFileDir: path.join(__dirname+'/../tmp/')
})
createParentPath: true,
safeFileNames: /[^\w-]+/g,
preserveExtension: 4,
limits: {
fileSize: 10 * 1024 * 1024,
files: 10
},
abortOnLimit: true,
useTempFiles: true,
tempFileDir: path.join(__dirname+'/../tmp/')
})
, removeBans = require(__dirname+'/../models/forms/removebans.js')
, makePost = require(__dirname+'/../models/forms/makepost.js')
, deleteTempFiles = require(__dirname+'/../helpers/files/deletetempfiles.js')
@ -52,7 +52,7 @@ const express = require('express')
// login to account
router.post('/login', (req, res, next) => {
router.post('/login', async (req, res, next) => {
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);
}
});
@ -235,10 +239,10 @@ router.post('/board/:board/post', Boards.exists, banCheck, postFiles, paramConve
if (errors.length > 0) {
await deleteTempFiles(req).catch(e => console.error);
return res.status(400).render('message', {
'title': 'Bad request',
'errors': errors,
'redirect': `/${req.params.board}${req.body.thread ? '/thread/' + req.body.thread + '.html' : ''}`
});
'title': 'Bad request',
'errors': errors,
'redirect': `/${req.params.board}${req.body.thread ? '/thread/' + req.body.thread + '.html' : ''}`
});
}
try {

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

@ -4,5 +4,6 @@ module.exports = (req, res, next) => {
if (req.session.authenticated === true) {
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 password = req.body.password;
const goto = req.body.goto;
const failRedirect = `/login.html${goto ? '?goto='+goto : ''}`
//fetch an account
let account;
@ -21,7 +23,7 @@ module.exports = async (req, res, next) => {
return res.status(403).render('message', {
'title': 'Forbidden',
'message': 'Incorrect username or password',
'redirect': '/login.html'
'redirect': failRedirect
});
}
@ -44,14 +46,14 @@ module.exports = async (req, res, next) => {
req.session.authenticated = true;
//successful login
return res.redirect('/');
return res.redirect(goto || '/');
}
return res.status(403).render('message', {
'title': 'Forbidden',
'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) => {
try {
await buildLogin();
} catch (err) {
return next(err);
}
return res.sendFile(`${uploadDirectory}html/login.html`);
res.render('login', {
'goto': req.query.goto
});
}

@ -1,5 +1,5 @@
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
span + took #{ms > 0 ? ms/1000 : 0}s -

@ -2,4 +2,4 @@ nav.navbar
a.nav-item(href='/') Home
a.nav-item.right(href='/logout') Logout
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
.post-file
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
span
| (#{file.sizeString}, #{file.geometryString}

@ -6,7 +6,7 @@ block head
block content
section.form-wrapper.flex-center.mv-10
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
.postform-label Username
.required *

Loading…
Cancel
Save