public ActionResult UserEdit(string id,string returnUrl) { if (id == null) { return RedirectToAction("NotFound", "Error"); } AdminUserEditViewResult result = new AdminUserEditViewResult(); var claims = UserManager.GetClaims(id); var banned=claims.FirstOrDefault(m=>m.Type == "Banned"); result.Roles = RoleManager.Roles.ToList(); result.User = UserManager.FindById(id); result.returnUrl = returnUrl; result.Banned = Convert.ToBoolean(result.User.Banned); if (result.User != null) { return View(result); } else { return RedirectToAction("NotFound", "Error"); } }
public async Task<ActionResult> UserEdit(AdminUserEditViewResult model) { if (ModelState.IsValid) { ApplicationUser user = UserManager.FindById(model.User.Id); if (user != null) { //Поиск claim Banned //Добавляем, если необходимо if ((model.Banned == true) && (user.Banned!=true)) { user.Banned = true; } //Удаляем, если необходимо else if (user.Banned == true) { user.Banned = false; } //Очищаем все роли пользователя foreach (var role in UserManager.GetRoles(user.Id).ToList()) { await UserManager.RemoveFromRoleAsync(user.Id, role); } //Добавляем необходимы роли пользователя foreach (var role in model.SelectedRoles.Where(m => m.Checked).ToList()) { await UserManager.AddToRoleAsync(user.Id, role.Name); } model.Roles = RoleManager.Roles.ToList(); TempData["toastrMessage"] = String.Format("Пользователь {0} изменен", user.UserName); TempData["toastrType"] = "success"; UserManager.Update(user); return View("UserEdit", model); } else { return View("UserEdit", model); } } else { return View("UserEdit", model); } }