publi c class CanEditOnlyOtherAdminRolesAndClaimsHandler: AuthorizationHandler {private readonly UserManager _userManager; publi c CanEditOnlyOtherAdminRolesAndClaimsHandler (UserManager userManager) {_userManager = userManager; }
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ManageAdminRolesAndClaimsRequirement requirement)
{
var authFilterContext = context.Resource as AuthorizationFilterContext;
if (authFilterContext == null)
{
return Task.CompletedTask;
}
var loggedInAdminId = context.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value;
ApplicationUser adminIdBeingEdited = authFilterContext.HttpContext.Request.Query["userId"];
if (context.User.IsInRole("Admin") && context.User.HasClaim(claim => claim.Type == "Edit Role" && claim.Value == "true") &&
(adminIdBeingEdited.ToLower() != loggedInAdminId?.ToLower()))
{
context.Succeed(requirement);
}
return Task.CompletedTask;
}
}
}
344/5000 Привет Эти коды принадлежат моему проекту. Я хотел бы написать код, который, если пользователь попытается изменить Super Admin, не сможет это сделать. То есть я изначально хотел получить роль редактируемого пользователя, если пользователь, редактируемый в Super Admin, не позволит пользователю редактировать. По сути, я хочу, чтобы пользователь с правами администратора не имел доступа к роли супер-администратора.