Example #1
0
        public async Task <IActionResult> AddOrDeleteClaimsForAUser(AddOrDeleteClaimsForAUser model)
        {
            var user = await _userManager.FindByIdAsync(model.UserId);

            if (user == null)
            {
                return(RedirectToAction("Error", "Error"));
            }

            var claimsMap = _userManager.GetClaimsAsync(user).Result.Select(claim => claim.Type).ToHashSet();

            await _userManager.AddClaimsAsync(user, model.Claims
                                              .Where(claim => claim.Checked && !claimsMap.Contains(claim.ClaimType))
                                              .Select(claim => new Claim(claim.ClaimType, claim.ClaimType)));

            await _userManager.RemoveClaimsAsync(user, model.Claims
                                                 .Where(claim => !claim.Checked && claimsMap.Contains(claim.ClaimType))
                                                 .Select(claim => new Claim(claim.ClaimType, claim.ClaimType)));

            return(RedirectToAction("AddOrDeleteClaimsForAUser", new { model.UserId }));
        }
Example #2
0
        public async Task <IActionResult> AddOrDeleteClaimsForAUser(string userId)
        {
            var user = await _userManager.FindByIdAsync(userId);

            if (user == null)
            {
                return(RedirectToAction("Error", "Error"));
            }

            var existingClaims = await _userManager.GetClaimsAsync(user);

            var viewModel = new AddOrDeleteClaimsForAUser();

            foreach (var claim in ClaimStore.Claims)
            {
                viewModel.Claims.Add(new UserClaim
                {
                    ClaimType = claim.Type,
                    Checked   = existingClaims.Any(claim1 => claim.Type == claim1.Type)
                });
            }
            return(View(viewModel));
        }