Fixed bug in perm check middleware caused by last refactor

This commit is contained in:
rainbow napkin 2024-12-15 21:41:59 -05:00
parent 5ad1c99ead
commit 805387b3da
19 changed files with 30 additions and 26 deletions

View file

@ -16,7 +16,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//Local Imports //Local Imports
const channelModel = require('../../schemas/channel/channelSchema'); const channelModel = require('../../schemas/channel/channelSchema');
const userModel = require('../../schemas/userSchema'); const {userModel} = require('../../schemas/userSchema');
const loggerUtils = require('../../utils/loggerUtils'); const loggerUtils = require('../../utils/loggerUtils');
const activeChannel = require('./activeChannel'); const activeChannel = require('./activeChannel');
const chatHandler = require('./chatHandler'); const chatHandler = require('./chatHandler');

View file

@ -17,7 +17,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//local imports //local imports
const commandPreprocessor = require('./commandPreprocessor'); const commandPreprocessor = require('./commandPreprocessor');
const loggerUtils = require('../../utils/loggerUtils'); const loggerUtils = require('../../utils/loggerUtils');
const userModel = require('../../schemas/userSchema'); const {userModel} = require('../../schemas/userSchema');
module.exports = class{ module.exports = class{
constructor(server){ constructor(server){

View file

@ -16,7 +16,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//Local Imports //Local Imports
const tokeCommandModel = require('../../schemas/tokebot/tokeCommandSchema'); const tokeCommandModel = require('../../schemas/tokebot/tokeCommandSchema');
const userModel = require('../../schemas/userSchema'); const {userModel} = require('../../schemas/userSchema');
const statModel = require('../../schemas/statSchema'); const statModel = require('../../schemas/statSchema');
const statSchema = require('../../schemas/statSchema'); const statSchema = require('../../schemas/statSchema');

View file

@ -16,7 +16,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//Config //Config
const config = require('../../config.json'); const config = require('../../config.json');
const userModel = require('../schemas/userSchema'); const {userModel} = require('../schemas/userSchema');
const permissionModel = require('../schemas/permissionSchema'); const permissionModel = require('../schemas/permissionSchema');
const channelModel = require('../schemas/channel/channelSchema'); const channelModel = require('../schemas/channel/channelSchema');
const {exceptionHandler, errorHandler} = require("../utils/loggerUtils"); const {exceptionHandler, errorHandler} = require("../utils/loggerUtils");

View file

@ -18,7 +18,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
const {validationResult, matchedData} = require('express-validator'); const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
const accountUtils = require('../../../utils/sessionUtils'); const accountUtils = require('../../../utils/sessionUtils');
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');

View file

@ -18,7 +18,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
const {validationResult, matchedData} = require('express-validator'); const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
const userBanModel = require('../../../schemas/userBanSchema'); const userBanModel = require('../../../schemas/userBanSchema');
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');

View file

@ -18,7 +18,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
const {validationResult, matchedData} = require('express-validator'); const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
const accountUtils = require('../../../utils/sessionUtils'); const accountUtils = require('../../../utils/sessionUtils');
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');

View file

@ -20,7 +20,7 @@ const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const banModel = require('../../../schemas/userBanSchema'); const banModel = require('../../../schemas/userBanSchema');
const permissionModel = require('../../../schemas/permissionSchema'); const permissionModel = require('../../../schemas/permissionSchema');
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');
module.exports.get = async function(req, res){ module.exports.get = async function(req, res){

View file

@ -20,7 +20,7 @@ const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');
const permissionModel = require('../../../schemas/permissionSchema'); const permissionModel = require('../../../schemas/permissionSchema');
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
//api change rank functions //api change rank functions
module.exports.post = async function(req, res){ module.exports.post = async function(req, res){

View file

@ -16,7 +16,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//local imports //local imports
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
//api list account functions //api list account functions
module.exports.get = async function(req, res){ module.exports.get = async function(req, res){

View file

@ -19,7 +19,7 @@ const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
const channelModel = require('../../../schemas/channel/channelSchema'); const channelModel = require('../../../schemas/channel/channelSchema');
const permissionModel = require('../../../schemas/permissionSchema') const permissionModel = require('../../../schemas/permissionSchema')

View file

@ -20,7 +20,7 @@ const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');
const permissionModel = require('../../../schemas/permissionSchema'); const permissionModel = require('../../../schemas/permissionSchema');
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
const channelModel = require('../../../schemas/channel/channelSchema'); const channelModel = require('../../../schemas/channel/channelSchema');
//api channel rank functions //api channel rank functions

View file

@ -19,7 +19,7 @@ const {validationResult, matchedData} = require('express-validator');
//local imports //local imports
const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../../../utils/loggerUtils');
const userModel = require('../../../schemas/userSchema'); const {userModel} = require('../../../schemas/userSchema');
const channelModel = require('../../../schemas/channel/channelSchema'); const channelModel = require('../../../schemas/channel/channelSchema');
//api account functions //api account functions

View file

@ -15,7 +15,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//Local Imports //Local Imports
const userModel = require('../schemas/userSchema'); const {userModel} = require('../schemas/userSchema');
const {exceptionHandler, errorHandler} = require('../utils/loggerUtils'); const {exceptionHandler, errorHandler} = require('../utils/loggerUtils');
//Config //Config

View file

@ -21,7 +21,7 @@ const {validationResult, matchedData} = require('express-validator');
//Local Imports //Local Imports
const server = require('../../server'); const server = require('../../server');
const statModel = require('../statSchema'); const statModel = require('../statSchema');
const userModel = require('../userSchema'); const {userModel} = require('../userSchema');
const permissionModel = require('../permissionSchema'); const permissionModel = require('../permissionSchema');
const channelPermissionSchema = require('./channelPermissionSchema'); const channelPermissionSchema = require('./channelPermissionSchema');
const channelBanSchema = require('./channelBanSchema'); const channelBanSchema = require('./channelBanSchema');

View file

@ -119,8 +119,11 @@ permissionSchema.statics.rankToNum = function(rank){
} }
permissionSchema.statics.permCheck = async function(user, perm){ permissionSchema.statics.permCheck = async function(user, perm){
//Check if the user is null
if(user != null){ if(user != null){
const userDB = await userModel.findOne({user: user.user}); //This specific call is why we export the userModel the way we do
//Someone will yell at me for circular dependencies but the fucking interpreter isn't :P
const userDB = await userModel.userModel.findOne({user: user.user});
return await this.permCheckByUserDoc(userDB, perm); return await this.permCheckByUserDoc(userDB, perm);
}else{ }else{
return await this.permCheckByUserDoc(null, perm); return await this.permCheckByUserDoc(null, perm);
@ -154,13 +157,14 @@ permissionSchema.statics.permCheckByUserDoc = async function(user, perm){
//Middleware for rank checks //Middleware for rank checks
permissionSchema.statics.reqPermCheck = function(perm){ permissionSchema.statics.reqPermCheck = function(perm){
return async (req, res, next)=>{ return (req, res, next)=>{
permissionSchema.statics.permCheck(req.session.user, perm).then((access) => {
if(await permissionSchema.statics.permCheck(req.session.user, perm)){ if(access){
next(); next();
}else{ }else{
return errorHandler(res, "You do not have a high enough rank to access this resource.", 'Unauthorized', 401); return errorHandler(res, "You do not have a high enough rank to access this resource.", 'Unauthorized', 401);
} }
});
} }
} }

View file

@ -18,7 +18,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
const {mongoose} = require('mongoose'); const {mongoose} = require('mongoose');
//Local Imports //Local Imports
const userModel = require('./userSchema'); const {userModel} = require('./userSchema');
const userBanSchema = new mongoose.Schema({ const userBanSchema = new mongoose.Schema({
user: { user: {

View file

@ -402,4 +402,4 @@ userSchema.methods.nuke = async function(pass){
} }
} }
module.exports = mongoose.model("user", userSchema); module.exports.userModel = mongoose.model("user", userSchema);

View file

@ -15,7 +15,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.*/ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
//local imports //local imports
const userModel = require('../schemas/userSchema'); const {userModel} = require('../schemas/userSchema');
const userBanModel = require('../schemas/userBanSchema') const userBanModel = require('../schemas/userBanSchema')
//this module is good for keeping wrappers for userModel and other shit in that does more session handling than database access/modification. //this module is good for keeping wrappers for userModel and other shit in that does more session handling than database access/modification.