From 8c4d9693f58d5ad2d94ff8584dfa6f5057994740 Mon Sep 17 00:00:00 2001 From: rainbownapkin Date: Sun, 17 Nov 2024 23:28:41 -0500 Subject: [PATCH] Started work on permissions list in /adminPanel --- src/controllers/adminPanelController.js | 18 +- .../api/admin/listPermissionsController.js | 31 +++ .../panel/placeholderController.js | 2 +- .../panel/popoutContainerController.js | 2 +- src/routers/api/adminRouter.js | 2 + src/views/adminPanel.ejs | 1 + src/views/partial/adminPanel/channelList.ejs | 17 +- src/views/partial/adminPanel/permList.ejs | 30 +++ src/views/partial/adminPanel/userList.ejs | 19 +- .../{ => partial}/panels/placeholder.ejs | 0 src/views/{panels => }/popoutContainer.ejs | 2 +- src/views/profile.ejs | 2 +- www/css/adminPanel.css | 26 ++- www/css/theme/movie-night.css | 8 +- www/css/theme/the_network_classic.css | 190 ------------------ 15 files changed, 148 insertions(+), 202 deletions(-) create mode 100644 src/controllers/api/admin/listPermissionsController.js create mode 100644 src/views/partial/adminPanel/permList.ejs rename src/views/{ => partial}/panels/placeholder.ejs (100%) rename src/views/{panels => }/popoutContainer.ejs (96%) delete mode 100644 www/css/theme/the_network_classic.css diff --git a/src/controllers/adminPanelController.js b/src/controllers/adminPanelController.js index a422f9a..b17641f 100644 --- a/src/controllers/adminPanelController.js +++ b/src/controllers/adminPanelController.js @@ -24,9 +24,25 @@ const {exceptionHandler} = require("../utils/loggerUtils"); //register page functions module.exports.get = async function(req, res){ try{ + //Get DB info const chanGuide = await channelModel.getChannelList(true); const userList = await userModel.getUserList(true); - return res.render('adminPanel', {instance: config.instanceName, user: req.session.user, chanGuide: chanGuide, userList: userList, rankEnum: permissionModel.rankEnum}); + const permList = (await permissionModel.getPerms()).toObject(); + + //Clean up perm list :P + delete permList._id ; + delete permList.__v; + + //Render out the page + return res.render('adminPanel', { + instance: config.instanceName, + user: req.session.user, + rankEnum: permissionModel.rankEnum, + chanGuide: chanGuide, + userList: userList, + permList: permList + }); + }catch(err){ return exceptionHandler(res,err); } diff --git a/src/controllers/api/admin/listPermissionsController.js b/src/controllers/api/admin/listPermissionsController.js new file mode 100644 index 0000000..c3ddd0e --- /dev/null +++ b/src/controllers/api/admin/listPermissionsController.js @@ -0,0 +1,31 @@ +/*Canopy - The next generation of stoner streaming software +Copyright (C) 2024 Rainbownapkin and the TTN Community + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see .*/ + +//local imports +const {exceptionHandler} = require('../../../utils/loggerUtils.js'); +const permissionModel = require('../../../schemas/permissionSchema.js'); + +//api account functions +module.exports.get = async function(req, res){ + try{ + const perms = await permissionModel.getPerms(); + + res.status(200); + return res.send(perms); + }catch(err){ + return exceptionHandler(res, err); + } +} \ No newline at end of file diff --git a/src/controllers/panel/placeholderController.js b/src/controllers/panel/placeholderController.js index 1455783..5119f89 100644 --- a/src/controllers/panel/placeholderController.js +++ b/src/controllers/panel/placeholderController.js @@ -16,5 +16,5 @@ along with this program. If not, see .*/ //root index functions module.exports.get = async function(req, res){ - res.render('panels/placeholder', {}); + res.render('partial/panels/placeholder', {}); } \ No newline at end of file diff --git a/src/controllers/panel/popoutContainerController.js b/src/controllers/panel/popoutContainerController.js index 78082b8..5461e7c 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('panels/popoutContainer', {instance: config.instanceName}); + res.render('popoutContainer', {instance: config.instanceName}); } \ No newline at end of file diff --git a/src/routers/api/adminRouter.js b/src/routers/api/adminRouter.js index d2cbb15..3af1d11 100644 --- a/src/routers/api/adminRouter.js +++ b/src/routers/api/adminRouter.js @@ -24,6 +24,7 @@ const permissionSchema = require("../../schemas/permissionSchema"); const listUsersController = require("../../controllers/api/admin/listUsersController"); const listChannelsController = require("../../controllers/api/admin/listChannelsController"); const changeRankController = require("../../controllers/api/admin/changeRankController"); +const listPermissionsController = require("../../controllers/api/admin/listPermissionsController"); //globals const router = Router(); @@ -34,6 +35,7 @@ router.use(permissionSchema.reqPermCheck("adminAPI")); //routing functions router.get('/listUsers', listUsersController.get); router.get('/listChannels', listChannelsController.get); +router.get('/listPermissions', listPermissionsController.get); router.post('/changeRank', accountValidator.user(), accountValidator.rank(), changeRankController.post); module.exports = router; diff --git a/src/views/adminPanel.ejs b/src/views/adminPanel.ejs index 20534ab..9418fc2 100644 --- a/src/views/adminPanel.ejs +++ b/src/views/adminPanel.ejs @@ -24,6 +24,7 @@ along with this program. If not, see .--> <%- include('partial/navbar', {user}); %> <%- include('partial/adminPanel/channelList', {chanGuide}) %> <%- include('partial/adminPanel/userList', {user, userList, rankEnum}) %> + <%- include('partial/adminPanel/permList', {permList, rankEnum}) %>