public async Task <IActionResult> AddOrDeleteClaimsForAUser(AddOrDeleteClaimsForAUser model) { var user = await _userManager.FindByIdAsync(model.UserId); if (user == null) { return(RedirectToAction("Error", "Error")); } var claimsMap = _userManager.GetClaimsAsync(user).Result.Select(claim => claim.Type).ToHashSet(); await _userManager.AddClaimsAsync(user, model.Claims .Where(claim => claim.Checked && !claimsMap.Contains(claim.ClaimType)) .Select(claim => new Claim(claim.ClaimType, claim.ClaimType))); await _userManager.RemoveClaimsAsync(user, model.Claims .Where(claim => !claim.Checked && claimsMap.Contains(claim.ClaimType)) .Select(claim => new Claim(claim.ClaimType, claim.ClaimType))); return(RedirectToAction("AddOrDeleteClaimsForAUser", new { model.UserId })); }
public async Task <IActionResult> AddOrDeleteClaimsForAUser(string userId) { var user = await _userManager.FindByIdAsync(userId); if (user == null) { return(RedirectToAction("Error", "Error")); } var existingClaims = await _userManager.GetClaimsAsync(user); var viewModel = new AddOrDeleteClaimsForAUser(); foreach (var claim in ClaimStore.Claims) { viewModel.Claims.Add(new UserClaim { ClaimType = claim.Type, Checked = existingClaims.Any(claim1 => claim.Type == claim1.Type) }); } return(View(viewModel)); }