public async Task <Response <UserIdentityDto> > ManageUserClaimAsync(ManageUserClaimDto manageUserClaimDto) { var userById = await _userManager.GetUserByIdAsync(manageUserClaimDto.UserId); var userByName = await _userManager.GetUserByNameAsync(manageUserClaimDto.UserName); if (userById != userByName) { return(Response <UserIdentityDto> .Fail("Forbidden")); } var allClaims = await _userManager.GetClaimsAsync(userById); var claimExists = allClaims.Where(x => x.Type == manageUserClaimDto.Type && x.Value == manageUserClaimDto.Value).ToList(); switch (manageUserClaimDto.Checked) { case true when claimExists.Count == 0: { await _userManager.AddClaimAsync(userById, new Claim(manageUserClaimDto.Type, manageUserClaimDto.Value)); break; } case false when claimExists.Count > 0: { await _userManager.RemoveClaimsAsync(userById, claimExists); break; } } return(Response <UserIdentityDto> .Success(new UserIdentityDto { Id = manageUserClaimDto.UserId }, "Succeeded"));; }
public async Task <IActionResult> ManageUserClaims(ManageUserClaimDto manageUserClaimDto) { if (!ModelState.IsValid) { return(Json(Response <UserIdentityDto> .Fail("Failed"))); } var rs = await _userService.ManageUserClaimAsync(manageUserClaimDto); return(Json(rs)); }