mirror of https://gitgud.io/fatchan/jschan.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.9 KiB
97 lines
3.9 KiB
'use strict';
|
|
|
|
const express = require('express')
|
|
, router = express.Router()
|
|
, Boards = require(__dirname+'/../db/boards.js')
|
|
, Posts = require(__dirname+'/../db/posts.js')
|
|
//middlewares
|
|
, calcPerms = require(__dirname+'/../helpers/checks/calcpermsmiddleware.js')
|
|
, hasPerms = require(__dirname+'/../helpers/checks/haspermsmiddleware.js')
|
|
, isLoggedIn = require(__dirname+'/../helpers/checks/isloggedin.js')
|
|
, paramConverter = require(__dirname+'/../helpers/paramconverter.js')
|
|
, sessionRefresh = require(__dirname+'/../helpers/sessionrefresh.js')
|
|
, csrf = require(__dirname+'/../helpers/checks/csrfmiddleware.js')
|
|
//page models
|
|
, home = require(__dirname+'/../models/pages/home.js')
|
|
, register = require(__dirname+'/../models/pages/register.js')
|
|
, manage = require(__dirname+'/../models/pages/manage.js')
|
|
, { managereports, managebanners, managesettings, managebans } = require(__dirname+'/../models/pages/manage/') //todo: refactor more into categories like this
|
|
, globalManage = require(__dirname+'/../models/pages/globalmanage.js')
|
|
, changePassword = require(__dirname+'/../models/pages/changepassword.js')
|
|
, login = require(__dirname+'/../models/pages/login.js')
|
|
, create = require(__dirname+'/../models/pages/create.js')
|
|
, board = require(__dirname+'/../models/pages/board.js')
|
|
, catalog = require(__dirname+'/../models/pages/catalog.js')
|
|
, banners = require(__dirname+'/../models/pages/banners.js')
|
|
, randombanner = require(__dirname+'/../models/pages/randombanner.js')
|
|
, news = require(__dirname+'/../models/pages/news.js')
|
|
, captchaPage = require(__dirname+'/../models/pages/captchapage.js')
|
|
, captcha = require(__dirname+'/../models/pages/captcha.js')
|
|
, thread = require(__dirname+'/../models/pages/thread.js')
|
|
, modlog = require(__dirname+'/../models/pages/modlog.js')
|
|
, modloglist = require(__dirname+'/../models/pages/modloglist.js');
|
|
|
|
//homepage with board list
|
|
router.get('/index.html', home);
|
|
|
|
// board page/recents
|
|
router.get('/:board/:page(1[0-9]*|[2-9]*|index).html', Boards.exists, paramConverter, board);
|
|
|
|
// thread view page
|
|
router.get('/:board/thread/:id(\\d+).html', Boards.exists, paramConverter, Posts.exists, thread);
|
|
|
|
// board catalog page
|
|
router.get('/:board/catalog.html', Boards.exists, catalog);
|
|
|
|
// modlogs
|
|
router.get('/:board/logs.html', Boards.exists, modloglist);
|
|
router.get('/:board/logs/:date(\\d{2}-\\d{2}-\\d{4}).html', Boards.exists, paramConverter, modlog);
|
|
|
|
// random board banner
|
|
router.get('/randombanner', randombanner);
|
|
|
|
// get captcha image and cookie
|
|
router.get('/captcha', captcha);
|
|
|
|
//login page
|
|
router.get('/login.html', login);
|
|
|
|
//login page
|
|
router.get('/create.html', sessionRefresh, isLoggedIn, create);
|
|
|
|
//registration page
|
|
router.get('/register.html', register);
|
|
|
|
//news page
|
|
router.get('/news.html', news);
|
|
|
|
//captcha page
|
|
router.get('/captcha.html', captchaPage);
|
|
|
|
//change password page
|
|
router.get('/changepassword.html', changePassword);
|
|
|
|
//logout
|
|
router.get('/logout', (req, res, next) => {
|
|
|
|
//remove session
|
|
req.session.destroy();
|
|
return res.redirect('/');
|
|
|
|
});
|
|
|
|
//public board banners page
|
|
router.get('/:board/banners.html', Boards.exists, banners);
|
|
|
|
//board manage pages
|
|
router.get('/:board/manage/reports.html', sessionRefresh, isLoggedIn, Boards.exists, calcPerms, hasPerms(3), csrf, managereports);
|
|
router.get('/:board/manage/bans.html', sessionRefresh, isLoggedIn, Boards.exists, calcPerms, hasPerms(3), csrf, managebans);
|
|
router.get('/:board/manage/settings.html', sessionRefresh, isLoggedIn, Boards.exists, calcPerms, hasPerms(2), csrf, managesettings);
|
|
router.get('/:board/manage/banners.html', sessionRefresh, isLoggedIn, Boards.exists, calcPerms, hasPerms(2), csrf, managebanners);
|
|
|
|
//global manage page
|
|
router.get('/globalmanage.html', sessionRefresh, isLoggedIn, calcPerms, hasPerms(1), csrf, globalManage);
|
|
//todo: separate pages for global rports, bans, user management and news jsut like per-board manage pages
|
|
|
|
module.exports = router;
|
|
|
|
|