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());
        }