/*Canopy - The next generation of stoner streaming software Copyright (C) 2024-2025 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 .*/ //Config const config = require('../../config.json'); //NPM Imports const validator = require('validator');//No express here, so regular validator it is! //local imports const channelModel = require('../schemas/channel/channelSchema'); const permissionModel = require('../schemas/permissionSchema'); const csrfUtils = require('../utils/csrfUtils'); const {exceptionHandler, errorHandler} = require('../utils/loggerUtils'); //root index functions module.exports.get = async function(req, res){ try{ const chanName = (req.url.slice(1).replace('/settings','')); const chanDB = await channelModel.findOne({name: chanName}); const reqRank = await chanDB.getChannelRank(req.session.user); await chanDB.populate("rankList.user"); //Take out the permissions doc id since we don't need it. delete chanDB.permissions._doc._id; if(chanDB == null){ 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}); }catch(err){ return exceptionHandler(res, err); } }