示例#1
0
        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);
        }
示例#2
0
 public static bool IsLevel(string userName, string subverse, ModeratorLevel level, IEnumerable <Data.Models.SubverseModerator> modList = null)
 {
     return(IsModerator(userName, subverse, new ModeratorLevel[] { level }, modList));
 }