Beispiel #1
0
        public async Task <RoleClaimView> ManageRoleClaims(string roleId)
        {
            var role = await _roleManager.FindByIdAsync(roleId);

            var existingRoleClaims = await _roleManager.GetClaimsAsync(role);

            var model = new RoleClaimView
            {
                RoleId = roleId
            };

            foreach (var claim in ClaimsRepository.AllClaims)
            {
                RoleClaim roleClaim = new RoleClaim
                {
                    ClaimType = claim.Type
                };

                if (existingRoleClaims.Any(c => c.Type == claim.Type))
                {
                    roleClaim.IsSelected = true;
                }

                model.Claims.Add(roleClaim);
            }

            return(model);
        }
Beispiel #2
0
        public async Task <IActionResult> ManageRoleClaims(RoleClaimView request)
        {
            try
            {
                var role = await _roleManager.FindByIdAsync(request.RoleId);

                if (role == null)
                {
                    ModelState.AddModelError("", "Role was not found");
                    return(View(request));
                }

                var claims = await _roleManager.GetClaimsAsync(role);

                //Remove all Claims from Role
                foreach (var claim in claims)
                {
                    var result = await _roleManager.RemoveClaimAsync(role, claim);
                }

                var selectedClaims = request.Claims.Where(c => c.IsSelected).Select(c => new Claim(c.ClaimType, c.ClaimType));

                //Add Checked Claims to Role
                foreach (var claim in selectedClaims)
                {
                    await _roleManager.AddClaimAsync(role, claim);
                }

                return(RedirectToAction("Edit", new { id = request.RoleId }));
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", "Unable to add claim to role");
                ModelState.AddModelError("", e.Message);

                return(View(request));
            }
        }