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