Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }