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")); }
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)); }