diff --git a/controllers/forms.js b/controllers/forms.js index 92af8cd0..e50187f7 100644 --- a/controllers/forms.js +++ b/controllers/forms.js @@ -14,6 +14,7 @@ const express = require('express') , dismissReports = require(__dirname+'/../models/forms/dismiss-report.js') , loginAccount = require(__dirname+'/../models/forms/login.js') , registerAccount = require(__dirname+'/../models/forms/register.js') + , hasPerms = require(__dirname+'/../helpers/haspermsmiddleware.js') , numberConverter = require(__dirname+'/../helpers/number-converter.js') , banCheck = require(__dirname+'/../helpers/bancheck.js'); @@ -160,7 +161,8 @@ router.post('/board/:board/posts', Boards.exists, banCheck, numberConverter, asy || req.body.dismiss || req.body.spoiler || req.body.ban - || req.body.global_ban)) { + || req.body.global_ban + || req.body.preserve_post)) { errors.push('Must select an action') } if (req.body.report && (!req.body.reason || req.body.reason.length === 0)) { @@ -227,4 +229,11 @@ router.post('/board/:board/posts', Boards.exists, banCheck, numberConverter, asy }); +//unban +router.post('/board/:board/bans', Boards.exists, banCheck, hasPerms, numberConverter, async (req, res, next) => { + + //TODO: unbans + +}); + module.exports = router; diff --git a/helpers/isloggedin.js b/helpers/isloggedin.js index 3809e84d..a444a9bd 100644 --- a/helpers/isloggedin.js +++ b/helpers/isloggedin.js @@ -1,6 +1,13 @@ 'use strict'; module.exports = (req, res, next) => { - if (req.session.authenticated === true) return next() - res.redirect('/login') + if (req.session.authenticated === true) { + return next(); + } + const redirect = req.params.board; + if (redirect) { + res.redirect(`/login?redirect=${redirect}`); + } else { + res.redirect('/login'); + } } diff --git a/models/forms/login.js b/models/forms/login.js index 4db2da19..ce055232 100644 --- a/models/forms/login.js +++ b/models/forms/login.js @@ -7,6 +7,7 @@ module.exports = async (req, res, next) => { const username = req.body.username.toLowerCase(); const password = req.body.password; + const redirect = req.body.redirect; //fetch an account let account; @@ -21,7 +22,7 @@ module.exports = async (req, res, next) => { return res.status(403).render('message', { 'title': 'Forbidden', 'message': 'Incorrect username or password', - 'redirect': '/login' + 'redirect': redirect ? `/login?redirect=${redirect}` : '/login' }); } @@ -44,18 +45,14 @@ module.exports = async (req, res, next) => { req.session.authenticated = true; //successful login - return res.render('message', { - 'title': 'Success', - 'message': `Welcome, ${username}`, - 'redirect': '/' - }); + return res.redirect(redirect ? `/${redirect}/manage` : '/'); } return res.status(403).render('message', { 'title': 'Forbidden', 'message': 'Incorrect username or password', - 'redirect': '/login' + 'redirect': redirect ? `/login?redirect=${redirect}` : '/login' }); } diff --git a/models/pages/login.js b/models/pages/login.js index 70f9275d..373b330d 100644 --- a/models/pages/login.js +++ b/models/pages/login.js @@ -4,7 +4,8 @@ module.exports = (req, res, next) => { //render the page res.render('login', { - csrf: req.csrfToken() + csrf: req.csrfToken(), + redirect: req.query.redirect, }); }