コード例 #1
0
        public async Task <IActionResult> OnPostUpdate(string roleId, string roleName)
        {
            GetRole = await _roleManager.FindByIdAsync(roleId);

            GetRole.Name = roleName;

            Claims = await _roleManager.GetClaimsAsync(GetRole) as List <Claim>;

            foreach (var roleClaim in RoleClaims)
            {
                var testselect = roleClaim.Selected;
                var testclami  = roleClaim.claim;
                if (roleClaim.Selected && !Claims.Exists(x => x.Type == roleClaim.claim))
                {
                    await _roleManager.AddClaimAsync(GetRole, new Claim(roleClaim.claim, roleClaim.claim));
                }
                else if (!roleClaim.Selected && Claims.Exists(x => x.Type == roleClaim.claim))
                {
                    await _roleManager.RemoveClaimAsync(GetRole, Claims.Find(x => x.Type.Contains(roleClaim.claim)));
                }
            }
            foreach (var userClaim in UserClaims)
            {
                var testselect = userClaim.Selected;
                var testclami  = userClaim.claim;
                if (userClaim.Selected && !Claims.Exists(x => x.Type == userClaim.claim))
                {
                    await _roleManager.AddClaimAsync(GetRole, new Claim(userClaim.claim, userClaim.claim));
                }
                else if (!userClaim.Selected && Claims.Exists(x => x.Type == userClaim.claim))
                {
                    await _roleManager.RemoveClaimAsync(GetRole, Claims.Find(x => x.Type.Contains(userClaim.claim)));
                }
            }
            foreach (var versionClaim in VersionClaims)
            {
                var testselect = versionClaim.Selected;
                var testclami  = versionClaim.claim;
                if (versionClaim.Selected && !Claims.Exists(x => x.Type == versionClaim.claim))
                {
                    await _roleManager.AddClaimAsync(GetRole, new Claim(versionClaim.claim, versionClaim.claim));
                }
                else if (!versionClaim.Selected && Claims.Exists(x => x.Type == versionClaim.claim))
                {
                    await _roleManager.RemoveClaimAsync(GetRole, Claims.Find(x => x.Type.Contains(versionClaim.claim)));
                }
            }

            await _roleManager.UpdateAsync(GetRole);

            return(RedirectToPage("Index"));
        }
コード例 #2
0
        //public void VersionClaimTypes()
        //{
        //    AllVersionClaims = new List<string>
        //    {
        //        "CanViewVersions",
        //        "CanAddVersions",
        //        "CanEditVersions",
        //        "CanDeleteVersions"
        //    };
        //}

        public async Task <IActionResult> OnGetAsync()
        {
            List <RoleClaim> roleClaims = new List <RoleClaim>();
            List <RoleClaim> userClaims = new List <RoleClaim>();
            //List<RoleClaim> versionClaims = new List<RoleClaim>();
            var RoleToUpdate = TempData["UpdateRole"].ToString();

            GetRole = await _roleManager.FindByIdAsync(RoleToUpdate);

            Claims = await _roleManager.GetClaimsAsync(GetRole) as List <Claim>;

            RoleClaimTypes();
            UserClaimTypes();
            //VersionClaimTypes();

            foreach (var claim in AllRoleClaims)
            {
                if (claim.Contains("Roles"))
                {
                    /////
                    if (Claims.Exists(x => x.Type == claim))
                    {
                        RoleClaim newClaim = new RoleClaim
                        {
                            claim    = claim,
                            Selected = true
                        };
                        roleClaims.Add(newClaim);
                    }
                    else
                    {
                        RoleClaim newClaim = new RoleClaim
                        {
                            claim    = claim,
                            Selected = false
                        };
                        roleClaims.Add(newClaim);
                    }
                    ////
                }
            }
            foreach (var claim in AllUserClaims)
            {
                if (claim.Contains("Users"))
                {
                    /////
                    if (Claims.Exists(x => x.Type == claim))
                    {
                        RoleClaim newClaim = new RoleClaim
                        {
                            claim    = claim,
                            Selected = true
                        };
                        userClaims.Add(newClaim);
                    }
                    else
                    {
                        RoleClaim newClaim = new RoleClaim
                        {
                            claim    = claim,
                            Selected = false
                        };
                        userClaims.Add(newClaim);
                    }
                    ////
                }
            }

            //foreach (var claim in AllVersionClaims)
            //{
            //    if (claim.Contains("Version"))
            //    {
            //        /////
            //        if (Claims.Exists(x => x.Type == claim))
            //        {
            //            RoleClaim newClaim = new RoleClaim
            //            {
            //                claim = claim,
            //                Selected = true
            //            };
            //            versionClaims.Add(newClaim);
            //        }
            //        else
            //        {
            //            RoleClaim newClaim = new RoleClaim
            //            {
            //                claim = claim,
            //                Selected = false
            //            };
            //            versionClaims.Add(newClaim);
            //        }
            //        ////
            //    }
            //}

            RoleClaims = roleClaims;
            UserClaims = userClaims;
            //VersionClaims = versionClaims;

            return(Page());
        }