public EditRuleCommandBase(int id)
 {
     Id  = id;
     Key = new TypiconByRuleCanEditKey <T>(id);
 }
Example #2
0
 public VariableEditQuery(int id)
 {
     Id  = id;
     Key = new TypiconByRuleCanEditKey <TypiconVariable>(id);
 }
Example #3
0
 public TypiconByRuleCommandBase(int ruleId)
 {
     RuleId = ruleId;
     Key    = new TypiconByRuleCanEditKey <T>(ruleId);
 }
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, IAuthorizationRequirement requirement, TypiconByRuleCanEditKey <T> resource)
        {
            if (context.User == null || resource == null)
            {
                return(Task.FromResult(0));
            }

            if (context.User.IsInRole(RoleConstants.AdministratorsRole))
            {
                // Administrators can do anything.
                context.Succeed(requirement);
            }
            else
            {
                //находим OutputDay
                var entity = DbContext.Set <T>().FirstOrDefault(c => c.Id == resource.Id);

                if (entity == null ||
                    entity.TypiconVersion == null ||
                    entity.TypiconVersion.Typicon == null)
                {
                    //Не нашли объект
                    context.Fail();
                }
                else
                {
                    var id = UserManager.GetUserId(context.User);

                    //Только Редакторы могут редактировать
                    if (entity.TypiconVersion.Typicon.OwnerId.ToString() == id ||
                        entity.TypiconVersion.Typicon.EditableUserTypicons.Any(c => c.UserId.ToString() == id))
                    {
                        context.Succeed(requirement);
                    }
                }
            }

            return(Task.FromResult(0));
        }