Пример #1
0
        public async Task <Response <RoleIdentityDto> > ManageRoleClaimAsync(ManageRoleClaimDto manageRoleClaimDto)
        {
            var roleById = await _roleManager.FindByIdAsync(manageRoleClaimDto.RoleId);

            var roleByName = await _roleManager.GetRoleAsync(manageRoleClaimDto.RoleName);

            if (roleById != roleByName)
            {
                return(Response <RoleIdentityDto> .Fail("Forbidden"));
            }
            var allClaims = await _roleManager.GetClaimsAsync(roleById);

            var claimExists =
                allClaims.Where(x => x.Type == manageRoleClaimDto.Type && x.Value == manageRoleClaimDto.Value).ToList();

            switch (manageRoleClaimDto.Checked)
            {
            case true when claimExists.Count == 0:
                await _roleManager.AddClaimAsync(roleById, new Claim(manageRoleClaimDto.Type, manageRoleClaimDto.Value));

                break;

            case false when claimExists.Count > 0:
            {
                foreach (var claim in claimExists)
                {
                    await _roleManager.RemoveClaimAsync(roleById, claim);
                }
                break;
            }
            }
            return(Response <RoleIdentityDto> .Success(new RoleIdentityDto { RoleId = manageRoleClaimDto.RoleId },
                                                       "Succeeded"));
        }
Пример #2
0
        public async Task <IActionResult> ManageRoleClaims(ManageRoleClaimDto manageRoleClaimDto)
        {
            if (!ModelState.IsValid)
            {
                return(Json(Response <RoleIdentityDto> .Fail("Failed")));
            }
            var rs = await _roleService.ManageRoleClaimAsync(manageRoleClaimDto);

            return(Json(rs));
        }