public async Task <IActionResult> ManageUserClaims(UserClaimsVeiwModel model, string userID) { var user = await userManager.FindByIdAsync(model.UserId); if (user == null) { ViewBag.ErrorMessage = $"User with Id = {model.UserId} cannot be found"; return(View("NotFound")); } var claims = await userManager.GetClaimsAsync(user); var result = await userManager.RemoveClaimsAsync(user, claims); if (!result.Succeeded) { ModelState.AddModelError("", "Cannot remove user existing claims"); return(View(model)); } result = await userManager.AddClaimsAsync(user, model.Claims .Select(c => new Claim(c.ClaimType, c.IsSelected?"true":"false"))); if (!result.Succeeded) { ModelState.AddModelError("", "Cannot add selected claims to user"); return(View(model)); } return(RedirectToAction("EditUser", new { Id = model.UserId })); }
public async Task <IActionResult> ManageUserClaims(string userId) { var user = await userManager.FindByIdAsync(userId); if (user == null) { ViewBag.ErrorMessage = $"User with Id = {userId} cannot be found"; return(View("NotFound")); } var existingUserClaim = await userManager.GetClaimsAsync(user); var model = new UserClaimsVeiwModel { UserId = userId }; foreach (Claim claim in ClaimsStore.AllClaims) { UserClaim userClaim = new UserClaim { ClaimType = claim.Type }; if (existingUserClaim.Any(C => C.Type == claim.Type && C.Value == "true")) { userClaim.IsSelected = true; } model.Claims.Add(userClaim); } return(View(model)); }