public IActionResult EditUserClaims(string userId) { var user = _userManager.FindByIdAsync(userId).Result; if (user == null) { return(NotFound()); } var claimsPrincipal = _signInManager.CreateUserPrincipalAsync(user).Result; var listOfClaims = new List <HotelAvailableClaims>(); foreach (var ctype in HotelClaims.GetUserAvailableClaims()) { var claim = claimsPrincipal.FindFirst(c => c.Type == ctype); if (claim != null) { listOfClaims.Add(new HotelAvailableClaims() { ClaimType = claim.Type, HasClaim = claim.Value == HotelClaims.True }); } } HotelClaimsViewModel userClaims = new HotelClaimsViewModel() { UserId = userId, UserName = user.UserName, UserOwnedClaims = listOfClaims }; return(View(userClaims)); }
public async Task <IActionResult> EditUserClaims(HotelClaimsViewModel userClaims) { var user = _userManager.FindByIdAsync(userClaims.UserId).Result; var cp = _signInManager.CreateUserPrincipalAsync(user).Result; if (userClaims.UserOwnedClaims != null) //In case someone tries to edit a user with no editable claims, UserOwnedClaims becomes null { foreach (var e in userClaims.UserOwnedClaims) { var oldClaim = cp.FindFirst(c => c.Type == e.ClaimType); if (oldClaim != null) { var newClaim = new Claim(e.ClaimType, e.HasClaim ? HotelClaims.True : HotelClaims.False); await _userManager.ReplaceClaimAsync(user, oldClaim, newClaim); } } } return(RedirectToAction(nameof(ManageUsers))); }