public ActionResult RoleEditor(string userId, RoleEditorViewModel formData) { if (!ModelState.IsValid || userId is "" || formData is null) { return(RedirectToAction("UsersAndRoles")); } //return View(); var user = UserManager.Users.FirstOrDefault(p => p.Id == userId); if (user is null) { return(RedirectToAction("UsersAndRoles")); } foreach (var item in formData.RolesUserIsIn) { var role = DbContext.Roles.FirstOrDefault(p => p.Id == item.RoleId); if (role is null) { throw new Exception("Role is null: Role Id is missing, check if you're sending the proper roles, or if a user role is missing."); } else { if (item.Selected) { UserManager.AddToRole(user.Id, role.Name); } else { UserManager.RemoveFromRole(user.Id, role.Name); } } //if (!item.Selected && role != null) // ++Q , technically if the roll is null, it will try to add the null role //{ // UserManager.RemoveFromRole(user.Id, role.Name); //} //else //{ // UserManager.AddToRole(user.Id, role.Name); //} } //UserManager.Update(user); return(RedirectToAction("UsersAndRoles")); }
public async Task <IActionResult> AddUserRole(int?clientId, int?Id) { //TODO: Implement Realistic Implementation var user = _userManager.FindByIdAsync(((int)Id).ToString()).Result; ViewBag.ClientId = (int)clientId; var roleListViewModel = new List <RoleEditorViewModel> (); var roleList = _roleMager.Roles.Where(r => r.Client.Equals((int)clientId)).ToList(); foreach (var item in roleList) { var role = new RoleEditorViewModel { Name = item.Name, Id = item.Id }; role.Selected = _userManager.IsInRoleAsync(user, item.Name).Result; roleListViewModel.Add(role); } await Task.Yield(); return(View(roleListViewModel)); }