コード例 #1
0
        public ActionResult Change(CreateChangeRoleViewModel model)
        {
            // ActionResult для ajax BeginForm
            ViewBag.ActRes = "Change";

            // список групп типов контента
            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.ChangeRole(model.Id, 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));
        }