diff --git a/src/schemas/channel/channelSchema.js b/src/schemas/channel/channelSchema.js index 8642aae..32eb67a 100644 --- a/src/schemas/channel/channelSchema.js +++ b/src/schemas/channel/channelSchema.js @@ -470,13 +470,27 @@ channelSchema.methods.permCheck = async function (user, perm){ channelSchema.methods.checkBanByUserDoc = async function(userDB){ var foundBan = null; - this.banList.forEach((ban) => { - if(ban.user != null){ - if(ban.user.toString() == userDB._id.toString()){ - foundBan = ban; + //this needs to be a for loop for async + //this.banList.forEach((ban) => { + for(banIndex in this.banList){ + + if(this.banList[banIndex].user != null){ + if(this.banList[banIndex].user.toString() == userDB._id.toString()){ + foundBan = this.banList[banIndex]; + } + + //If this bans alts are banned + if(this.banList[banIndex].banAlts){ + //Populate the user of the current ban being checked + await this.populate(`banList.${banIndex}.user`); + + //If this is an alt of the banned user + if(await this.banList[banIndex].user.altCheck(userDB)){ + foundBan = this.banList[banIndex]; + } } } - }); + } return foundBan; } diff --git a/src/schemas/user/userSchema.js b/src/schemas/user/userSchema.js index e6517f0..ab84e66 100644 --- a/src/schemas/user/userSchema.js +++ b/src/schemas/user/userSchema.js @@ -633,6 +633,21 @@ userSchema.methods.changePassword = async function(passChange){ } +userSchema.methods.altCheck = async function(userDB){ + //Found alt flag + let foundAlt = false; + + for(alt in this.alts){ + //If we found a match + if(this.alts[alt]._id.toString() == userDB._id.toString()){ + foundAlt = true; + } + } + + //return the results + return foundAlt; +} + userSchema.methods.nuke = async function(pass){ //Check we have a confirmation password if(pass == "" || pass == null){