public RoleUpdateViewDetails GetRoleDetailsUpdate(string roleId) { roleId = _encryptionService.DecryptString(roleId); var roleDetails = _roleManagementRepository.GetRoleDetailsUpdate(roleId, StoredProcedureName); var roleLists = roleDetails.Item1; var roleGroup = roleLists.GroupBy(x => x.SubGroupName).Select(g => g.First()).ToList(); List <RoleDetailsLists> roleDetailsLists = new List <RoleDetailsLists>(); foreach (var group in roleGroup) { RoleDetailsLists roleDetailsList = new RoleDetailsLists(); roleDetailsList.GroupName = group.Group; roleDetailsList.SubGroupName = group.SubGroupName; roleDetailsList.RoleDetails = roleLists.Where(x => x.SubGroupName == group.SubGroupName).ToList(); roleDetailsLists.Add(roleDetailsList); } RoleUpdateViewDetails roleUpdateViewDetails = new RoleUpdateViewDetails(); roleUpdateViewDetails.RoleLists = roleDetailsLists; roleUpdateViewDetails.SelectedRoles = roleDetails.Item2; roleUpdateViewDetails.RoleId = roleDetails.Item3.Id; roleUpdateViewDetails.RoleName = roleDetails.Item3.Name; return(roleUpdateViewDetails); }
public async Task <IActionResult> EditRoles(RoleUpdateViewDetails roleUpdateViewDetails) { if (ModelState.IsValid) { //get all role lists firs var roleManager = _serviceProvider.GetRequiredService <RoleManager <IdentityRole> >(); var roleLists = Request.Form["eachRoleValue"].ToList(); var roleExist = await roleManager.RoleExistsAsync(roleUpdateViewDetails.RoleName); if (roleExist) { try { //get claims assoc with role var roleDetails = await roleManager.FindByIdAsync(roleUpdateViewDetails.RoleId); //claims list assoc with roles above mentioned var roles = await roleManager.GetClaimsAsync(roleDetails); var currentRoles = new List <string>(); foreach (var role in roles) { currentRoles.Add(role.Value); } var deletedRoles = currentRoles.Except(roleLists).ToList(); foreach (var deleteRole in deletedRoles) { await roleManager.RemoveClaimAsync(roleDetails, new Claim("permission", deleteRole)); } if (!roleLists.Contains("dashboard.view")) { roleLists.Add("dashboard.view"); } foreach (var roleClaim in roleLists) { if (roleDetails != null) { var role = Convert.ToString(roles.FirstOrDefault(x => x.Value == roleClaim)); if (role == "" || roleClaim == "dashboard.view") { await roleManager.AddClaimAsync(roleDetails, new Claim("permission", roleClaim)); } } else { return(RedirectToAction("EditRole") .WithDanger("Failed", "No role exists with the role name.")); } } return(RedirectToAction("Index").WithSuccess("Success", "Roles updated successfully.")); } catch (Exception e) { return(RedirectToAction("EditRole").WithDanger("Failed", e.Message)); } } return(RedirectToAction("EditRole").WithDanger("Failed", "No role exists with the role name.")); } return(RedirectToAction("EditRole").WithDanger("Failed", "Failed Validation")); }