public async Task <IHttpActionResult> AddClaimToUser(UserClaimBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var userId = model.UserId; var claimType = model.Type; var claimValue = model.Value; ApplicationUser user = UserManager.FindById(userId); if (user == null) { return(BadRequest("The user id does not exist: \"" + userId + "\"")); } foreach (var claim in UserManager.GetClaims(user.Id).Where(c => c.Type == claimType)) { UserManager.RemoveClaim(user.Id, claim); } var result = await UserManager.AddClaimAsync(user.Id, new Claim(claimType, claimValue)); if (!result.Succeeded) { return(GetErrorResult(result)); } return(Ok()); }
public async Task <IHttpActionResult> UserAction(UserClaimBindingModel model) { if (model.UserId == null) { model.UserId = User.Identity.GetUserId(); Validate(model); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } IdentityResult result; var UserClaims = await UserManager.GetClaimsAsync(model.UserId); Claim claim = UserClaims.Where(c => c.Type == model.Type).FirstOrDefault(); if (claim != null) { result = await UserManager.RemoveClaimAsync(model.UserId, claim); if (!result.Succeeded) { return(GetErrorResult(result)); } } if (model.Value != "") { result = await UserManager.AddClaimAsync(model.UserId, new Claim(model.Type, model.Value)); if (!result.Succeeded) { return(GetErrorResult(result)); } } return(Ok()); }