AuthorizationHandler Manager для идентификации - PullRequest
1 голос
/ 24 января 2020

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, не позволит пользователю редактировать. По сути, я хочу, чтобы пользователь с правами администратора не имел доступа к роли супер-администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...