public async Task <IActionResult> Put( [FromRoute] string email, [FromBody] LocalClaim claim) { if (email == null) { throw new ArgumentNullException(nameof(email)); } if (claim == null) { throw new ArgumentNullException(nameof(claim)); } var user = await this.UserManager.FindByEmailAsync(email); if (user == null) { return(this.NotFound()); } var claims = await this.UserManager.GetClaimsAsync(user) ?? new List <SecurityClaim>(); if (claims.Any(i => i.Type == claim.Type && i.Value == claim.Value)) { return(this.Ok()); } var newClaim = new SecurityClaim(claim.Type, claim.Value); var result = await this.UserManager.AddClaimAsync(user, newClaim); return(this.ConvertIdentityResultToResponse(result)); }
public async Task <IActionResult> Delete( [FromRoute] string email, [FromBody] LocalClaim claim) { if (email == null) { throw new ArgumentNullException(nameof(email)); } if (claim == null) { throw new ArgumentNullException(nameof(claim)); } var user = await this.UserManager.FindByEmailAsync(email); if (user == null) { return(this.NotFound()); } var claims = await this.UserManager.GetClaimsAsync(user) ?? new List <SecurityClaim>(); var existingClaim = claims.FirstOrDefault(i => i.Type == claim.Type && i.Value == claim.Value); if (existingClaim == null) { return(this.NotFound()); } var result = await this.UserManager.RemoveClaimAsync(user, existingClaim); return(this.ConvertIdentityResultToResponse(result)); }