public async Task <IActionResult> ManageUserClaims(UserClaimsModel 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("", "Cannot remove user existing claims");
                return(View(model));
            }

            result = await userManager.AddClaimsAsync(user, model.Claims.Select(c => new Claim(c.ClaimType, c.IsSelected ? "true" : "false")));

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Cannot add selected claim to user");
                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} cannot be found";
                return(View("NotFound"));
            }

            var claims = await userManager.GetClaimsAsync(user);

            var model = new UserClaimsModel
            {
                UserId = id
            };

            foreach (Claim claim in ClaimsClass.AllClaims)
            {
                UserClaim userClaim = new UserClaim
                {
                    ClaimType = claim.Type
                };
                if (claims.Any(c => c.Type == claim.Type && c.Value == "true"))
                {
                    userClaim.IsSelected = true;
                }

                model.Claims.Add(userClaim);
            }
            ViewBag.UserId = model.UserId;
            return(View(model));
        }
Пример #3
0
        public async Task <IActionResult> ManageUserClaims(UserClaimsModel model)
        {
            var user = await _userManager.FindByIdAsync(model.UserId);

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

            // Get all the user existing claims and delete them
            var claims = await _userManager.GetClaimsAsync(user);

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

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Cannot remove user existing claims");
                return(View(model));
            }

            // Add all the claims that are selected on the UI
            result = await _userManager.AddClaimsAsync(user,
                                                       model.Cliams.Where(c => c.IsSelected).Select(c => new Claim(c.ClaimType, c.ClaimType)));

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Cannot add selected claims to user");
                return(View(model));
            }

            return(RedirectToAction("EditUser", new { Id = model.UserId }));
        }
Пример #4
0
        private async Task <ContainerModel> getUsersAndClaims()
        {
            List <string>         usernames = new List <string>();
            List <List <string> > claims    = new List <List <string> >();
            var listOfUsers = context.Users.ToList();

            foreach (var user in listOfUsers)
            {
                List <string> userClaims = new List <string>();
                foreach (var claim in await userManager.GetClaimsAsync(user))
                {
                    userClaims.Add(claim.ToString());
                }
                usernames.Add(user.UserName);
                claims.Add(userClaims);
            }

            UserClaimsModel ucm = new UserClaimsModel {
                username   = usernames,
                claimsList = claims
            };

            model.Ucm = ucm;

            return(model);
        }
Пример #5
0
        public ActionResult UserClaims()
        {
            var principal = IdentityHelper.GetCurrentClaimsPrincipal();

            // temporary code to show user claims, while there is a sitecore user object as
            UserClaimsModel ucm = new UserClaimsModel();

            if (principal != null)
            {
                ucm.Claims = ((ClaimsPrincipal)principal).Claims;
            }
            ViewBag.Title = "ADFS Claims page";
            return(View(ucm));
        }
Пример #6
0
        public ActionResult Index()
        {
            // Get ID ticket from .ASP.Net cookie. This ticket doesnt contain an identity,
            // but a reference to the identity in the Session Store
            var principal = IdentityHelper.GetCurrentClaimsPrincipal();

            var ctx = Tracker.Current.Context;
            // Login the sitecore user with the claims identity that was provided by identity ticket
            LoginHelper loginHelper = new LoginHelper();

            loginHelper.Login(principal);

            ctx = Tracker.Current.Context;

            // temporary code to show user claims, while there is a sitecore user object as
            UserClaimsModel ucm = new UserClaimsModel();

            ucm.Claims = ((ClaimsPrincipal)principal).Claims;
            return(View(ucm));
        }
Пример #7
0
        public async Task <IActionResult> ManageUserClaims(string userId)
        {
            //Specify user by Id in the AspNetUsers table
            var user = await userManager.FindByIdAsync(userId);

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

            // UserManager service GetClaimsAsync method gets all the current claims of the user
            var existingUserClaims = await userManager.GetClaimsAsync(user);

            var model = new UserClaimsModel
            {
                UserId = userId
            };

            // Loop through each claim we have in our application
            foreach (Claim claim in ClaimsStore.AllClaims)
            {
                UsersClaims userClaim = new UsersClaims
                {
                    ClaimType = claim.Type
                };

                // If the user has the claim, set IsSelected property to true, so the checkbox
                // next to the claim is checked on the UI
                if (existingUserClaims.Any(c => c.Type == claim.Type))
                {
                    userClaim.IsSelected = true;
                }

                model.Claims.Add(userClaim);
            }

            return(View(model));
        }