// GET: AdminManagment/Edit/5 public ActionResult Edit(string id) { if (id != null) { // Check if we have some store modelstate if (TempData["ViewData"] != null) { ViewData = (ViewDataDictionary)TempData["ViewData"]; } ViewBag.Roles = GetAdminRoles(); PaskolUser user = UserManager.Users.Where(u => u.Id == id).FirstOrDefault(); // Save url to geet back to after action ends ViewBag.ReturnURL = Request.UrlReferrer; var mev = new ManagersEditView(user); mev.Roles = RoleManager.Roles.Where(r => mev.Roles.Any(ur => ur == r.Id)).Select(r => r.Name).ToList(); return(View(mev)); } return(RedirectToAction("Index")); }
public async Task <ActionResult> Edit(ManagersEditView model, string ReturnURL) { if (ModelState.IsValid) { try { PaskolUser user = await UserManager.FindByIdAsync(model.UserID); if (user == null) { ModelState.AddModelError("", "משתמש לא נמצא"); } else { user.UserName = model.Name; user.Email = model.Email; user.Note = model.Note; // User cant change permission to his self if (user.Id != User.Identity.GetUserId()) { // Before change role names IEnumerable <string> BeforeChange = user.Roles .Select(r => RoleManager.Roles.SingleOrDefault(rn => rn.Id == r.RoleId).Name); model.Roles = model.Roles ?? new List <string>(); // Ids to add IEnumerable <string> RoleIdsToAdd = model.Roles.Except(BeforeChange); // Ids to delete IEnumerable <string> RoleIdsToDelete = BeforeChange.Except(model.Roles); IdentityResult result = null; //Delete and add roles foreach (string roleName in RoleIdsToAdd.ToList()) { result = await UserManager.AddToRoleAsync(user.Id, roleName); if (!result.Succeeded) { return(View("Error", result.Errors)); } } foreach (string roleName in RoleIdsToDelete.ToList()) { result = await UserManager.RemoveFromRoleAsync(user.Id, roleName); if (!result.Succeeded) { return(View("Error", result.Errors)); } } } if (await UpdateUserAsync(user, model.Password)) { return(RedirectToAction("index")); } } } catch (Exception e) { ModelState.AddModelError("", e.Message); } } TempData["ViewData"] = ViewData; return(RedirectToAction("Edit", new { id = model.UserID })); }