public static bool HasPermission(ModeratorLevel level, ModeratorAction action) { bool result = false; var levelEvaluator = new Func <ModeratorLevel, IEnumerable <ModeratorLevel>, bool>((currentLevel, allowedLevels) => { bool allowed = false; if (allowedLevels != null && allowedLevels.Any()) { allowed = allowedLevels.Any(x => currentLevel == x); } return(allowed); }); switch (action) { case ModeratorAction.InviteMods: case ModeratorAction.RemoveMods: case ModeratorAction.ModifySettings: case ModeratorAction.AssignStickies: result = levelEvaluator(level, new ModeratorLevel[] { ModeratorLevel.Owner, ModeratorLevel.Moderator }); break; case ModeratorAction.DeleteComments: case ModeratorAction.DeletePosts: case ModeratorAction.Banning: case ModeratorAction.DistinguishContent: case ModeratorAction.AssignFlair: case ModeratorAction.ReadMail: case ModeratorAction.SendMail: case ModeratorAction.AccessReports: case ModeratorAction.MarkReports: result = levelEvaluator(level, new ModeratorLevel[] { ModeratorLevel.Owner, ModeratorLevel.Moderator, ModeratorLevel.Janitor }); break; case ModeratorAction.ModifyCSS: case ModeratorAction.ModifyFlair: result = levelEvaluator(level, new ModeratorLevel[] { ModeratorLevel.Owner, ModeratorLevel.Moderator, ModeratorLevel.Designer }); break; case ModeratorAction.DeleteMail: //mod mail should not be deleted default: result = false; break; } return(result); }
public static bool IsLevel(string userName, string subverse, ModeratorLevel level, IEnumerable <Data.Models.SubverseModerator> modList = null) { return(IsModerator(userName, subverse, new ModeratorLevel[] { level }, modList)); }