Esempio n. 1
0
        public async Task <IActionResult> SaveClaims(ClaimRoleModel model)
        {
            var claims = _claimProvider.GetClaims();
            var roles  = _roleManager.Roles;

            foreach (var r in roles)
            {
                var roleName   = r.Name.First().ToString().ToLower() + r.Name.Substring(1); // first char lowercase
                var roleClaims = await _roleManager.GetClaimsAsync(r);

                foreach (var c in claims)
                {
                    var allow = model.Allowed[c.ClaimValue][roleName];
                    if (allow)
                    {
                        if (roleClaims.FirstOrDefault(x => x.Value == c.ClaimValue) == null)
                        {
                            await _roleManager.AddClaimAsync(r, new System.Security.Claims.Claim(c.ClaimType, c.ClaimValue));
                        }
                    }
                    else
                    {
                        await _roleManager.RemoveClaimAsync(r, new System.Security.Claims.Claim(c.ClaimType, c.ClaimValue));
                    }
                }
            }
            foreach (var cr in  model.Allowed)
            {
            }
            return(NoContent());
        }
Esempio n. 2
0
        public async Task <IActionResult> GetClaims()
        {
            var model = new ClaimRoleModel();

            var claims = _claimProvider.GetClaims();
            var roles  = _roleManager.Roles;

            model.AvailableClaims = claims.ToList();

            foreach (var r in roles)
            {
                model.AvailableRoles.Add(new RoleModel
                {
                    Name = r.Name
                });
            }


            foreach (var r in roles)
            {
                var roleClaims = await _roleManager.GetClaimsAsync(r);

                foreach (var c in claims)
                {
                    var allowed = roleClaims.Any(rc => rc.Value == c.ClaimValue);
                    if (!model.Allowed.ContainsKey(c.ClaimValue))
                    {
                        model.Allowed[c.ClaimValue] = new Dictionary <string, bool>();
                    }
                    model.Allowed[c.ClaimValue][r.Name] = allowed;
                }
            }

            return(Ok(model));
        }