From c82299f94b52c3821fe5584a7b84f15097f457e1 Mon Sep 17 00:00:00 2001 From: rainbow napkin Date: Mon, 18 May 2026 01:54:43 -0400 Subject: [PATCH] Added configurable link section to Navbar --- src/controllers/404Controller.js | 2 +- src/controllers/aboutController.js | 2 +- src/controllers/adminPanelController.js | 2 +- src/controllers/channelController.js | 2 +- src/controllers/channelSettingsController.js | 2 +- src/controllers/emailChangeController.js | 8 ++++---- src/controllers/hrtController.js | 2 +- src/controllers/indexController.js | 2 +- src/controllers/loginController.js | 8 ++++---- src/controllers/migrateController.js | 2 +- src/controllers/newChannelController.js | 2 +- .../panel/popoutContainerController.js | 2 +- src/controllers/passwordResetController.js | 4 ++-- src/controllers/profileController.js | 4 ++-- src/controllers/registerController.js | 2 +- src/views/partial/navbar.ejs | 15 +++++++++++++-- 16 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/controllers/404Controller.js b/src/controllers/404Controller.js index 471ea16..3e7a4e0 100644 --- a/src/controllers/404Controller.js +++ b/src/controllers/404Controller.js @@ -26,5 +26,5 @@ module.exports = async function(req, res){ res.status(404); //Render page - return res.render('404', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); + return res.render('404', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); } \ No newline at end of file diff --git a/src/controllers/aboutController.js b/src/controllers/aboutController.js index 187157b..249e931 100644 --- a/src/controllers/aboutController.js +++ b/src/controllers/aboutController.js @@ -24,5 +24,5 @@ const csrfUtils = require('../utils/csrfUtils'); //register page functions module.exports.get = async function(req, res){ //Render page - return res.render('about', {aboutText: config.aboutText, instance: config.instanceName, user: req.session.user, version: package.canopyDisplayVersion, csrfToken: csrfUtils.generateToken(req)}); + return res.render('about', {aboutText: config.aboutText, instance: config.instanceName, links: config.links, user: req.session.user, version: package.canopyDisplayVersion, csrfToken: csrfUtils.generateToken(req)}); } \ No newline at end of file diff --git a/src/controllers/adminPanelController.js b/src/controllers/adminPanelController.js index ca1a74c..6ecdaee 100644 --- a/src/controllers/adminPanelController.js +++ b/src/controllers/adminPanelController.js @@ -42,7 +42,7 @@ module.exports.get = async function(req, res){ //Render out the page return res.render('adminPanel', { - instance: config.instanceName, + instance: config.instanceName, links: config.links, user: req.session.user, rankEnum: permissionModel.rankEnum, chanGuide: chanGuide, diff --git a/src/controllers/channelController.js b/src/controllers/channelController.js index dd27fcd..fef37a7 100644 --- a/src/controllers/channelController.js +++ b/src/controllers/channelController.js @@ -22,5 +22,5 @@ const csrfUtils = require('../utils/csrfUtils'); //channel functions module.exports.get = function(req, res){ - res.render('channel', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); + res.render('channel', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); } \ No newline at end of file diff --git a/src/controllers/channelSettingsController.js b/src/controllers/channelSettingsController.js index e310773..3559503 100644 --- a/src/controllers/channelSettingsController.js +++ b/src/controllers/channelSettingsController.js @@ -42,7 +42,7 @@ module.exports.get = async function(req, res){ throw loggerUtils.exceptionSmith("Channel not found.", "queue"); } - return res.render('channelSettings', {instance: config.instanceName, user: req.session.user, channel: chanDB, reqRank, rankEnum: permissionModel.rankEnum, csrfToken: csrfUtils.generateToken(req), unescape: validator.unescape}); + return res.render('channelSettings', {instance: config.instanceName, links: config.links, user: req.session.user, channel: chanDB, reqRank, rankEnum: permissionModel.rankEnum, csrfToken: csrfUtils.generateToken(req), unescape: validator.unescape}); }catch(err){ return exceptionHandler(res, err); } diff --git a/src/controllers/emailChangeController.js b/src/controllers/emailChangeController.js index fb9cabd..6b0b99d 100644 --- a/src/controllers/emailChangeController.js +++ b/src/controllers/emailChangeController.js @@ -40,18 +40,18 @@ module.exports.get = async function(req, res){ //If we have an invalid request if(requestDB == null){ - return res.render('emailChange', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: false}); + return res.render('emailChange', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: false}); } //Speak of our success (don't wait for the emails to be sent) - res.render('emailChange', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: true}); + res.render('emailChange', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: true}); //Consume the request await requestDB.consume(); }else{ - return res.render('emailChange', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: false}); + return res.render('emailChange', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: false}); } }catch(err){ - return res.render('emailChange', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: false}); + return res.render('emailChange', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req), valid: false}); } } \ No newline at end of file diff --git a/src/controllers/hrtController.js b/src/controllers/hrtController.js index e03d5ac..7b1b920 100644 --- a/src/controllers/hrtController.js +++ b/src/controllers/hrtController.js @@ -24,5 +24,5 @@ const csrfUtils = require('../utils/csrfUtils'); //register page functions module.exports.get = async function(req, res){ //Render page - return res.render('hrt', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); + return res.render('hrt', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); } \ No newline at end of file diff --git a/src/controllers/indexController.js b/src/controllers/indexController.js index 30e9682..a06cfec 100644 --- a/src/controllers/indexController.js +++ b/src/controllers/indexController.js @@ -29,7 +29,7 @@ const {exceptionHandler, errorHandler} = require('../utils/loggerUtils'); module.exports.get = async function(req, res){ try{ const chanGuide = await channelModel.getChannelList(); - return res.render('index', {instance: config.instanceName, user: req.session.user, chanGuide: chanGuide, csrfToken: csrfUtils.generateToken(req), unescape: validator.unescape}); + return res.render('index', {instance: config.instanceName, links: config.links, user: req.session.user, chanGuide: chanGuide, csrfToken: csrfUtils.generateToken(req), unescape: validator.unescape}); }catch(err){ return exceptionHandler(res, err); } diff --git a/src/controllers/loginController.js b/src/controllers/loginController.js index a25d316..ffa5fc8 100644 --- a/src/controllers/loginController.js +++ b/src/controllers/loginController.js @@ -45,7 +45,7 @@ module.exports.get = async function(req, res){ //if we have previous attempts for this user if(attempts != null){ if(attempts.count > sessionUtils.maxAttempts){ - return res.render('lockedAccount', {instance: config.instanceName, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); + return res.render('lockedAccount', {instance: config.instanceName, links: config.links, user: req.session.user, csrfToken: csrfUtils.generateToken(req)}); } //If the users login's are being throttled @@ -56,16 +56,16 @@ module.exports.get = async function(req, res){ const challenge = await altchaUtils.genCaptcha(difficulty, user); //Render page - return res.render('login', {instance: config.instanceName, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); + return res.render('login', {instance: config.instanceName, links: config.links, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); } //otherwise }else{ //Render generic page - return res.render('login', {instance: config.instanceName, user: req.session.user, challenge: null, csrfToken: csrfUtils.generateToken(req)}); + return res.render('login', {instance: config.instanceName, links: config.links, user: req.session.user, challenge: null, csrfToken: csrfUtils.generateToken(req)}); } //if we received invalid input }else{ //Render pretend nothing happened, send out a generic page - return res.render('login', {instance: config.instanceName, user: req.session.user, challenge: null, csrfToken: csrfUtils.generateToken(req)}); + return res.render('login', {instance: config.instanceName, links: config.links, user: req.session.user, challenge: null, csrfToken: csrfUtils.generateToken(req)}); } } \ No newline at end of file diff --git a/src/controllers/migrateController.js b/src/controllers/migrateController.js index ea82e5e..a46d3b2 100644 --- a/src/controllers/migrateController.js +++ b/src/controllers/migrateController.js @@ -27,5 +27,5 @@ module.exports.get = async function(req, res){ const challenge = await altchaUtils.genCaptcha(); //Render page - return res.render('migrate', {instance: config.instanceName, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); + return res.render('migrate', {instance: config.instanceName, links: config.links, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); } \ No newline at end of file diff --git a/src/controllers/newChannelController.js b/src/controllers/newChannelController.js index ee77166..233c99a 100644 --- a/src/controllers/newChannelController.js +++ b/src/controllers/newChannelController.js @@ -27,5 +27,5 @@ module.exports.get = async function(req, res){ const challenge = await altchaUtils.genCaptcha(); //render the page - return res.render('newChannel', {instance: config.instanceName, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); + return res.render('newChannel', {instance: config.instanceName, links: config.links, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); } \ No newline at end of file diff --git a/src/controllers/panel/popoutContainerController.js b/src/controllers/panel/popoutContainerController.js index 6993f9e..619cf18 100644 --- a/src/controllers/panel/popoutContainerController.js +++ b/src/controllers/panel/popoutContainerController.js @@ -19,5 +19,5 @@ const config = require('../../../config.json'); //popout panel container functions module.exports.get = async function(req, res){ - res.render('popoutContainer', {instance: config.instanceName}); + res.render('popoutContainer', {instance: config.instanceName, links: config.links}); } \ No newline at end of file diff --git a/src/controllers/passwordResetController.js b/src/controllers/passwordResetController.js index 1d47fae..5fd392c 100644 --- a/src/controllers/passwordResetController.js +++ b/src/controllers/passwordResetController.js @@ -47,11 +47,11 @@ module.exports.get = async function(req, res){ */ //Render page - return res.render('passwordReset', {instance: config.instanceName, user: req.session.user, challenge, token, csrfToken: csrfUtils.generateToken(req)}); + return res.render('passwordReset', {instance: config.instanceName, links: config.links, user: req.session.user, challenge, token, csrfToken: csrfUtils.generateToken(req)}); //If we didn't get a valid token }else{ //otherwise render generic page - return res.render('passwordReset', {instance: config.instanceName, user: req.session.user, challenge, token: null, csrfToken: csrfUtils.generateToken(req)}); + return res.render('passwordReset', {instance: config.instanceName, links: config.links, user: req.session.user, challenge, token: null, csrfToken: csrfUtils.generateToken(req)}); } }catch(err){ return exceptionHandler(res, err); diff --git a/src/controllers/profileController.js b/src/controllers/profileController.js index 67d1895..df5b9c2 100644 --- a/src/controllers/profileController.js +++ b/src/controllers/profileController.js @@ -42,7 +42,7 @@ module.exports.get = async function(req, res){ const presence = await presenceUtils.getPresence(profile.user); res.render('profile', { - instance: config.instanceName, + instance: config.instanceName, links: config.links, user: req.session.user, profile, selfProfile, @@ -52,7 +52,7 @@ module.exports.get = async function(req, res){ }); }else{ res.render('profile', { - instance: config.instanceName, + instance: config.instanceName, links: config.links, user: req.session.user, profile: null, selfProfile: false, diff --git a/src/controllers/registerController.js b/src/controllers/registerController.js index 91fb5b0..9f2eb14 100644 --- a/src/controllers/registerController.js +++ b/src/controllers/registerController.js @@ -27,5 +27,5 @@ module.exports.get = async function(req, res){ const challenge = await altchaUtils.genCaptcha(); //Render page - return res.render('register', {instance: config.instanceName, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); + return res.render('register', {instance: config.instanceName, links: config.links, user: req.session.user, challenge, csrfToken: csrfUtils.generateToken(req)}); } \ No newline at end of file diff --git a/src/views/partial/navbar.ejs b/src/views/partial/navbar.ejs index aa9a56a..c8c3528 100644 --- a/src/views/partial/navbar.ejs +++ b/src/views/partial/navbar.ejs @@ -20,13 +20,24 @@ along with this program. If not, see . %> <% if(user){ %> - + <% }else{ %> - + <% } %> \ No newline at end of file