//GET /admin/roles/edituserrole public async Task <IActionResult> EditUserRole(string id) { IdentityRole role = await roleManager.FindByIdAsync(id); List <AppUser> members = new List <AppUser>(); List <AppUser> nonMembers = new List <AppUser>(); foreach (AppUser user in userManager.Users) { var list = await userManager.IsInRoleAsync(user, role.Name) ? members : nonMembers; list.Add(user); } RoleUserEdit roleUserEdit = new RoleUserEdit { Role = role, Members = members, NonMembers = nonMembers }; return(View(roleUserEdit)); }
public async Task <IActionResult> EditUserRole(RoleUserEdit roleEdit) { IdentityResult result; foreach (string userId in roleEdit.AddIds ?? new string[] { }) { AppUser user = await userManager.FindByIdAsync(userId); result = await userManager.AddToRoleAsync(user, roleEdit.RoleName); } foreach (string userId in roleEdit.DeleteIds ?? new string[] { }) { AppUser user = await userManager.FindByIdAsync(userId); if (user.UserName == "superadmin") { TempData["Error"] = "The admin role from superadmin user cannot be dropped!"; } else { AppUser appUser = await userManager.FindByNameAsync(User.Identity.Name); if (user.UserName == appUser.UserName) { TempData["Error"] = "The role from currently logged user cannot be dropped!"; } else { result = await userManager.RemoveFromRoleAsync(user, roleEdit.RoleName); } } } return(Redirect(Request.Headers["Referer"].ToString())); }