예제 #1
0
        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));
        }
예제 #2
0
        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));
        }