public async Task <IHttpActionResult> AssignClaimsToUser([FromUri] string id, [FromBody] List <ClaimBindingModel> claimsToAssign) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var appUser = await this.AppUserManager.FindByIdAsync(id); if (appUser == null) { return(NotFound()); } foreach (ClaimBindingModel claimModel in claimsToAssign) { var claimList = appUser.Claims.Where(c => c.ClaimType == claimModel.Type).ToList(); if (claimList.Count > 0) { foreach (var claim in claimList) { await this.AppUserManager.RemoveClaimAsync(id, ExtendedClaimProvider.CreateClaim(claim.ClaimType, claim.ClaimValue)); } } await this.AppUserManager.AddClaimAsync(id, ExtendedClaimProvider.CreateClaim(claimModel.Type, claimModel.Value)); HttpContext.Current.GetOwinContext().Authentication.SignOut(); } return(Ok()); }
public async Task <IHttpActionResult> RemoveClaimsFromUser([FromUri] string id, [FromBody] List <ClaimBindingModel> claimsToRemove) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var appUser = await this.AppUserManager.FindByIdAsync(id); if (appUser == null) { return(NotFound()); } foreach (ClaimBindingModel claimModel in claimsToRemove) { if (appUser.Claims.Any(c => c.ClaimType == claimModel.Type)) { await this.AppUserManager.RemoveClaimAsync(id, ExtendedClaimProvider.CreateClaim(claimModel.Type, claimModel.Value)); } } return(Ok()); }