Ejemplo n.º 1
0
        public async Task <ActionResult <GameAction> > PostGameAction([FromBody] ModeratorAction moderatorAction)
        {
            _context.Actions.Add(moderatorAction);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetGameAction", new { id = moderatorAction.Id }, moderatorAction));
        }
Ejemplo n.º 2
0
        public static bool HasPermission(IPrincipal user, string subverse, ModeratorAction action, IEnumerable <Data.Models.SubverseModerator> modList = null)
        {
            if (user.IsInAnyRole(new[] { UserRole.GlobalAdmin, UserRole.Admin, UserRole.DelegateAdmin }))
            {
                return(true);
            }
            var  userName = user.Identity.Name;
            bool result   = false;

            if (!String.IsNullOrEmpty(userName) && !String.IsNullOrEmpty(subverse))
            {
                var r = GetModerators(subverse, modList);

                if (r != null && r.Any())
                {
                    result = r.Any(x =>
                                   x.UserName.ToLower() == userName.ToLower() &&
                                   HasPermission((ModeratorLevel)x.Power, action));
                }
                //if they don't have permissions check if global janitor and request is for janitor role
                if (!result)
                {
                    if (user.IsInAnyRole(new[] { UserRole.GlobalJanitor }))
                    {
                        result = HasPermission(ModeratorLevel.Janitor, action);
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
        public static bool HasPermission(string userName, string subverse, ModeratorAction action, IEnumerable <Data.Models.SubverseModerator> modList = null)
        {
            bool result = false;

            if (!String.IsNullOrEmpty(userName) && !String.IsNullOrEmpty(subverse))
            {
                var r = GetModerators(subverse, modList);

                if (r != null && r.Any())
                {
                    result = r.Any(x =>
                                   x.UserName.Equals(userName, StringComparison.OrdinalIgnoreCase) &&
                                   HasPermission((ModeratorLevel)x.Power, action));
                }
            }
            return(result);
        }