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

            if (user == null)
            {
                ViewBag.ErrorMessage = ($"User with id: {model.UserId} cannot be found");
                return(View("NotFound"));
            }

            var claims = await _userManager.GetClaimsAsync(user);

            var result = await _userManager.RemoveClaimsAsync(user, claims);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Claims cannot be removed from this user");
                return(View(model));
            }

            var claimsSelected = model.Claims.Select(c => new Claim(c.ClaimType, c.IsSelected ? "true" : "false"));

            result = await _userManager.AddClaimsAsync(user, claimsSelected);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "The selected claims cannot be added to this user");
            }

            return(RedirectToAction("EditUser", new{ id = model.UserId }));
        }
Beispiel #2
0
        public async Task <IActionResult> EditUserClaims(string userId)

        {
            var user = await _userManager.FindByIdAsync(userId);

            if (user == null)
            {
                ViewBag.ErrorMessage = ($"User with id: {userId} cannot be found");
                return(View("NotFound"));
            }

            var model = new EditUserClaimsViewModel {
                UserId = userId
            };
            var existingUserClaims = await _userManager.GetClaimsAsync(user);

            foreach (Claim claim  in ClaimStore.AllClaims)
            {
                UserClaim userClaim = new UserClaim
                {
                    ClaimType = claim.Type
                };
                if (existingUserClaims.Any(c => c.Type == claim.Type && c.Value == "true"))
                {
                    userClaim.IsSelected = true;
                }
                model.Claims.Add(userClaim);
            }

            return(View(model));
        }
        public async Task <IActionResult> ManageUserClaims(EditUserClaimsViewModel model)
        {
            var user = await _userManager.FindByIdAsync(model.UserId);

            if (user == null)
            {
                ViewBag.ErrorMessage = $"user with Id = {model.UserId} not fount";
                return(View("Error/NotFound"));
            }
            var claims = await _userManager.GetClaimsAsync(user);

            var result = await _userManager.RemoveClaimsAsync(user, claims);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Cannot remove roles");
                return(View(model));
            }
            result = await _userManager.AddClaimsAsync(user, model.Claims.Where(x => x.IsSelected).Select(c => new Claim(c.ClaimType, c.ClaimType)));

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Cannot add roles");
                return(View(model));
            }
            return(RedirectToAction("EditUser", new { Id = model.UserId }));
        }
        public async Task <IActionResult> ManageUserClaims(string Id)
        {
            var user = await _userManager.FindByIdAsync(Id);

            if (user == null)
            {
                ViewBag.ErrorMessage = $"user with Id = {Id} not fount";
                return(View("Error/NotFound"));
            }
            var existingUserClaims = await _userManager.GetClaimsAsync(user);

            var model = new EditUserClaimsViewModel
            {
                UserId = Id
            };

            foreach (Claim claim in ClaimStore.AllClaims)
            {
                UserClaims userClaims = new UserClaims
                {
                    ClaimType = claim.Type
                };
                if (existingUserClaims.Any(c => c.Type == claim.Type))
                {
                    userClaims.IsSelected = true;
                }
                model.Claims.Add(userClaims);
            }


            return(View(model));
        }
        public async Task <IActionResult> EditUserClaims(EditUserClaimsViewModel model)
        {
            ApplicationUser user = await userManager.FindByIdAsync(model.UserId);

            if (user == null)
            {
                return(UserNotFoundView(model.UserId));
            }

            IList <Claim> userCurrentClaims = await userManager.GetClaimsAsync(user);

            IdentityResult removeResult = await userManager.RemoveClaimsAsync(user, userCurrentClaims);

            if (!removeResult.Succeeded)
            {
                ModelState.AddModelError(string.Empty, "Can not remove existing user claims.");
                return(View(model));
            }

            IEnumerable <Claim> claimsToAdd = model.Claims.Where(c => c.IsSelected).Select(c => new Claim(c.Type, c.Value));
            IdentityResult      addResult   = await userManager.AddClaimsAsync(user, claimsToAdd);

            if (!addResult.Succeeded)
            {
                ModelState.AddModelError(string.Empty, "Can not add selected claims to the user.");
                return(View(model));
            }

            return(RedirectToAction("EditUser", new { Id = model.UserId }));
        }
        public async Task <IActionResult> EditUserClaims(string id)
        {
            ApplicationUser user = await userManager.FindByIdAsync(id);

            if (user == null)
            {
                return(UserNotFoundView(id));
            }

            var model = new EditUserClaimsViewModel()
            {
                UserId = user.Id
            };

            IList <Claim> userCurrentClaims = await userManager.GetClaimsAsync(user);

            foreach (Claim claim in Claims.All)
            {
                var userClaim = new UserClaim()
                {
                    Type       = claim.Type,
                    Value      = claim.Value,
                    IsSelected = userCurrentClaims.Any(c => c.Value == claim.Value)
                };

                model.Claims.Add(userClaim);
            }

            return(View(model));
        }