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()); }
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)); }