public async Task <ActionResult> EditRole(EditRoleViewModel model) { AppRole appRole = await RoleManager.FindByIdAsync(model.Role.Id); if (appRole == null) { ViewBag.Error = $"Error occurred while looking for role with ID = {model.Role.Id}"; return(View("Error")); } else { appRole.Name = model.Role.Name; IdentityResult result = await RoleManager.UpdateAsync(appRole); if (result.Succeeded) { return(RedirectToAction("List")); } foreach (var x in result.Errors) { ModelState.AddModelError("", x); } return(View(model)); } }
public async Task <IdentityResult> UpdateAsync(ApplicationRole role) { return(await _roleManager.UpdateAsync(role)); }
public async Task <IActionResult> RolePermissions(RolePermission model) { if (!ModelState.IsValid) { return(View(model)); } var role = await _roleManager.Roles .Include(x => x.Claims) .SingleOrDefaultAsync(x => x.Id == model.RoleId); if (role == null) { return(NotFound()); } var selectedPermissions = model.Keys.ToList(); var roleClaims = role.Claims .Where(x => x.ClaimType == ConstantPolicies.DynamicPermission) .Select(x => x.ClaimValue) .ToList(); // add new permissions var newPermissions = selectedPermissions.Except(roleClaims).ToList(); foreach (var permission in newPermissions) { role.Claims.Add(new RoleClaim { ClaimType = ConstantPolicies.DynamicPermission, ClaimValue = permission, GivenOn = DateTime.Now }); } // remove deleted permissions var removedPermissions = roleClaims.Except(selectedPermissions).ToList(); foreach (var permission in removedPermissions) { var roleClaim = role.Claims .SingleOrDefault(x => x.ClaimType == ConstantPolicies.DynamicPermission && x.ClaimValue == permission); if (roleClaim != null) { role.Claims.Remove(roleClaim); } } var result = await _roleManager.UpdateAsync(role); if (result.Succeeded) { var users = await _userManager.GetUsersInRoleAsync(role.Name); foreach (var user in users) { await _userManager.UpdateSecurityStampAsync(user); await _signInManager.RefreshSignInAsync(user); } return(RedirectToRoute("GetRolePermissions", new { roleName = role.Name })); } AddErrors(result); return(View(model)); }
public async Task <bool> ChangeRolePermissions(EditRolePermissionsDto model) { var role = await _roleManger.Roles .Include(x => x.Claims) .SingleOrDefaultAsync(x => x.Id == model.RoleId); if (role == null) { return(false); } var selectedPermissions = model.Permissions; var roleClaims = role.Claims .Where(x => x.ClaimType == ConstantPolicies.DynamicPermission) .Select(x => x.ClaimValue) .ToList(); // add new permissions var newPermissions = selectedPermissions.Except(roleClaims).ToList(); foreach (var permission in newPermissions) { role.Claims.Add(new RoleClaim { ClaimType = ConstantPolicies.DynamicPermission, ClaimValue = permission, CreatedClaim = DateTime.Now, RoleId = role.Id }); } // remove deleted permissions var removedPermissions = roleClaims.Except(selectedPermissions).ToList(); foreach (var permission in removedPermissions) { var roleClaim = role.Claims .SingleOrDefault(x => x.ClaimType == ConstantPolicies.DynamicPermission && x.ClaimValue == permission); if (roleClaim != null) { _db.RemoveRange(roleClaim); } } await _db.SaveChangesAsync(); var result = await _roleManger.UpdateAsync(role); if (result.Succeeded) { var users = await _userManager.GetUsersInRoleAsync(role.Name); foreach (var user in users) { await _userManager.UpdateSecurityStampAsync(user); //await _signInManager.RefreshSignInAsync(user); } return(true); } return(false); }