public ActionResult Create(CreateContentTypeViewModel model) { // список контроллеров и их экшенов List <ControllerAction> caList = new List <ControllerAction>(); // десериализуем 'model.caList' var new_caList = json.Deserialize(model.caList, caList.GetType()); // наполняем список caList = (List <ControllerAction>)new_caList; ViewBag.caList = caList; // список групп типов контента List <ContentGroup> contentgrouplist = contenttype.GetContentTypeGroups(null); ViewBag.ContentGroupList = contentgrouplist; ViewBag.EmptyCaListKey = 1; // список 'caList' не пуст // валидация модели if (ModelState.IsValid) { int selected = 0; int title = 0; // проверка списка экшенов на Selected (должен быть хотя бы один и его название) foreach (var i in model.Actions) { if (i.Selected) { selected = 1; title = 0; // сброс флага названия, т.к. найден отмеченный экшен // пусто / null ли название if (!string.IsNullOrEmpty(i.Title)) { title = 1; } else { break; // выход из цикла, если нет названия для текущего экшена } } } // если выбран хотя бы один экшен и есть его название if (selected == 1 && title == 1) { // восстанавливаем нулевую запись экшена - контроллер Permission action = new Permission() { Name = model.Controller, Title = "", Selected = true }; // помещаем наш контроллер в начало 'model.Actions' model.Actions.Insert(0, action); // наполняем объект данными ContentType ct = new ContentType() { Name = model.Name, Controller = model.Controller, Actions = model.Actions, contentGroup = model.contentGroup }; // создание нового типа контента if (contenttype.CreateContentType(ct)) { // лог logging.Logged( "Info" , "Пользователь " + User.Identity.Name + " добавил тип контента: '" + model.Name + "'" , this.GetType().Namespace , this.GetType().Name ); return(Json(new { result = "Redirect", url = Url.Action("Index", "ContentType") })); } // удаляем из 'model.Actions' нулевой элемент - контроллер, // чтобы не нарушить структуру при возвращении 'CreatePartial' model.Actions.RemoveAt(0); ModelState.AddModelError("", "Этот тип контента уже используется"); } else { ModelState.AddModelError("", "Укажите хотя бы один экшен. Для указанных экшенов название обязательно."); } } else { ModelState.AddModelError("", "Ошибка, пожалуйста проверьте данные"); } return(PartialView(model)); }
public ActionResult Add(CreateChangeRoleViewModel model) { // ActionResult для ajax BeginForm ViewBag.ActRes = "Add"; // список групп типов контента List <ContentGroup> cgList = contenttype.ContentGroupList(""); // закидываем список групп типов контента ViewBag.cgList = cgList; // если список типов контента пуст, то невозможно создать роль (он уже не пуст) ViewBag.Empty_ctList = 1; // валидация модели if (ModelState.IsValid) { int selected = 0; // проверка списка экшенов (мин. 1 должен быть 'Selected', исключая контроллер) foreach (var i in model.ContentTypes) { // отключаем 'Selected' у контроллера i.Actions[0].Selected = false; // остальные экшены foreach (var j in i.Actions) { if (j.Selected) { selected = 1; } } // включаем 'Selected' у контроллера i.Actions[0].Selected = true; } // если выбрано хотя бы одно разрешение if (selected == 1) { // создание новой группы пользователей if (account.CreateRole(model.Name, model.ContentTypes)) { // обновляем хранилище ролей RoleConfig.RepositoryRoles(); // лог logging.Logged( "Info" , "Пользователь '" + User.Identity.Name + "' добавил роль: " + model.Name.ToString() , this.GetType().Namespace , this.GetType().Name ); return(Json(new { result = "Redirect", url = Url.Action("Group", "System") })); } ModelState.AddModelError("", "Эта группа уже используется"); } else { ModelState.AddModelError("", "У группы должно быть хотя бы одно разрешение."); } } else { ModelState.AddModelError("", "Ошибка, пожалуйста проверьте данные"); } return(PartialView("CreateChangeRole", model)); }
public ActionResult Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { if (account.Authenticate(model.UserName, model.Password)) { // данные потльзователя List <User> user = new List <User>(); user = account.UsersList(model.UserName); // активен ли пользователь if (user[0].IsActive == 1) { FormsAuthentication.SetAuthCookie(model.UserName, false); // лог logging.Logged( "Info" , "Пользователь '" + model.UserName + "' вошел в систему" , this.GetType().Namespace , this.GetType().Name ); return(Json(new { result = "Redirect", url = Url.Action("Index", "Home") })); } else { // лог logging.Logged( "Error" , "Отказано в доступе: пользователь '" + model.UserName + "' неактивен" , this.GetType().Namespace , this.GetType().Name ); ModelState.AddModelError("", "Отказано в доступе"); } } else { //// лог //logging.Logged( // "Error" // , "Ошибка аутентификации: '" + model.UserName + "' - неправильный логин или пароль" // , this.GetType().Namespace // , this.GetType().Name //); ModelState.AddModelError("", "Неправильный логин или пароль"); } } //else //{ // // лог // logging.Logged( // "Error" // , "Ошибка аутентификации: '" + model.UserName + "' - неправильный логин или пароль" // , this.GetType().Namespace // , this.GetType().Name // ); // ModelState.AddModelError("", "Ошибка аутентификации"); //} return(PartialView("LoginPartial", model)); }