public EditRuleCommandBase(int id) { Id = id; Key = new TypiconByRuleCanEditKey <T>(id); }
public VariableEditQuery(int id) { Id = id; Key = new TypiconByRuleCanEditKey <TypiconVariable>(id); }
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)); }