protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AccessMinLevelRequirement requirement) { if (context.User.HasClaim(c => c.Type == ClaimTypes.Role)) { AccessLevelUserRolesEnum userRole = (AccessLevelUserRolesEnum)Enum.Parse(typeof(AccessLevelUserRolesEnum), context.User.FindFirst(c => c.Type == ClaimTypes.Role).Value); if (userRole >= requirement.Role) { context.Succeed(requirement); } } return(Task.CompletedTask); }
public ActionResult <IEnumerable <MenuItemModel> > GetUsers() { AccessLevelUserRolesEnum role = User.HasClaim(c => c.Type == ClaimTypes.Role) ? (AccessLevelUserRolesEnum)Enum.Parse(typeof(AccessLevelUserRolesEnum), User.FindFirst(c => c.Type == ClaimTypes.Role).Value) : AccessLevelUserRolesEnum.Guest; switch (role) { case AccessLevelUserRolesEnum.Auth: return(new NestedMenuModel[] { my }); case AccessLevelUserRolesEnum.Verified: return(new NestedMenuModel[] { my }); case AccessLevelUserRolesEnum.Privileged: return(new NestedMenuModel[] { my }); case AccessLevelUserRolesEnum.Manager: return(new NestedMenuModel[] { users, my }); case AccessLevelUserRolesEnum.Admin: return(new NestedMenuModel[] { users, catalogues, my }); case AccessLevelUserRolesEnum.ROOT: return(new NestedMenuModel[] { users, catalogues, server, my }); case AccessLevelUserRolesEnum.Guest: return(new MenuItemModel[] { new MenuItemModel() { Title = "Вход", Href = "/signin/", Tooltip = "Авторизация/Регистрация" } }); default: return(new MenuItemModel[] { new MenuItemModel() { Title = "Ошибка", Href = "#", Tooltip = "Ошибка ассоциации роли с меню" } }); } }
public AccessMinLevelRequirement(AccessLevelUserRolesEnum role) { Role = role; }