Beispiel #1
0
 public ActionResult Edit(int?id, int?service, EditAccessesModel model)
 {
     if (ModelState.IsValid)
     {
         using (DemoMVC5Entities db = new DemoMVC5Entities())
         {
             User           user         = db.User.FirstOrDefault(u => u.Id == id); // Получаем текущего пользователя из базы
             List <Actions> ModelActions = model.GetActionsList();                  // Получаем список доступов которые необходимо предоставить (выбранные чекбоксы в представлении)
             foreach (Actions action in Enum.GetValues(typeof(Actions)))            // Цикл по всем видам доступов из перечисления
             {
                 // Получаем строку из базы для указанного пользователя, сервиса и доступа
                 Access access = db.Access.Where(u => u.User == id && u.Service == service && u.Action == (int)action).FirstOrDefault();
                 if (access == null && ModelActions.Contains(action)) // Если доступа нет, но нужно предоставить
                 {
                     db.Access.Add(new Access {
                         User = (int)id, Service = (int)service, Action = (int)action
                     });                                                      // Добавляем строку доступа в базе
                 }
                 else if (access != null && !ModelActions.Contains(action))   // Если доступ есть, но предоставлять не нужно
                 {
                     db.Access.Remove(access);                                // Удаляем доступ из базы
                 }
                 db.SaveChanges();                                            // Сохраняем изменения
             }
             return(RedirectToAction("Accesses", "Access", new { id = id })); // Возвращаемся к списку доступов
         }
     }
     return(View());
 }
 public ActionResult Edit(int?id, EditProductModel model)
 {
     if (ModelState.IsValid)
     {
         using (DemoMVC5Entities db = new DemoMVC5Entities())
         {
             User user = db.User.FirstOrDefault(u => u.Login == User.Identity.Name);
             // Изменение товара
             if (user != null)
             {
                 Product product = db.Product.Find(id);          // Получаем информацию о товаре
                 if (product == null)                            // Если информация не найдена
                 {
                     RedirectToAction("PageNotFound", "Shared"); // Переходим на страницу с ошибкой
                 }
                 product.Name        = model.Name;
                 product.Description = model.Description;
                 product.Count       = model.Count;
                 product.Modified    = DateTime.Today;
                 product.ModifiedBy  = user.Id;
                 db.SaveChanges();                                // Заполняем информацию о товаре и сохраняем изменения в базе
                 return(RedirectToAction("Products", "Product")); // Переходим на страницу со списком товаров
             }
         }
     }
     return(View());
 }
 /// <summary>
 /// Функция удаляет выбранного пользователя и все его доступы из базы
 /// </summary>
 /// <param name="id">Id пользователя</param>
 /// <returns></returns>
 public ActionResult Delete(int?id)
 {
     if (!User.HasPermission(Services.User, Actions.Delete)) //Проверка наличия необходимых прав доступа
     {
         return(RedirectToAction("AccessDenied", "Shared")); // Если доступа нет, перейти на страницу с ошибкой доступа
     }
     if (id == null)                                         // Проверка наличия id в адресе запрашиваемой страницы
     {
         RedirectToAction("PageNotFound", "Shared");         // Если id не указан, перейти на страницу с сообщением о том, что запрашиваемая страница не найдена
     }
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         User user = db.User.Find(id);                                            // Выполняем запрос к базе по поиску пользователя с указанным id с указанным
         if (user != null)                                                        // Если пользователь найден
         {
             List <Access> Acesses = db.Access.Where(a => a.User == id).ToList(); // Получаем список доступов пользователя
             if (Acesses.Any())                                                   // Если доступы есть
             {
                 db.Access.RemoveRange(Acesses);                                  // Удаляем доступы из базы
             }
             db.User.Remove(user);                                                // Удаляем пользователя из базы
             db.SaveChanges();                                                    // Сохраняем изменения
             return(RedirectToAction("Users"));                                   //Возвращаемся к списку пользователей
         }
     }
     return(View());
 }
Beispiel #4
0
        /// <summary>
        /// Функция вывода списка со всеми доступами конкретного пользователя
        /// </summary>
        /// <param name="id">Id пользователя</param>
        /// <returns>Список доступов</returns>
        public ActionResult Accesses(int?id)
        {
            if (!User.HasPermission(Services.User, Actions.Read))          //Проверка наличия необходимых прав доступа
            {
                return(RedirectToAction("AccessDenied", "Shared"));        // Если доступа нет, перейти на страницу с ошибкой доступа
            }
            if (id == null)                                                // Проверка наличия id в адресе запрашиваемой страницы
            {
                RedirectToAction("PageNotFound", "Shared");                // Если id не указан, перейти на страницу с сообщением о том, что запрашиваемая страница не найдена
            }
            List <AccessesModel> AllAccesses = new List <AccessesModel>(); // Список доступов для вывода

            using (DemoMVC5Entities db = new DemoMVC5Entities())
            {
                User user = db.User.FirstOrDefault(u => u.Id == id);                          // Находим пользователя, для которого нужно отобразить доступы
                foreach (Services service in Enum.GetValues(typeof(Services)))                // Проходим по перечислению существующих сервисов
                {
                    Service dbService = db.Service.FirstOrDefault(s => s.Id == (int)service); // Получаем сервис по его id из базы данных
                    // Добавляем в список новое значение содержащее сервис и доступы к нему
                    AllAccesses.Add(new AccessesModel(user, dbService.Name, (int)service,
                                                      user.HasPermission(service, Actions.Create), user.HasPermission(service, Actions.Read),
                                                      user.HasPermission(service, Actions.Update), user.HasPermission(service, Actions.Delete)));
                }
            }
            return(View(AllAccesses)); // Передаем список доступов в представление
        }
 public ActionResult Create(CreateUserModel model)
 {
     if (ModelState.IsValid)
     {
         using (DemoMVC5Entities db = new DemoMVC5Entities())
         {
             // Добавляем нового пользователя в базу даннгых
             db.User.Add(new User {
                 Login = model.Login, Password = model.Password, FIO = model.FIO, Modified = DateTime.Today
             });
             db.SaveChanges();                             // Сохраняем изменения
             return(RedirectToAction("Users", "Account")); // Переходим к странице со всеми пользоваетлями
         }
     }
     return(View(model));
 }
 /// <summary>
 /// Отображение списка всех пользователей системы
 /// </summary>
 /// <returns>Представление со списком всех пользователей системы</returns>
 public ActionResult Users()
 {
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         if (!User.HasPermission(Services.User, Actions.Read))       //Проверка наличия необходимых прав доступа
         {
             return(RedirectToAction("AccessDenied", "Shared"));     // Если доступа нет, перейти на страницу с ошибкой доступа
         }
         List <User>          Users    = db.User.ToList();           // Список всех пользователей
         List <AllUsersModel> AllUsers = new List <AllUsersModel>(); // Список пользователй в виде модели для вывода
         foreach (User user in Users)
         {
             AllUsers.Add(new AllUsersModel(user)); // Создаем модель пользователя на основе пользователя из базы и добавляем в список для вывода в представление
         }
         return(View(AllUsers));
     }
 }
 public ActionResult Create(CreateProductModel model)
 {
     if (ModelState.IsValid)
     {
         using (DemoMVC5Entities db = new DemoMVC5Entities())
         {
             User user = db.User.FirstOrDefault(u => u.Login == User.Identity.Name); // Получение информации о пользователе из базы
             // Добавление нового товара в базу
             db.Product.Add(new Product {
                 Name = model.Name, Description = model.Description, Count = model.Count, Modified = DateTime.Today, ModifiedBy = user.Id
             });
             db.SaveChanges();                                // Сохранение изменений
             return(RedirectToAction("Products", "Product")); // Переход к списку всех товаров
         }
     }
     return(View(model));
 }
Beispiel #8
0
 /// <summary>
 /// Метод проверяет наличие прав доступа у пользователя по логину
 /// </summary>
 /// <param name="user">Пользователь</param>
 /// <param name="service">Сервис, к которому необходим доступ</param>
 /// <param name="action">Уровень доступа определяется действием, которое необходимо выполнить, используется стандартная модель CRUD</param>
 /// <returns></returns>
 public static bool HasPermission(string login, Services service, Actions action)
 {
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         // Проверка, есть ли данный пользователь в базе данных
         User dbUser = db.User.FirstOrDefault(u => u.Login == login);
         if (dbUser != null)
         {
             // Проверка, есть ли для указанного пользователя необходимые настройки доступа
             Access access = db.Access.FirstOrDefault(a => a.User == dbUser.Id && a.Service == (int)service && a.Action == (int)action);
             if (access != null)
             {
                 return(true);                // если доступ есть
             }
         }
     }
     return(false); // если доступа нет
 }
 /// <summary>
 /// Представление списка всех товаров
 /// </summary>
 /// <returns>Представление списка всех товаров</returns>
 public ActionResult Products()
 {
     if (!User.HasPermission(Services.Product, Actions.Read)) //Проверка наличия необходимых прав доступа
     {
         return(RedirectToAction("AccessDenied", "Shared"));  // Если доступа нет, перейти на страницу с ошибкой доступа
     }
     // Получение списка товаров из базы данных
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         List <Product>          Products    = db.Product.Where(u => u.Id > 0).ToList(); // Список всех товаров
         List <AllProductsModel> AllProducts = new List <AllProductsModel>();            // Список модели для вывода
         foreach (Product product in Products)
         {
             AllProducts.Add(new AllProductsModel(product)); // Добавление товаров из базы в список модели для вывода
         }
         return(View(AllProducts));                          // Вывод списка товаров в представление
     }
 }
 /// <summary>
 /// Функция для отображения информации о пользователе
 /// </summary>
 /// <param name="id">Id пользователея</param>
 /// <returns>Представление с информацией о пользователе</returns>
 public ActionResult Details(int?id)
 {
     if (!User.HasPermission(Services.User, Actions.Read))   //Проверка наличия необходимых прав доступа
     {
         return(RedirectToAction("AccessDenied", "Shared")); // Если доступа нет, перейти на страницу с ошибкой доступа
     }
     if (id == null)                                         // Проверка наличия id в адресе запрашиваемой страницы
     {
         RedirectToAction("PageNotFound", "Shared");         // Если id не указан, перейти на страницу с сообщением о том, что запрашиваемая страница не найдена
     }
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         User user = db.User.Find(id);                   // Находим пользователя в базе данных
         if (user == null)                               // Если информация не найдена
         {
             RedirectToAction("PageNotFound", "Shared"); // Переходим на страницу с ошибкой
         }
         return(View(new DetailsUserModel(user)));       // Создаем модель для отображения данных на основе найденного пользователя и выводим ее в представление
     }
 }
 /// <summary>
 /// Функция для редактирования пользователя
 /// </summary>
 /// <param name="id"></param>
 /// <returns>Представление с данными пользователя</returns>
 public ActionResult Edit(int?id)
 {
     if (!User.HasPermission(Services.User, Actions.Update)) //Проверка наличия необходимых прав доступа
     {
         return(RedirectToAction("AccessDenied", "Shared")); // Если доступа нет, перейти на страницу с ошибкой доступа
     }
     if (id == null)                                         // Проверка наличия id в адресе запрашиваемой страницы
     {
         RedirectToAction("PageNotFound", "Shared");         // Если id не указан, перейти на страницу с сообщением о том, что запрашиваемая страница не найдена
     }
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         User user = db.User.Find(id);                   // Находим пользователя в базе даных
         if (user == null)                               // Если информация не найдена
         {
             RedirectToAction("PageNotFound", "Shared"); // Переходим на страницу с ошибкой
         }
         return(View(new EditUserModel(user)));          // Возвращаем модель с данными о пользователе
     }
 }
 /// <summary>
 /// Функция редактирования товара
 /// </summary>
 /// <param name="id">Id товара</param>
 /// <returns></returns>
 public ActionResult Edit(int?id)
 {
     if (!User.HasPermission(Services.Product, Actions.Update)) //Проверка наличия необходимых прав доступа
     {
         return(RedirectToAction("AccessDenied", "Shared"));    // Если доступа нет, перейти на страницу с ошибкой доступа
     }
     if (id == null)                                            // Проверка наличия id в адресе запрашиваемой страницы
     {
         RedirectToAction("PageNotFound", "Shared");            // Если id не указан, перейти на страницу с сообщением о том, что запрашиваемая страница не найдена
     }
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         Product product = db.Product.Find(id);          // Получаем информацию о товаре из базы данных
         if (product == null)                            // Если информация не найдена
         {
             RedirectToAction("PageNotFound", "Shared"); // Переходим на страницу с ошибкой
         }
         return(View(new EditProductModel(product)));    // Создаем модель с отображением информации о выбранном товаре и выводим модель
     }
 }
 public ActionResult Login(LoginModel model)
 {
     if (ModelState.IsValid) // Если состояние модели корректное, данные заполнены верно
     {
         using (DemoMVC5Entities db = new DemoMVC5Entities())
         {
             User user = db.User.FirstOrDefault(u => u.Login == model.Login && u.Password == model.Password);
             // Проверка, есть ли авторизуемый пользователь в базе данных
             if (user != null)
             {
                 FormsAuthentication.SetAuthCookie(model.Login, true); // Записываем авторизованного пользователя в куки
                 return(RedirectToAction("Products", "Product"));      // Перенаправляем на страницу товаров
             }
             else
             {
                 RedirectToAction("UserNotFound", "Shared"); // Перенаправляем на страницу - Пользователь не найден
             }
         }
     }
     return(View(model));
 }
 public ActionResult Edit(int?id, EditUserModel model)
 {
     if (ModelState.IsValid)
     {
         using (DemoMVC5Entities db = new DemoMVC5Entities())
         {
             // Получаем информацию о редактируемом пользователе из базы данных, обновляем данные из модели и сохраняем новую информацию в базе
             User user = db.User.FirstOrDefault(p => p.Id == id);
             if (user == null)                               // Если информация не найдена
             {
                 RedirectToAction("PageNotFound", "Shared"); // Переходим на страницу с ошибкой
             }
             user.Login    = model.Login;
             user.FIO      = model.FIO;
             user.Password = model.Password;
             user.Modified = DateTime.Today;
             db.SaveChanges();                             // Сохраняем изменения
             return(RedirectToAction("Users", "Account")); // Возвращаемся к списку всех пользователей
         }
     }
     return(View());
 }
 /// <summary>
 /// Удаление товара из базы
 /// </summary>
 /// <param name="id">Id товара</param>
 /// <returns></returns>
 public ActionResult Delete(int?id)
 {
     if (!User.HasPermission(Services.Product, Actions.Delete)) //Проверка наличия необходимых прав доступа
     {
         return(RedirectToAction("AccessDenied", "Shared"));    // Если доступа нет, перейти на страницу с ошибкой доступа
     }
     if (id == null)                                            // Проверка наличия id в адресе запрашиваемой страницы
     {
         RedirectToAction("PageNotFound", "Shared");            // Если id не указан, перейти на страницу с сообщением о том, что запрашиваемая страница не найдена
     }
     using (DemoMVC5Entities db = new DemoMVC5Entities())
     {
         Product product = db.Product.Find(id);    // Выполняем запрос к базе по поиску товара с указанным
         if (product != null)                      // Если товар найден
         {
             db.Product.Remove(product);           // Удаляем товар из базы
             db.SaveChanges();                     // Сохраняем изменения
             return(RedirectToAction("Products")); // Переходим к списку всех товаров
         }
     }
     return(View());
 }
Beispiel #16
0
        /// <summary>
        /// Функция редактирования прав доступа пользователя
        /// </summary>
        /// <param name="id">Id пользователя</param>
        /// <param name="service">Id сервиса</param>
        /// <returns>Представление для редактирования прав доступа</returns>
        public ActionResult Edit(int?id, int?service)
        {
            if (!User.HasPermission(Services.User, Actions.Update)) //Проверка наличия необходимых прав доступа
            {
                return(RedirectToAction("AccessDenied", "Shared")); // Если доступа нет, перейти на страницу с ошибкой доступа
            }
            if (id == null)                                         // Проверка наличия id в адресе запрашиваемой страницы
            {
                RedirectToAction("PageNotFound", "Shared");         // Если id не указан, перейти на страницу с сообщением о том, что запрашиваемая страница не найдена
            }
            Services uService = (Services)service;                  // По Id сервиса преобразуем к сответствующему элементу перечисления

            using (DemoMVC5Entities db = new DemoMVC5Entities())
            {
                User    user      = db.User.FirstOrDefault(u => u.Id == id);              // Получаем пользователя из базы по его Id
                Service dbService = db.Service.FirstOrDefault(s => s.Id == (int)service); // Получаем сервис из базы по его Id
                // Создаем модель для редактирования прав доступа пользователя и выводим ее
                return(View(new EditAccessesModel(user, dbService.Name, user.HasPermission(uService, Actions.Create),
                                                  user.HasPermission(uService, Actions.Read), user.HasPermission(uService, Actions.Update),
                                                  user.HasPermission(uService, Actions.Delete))));
            }
        }
        /// <summary>
        /// Функция экспортирует в Excel список всех товаров из базы данных.
        /// </summary>
        /// <returns></returns>
        public ActionResult ExportToExcel()
        {
            using (DemoMVC5Entities db = new DemoMVC5Entities())
            {
                GridView gv = new GridView();
                // Здесь я вывожу в Excel таблицу продуктов из базы, по аналогии можно выводить все что угодно, преобразуя к List
                gv.DataSource = db.Product.ToList(); // Сохраняем в GridView gv список всех товаров из базы
                gv.DataBind();
                // Создаем в Response объект типа приложение excel с именем Products.xls и загружаем файл пользователю
                Response.ClearContent();
                Response.Buffer = true;
                Response.AddHeader("content-disposition", "attachment; filename=Products.xls");
                Response.ContentType = "application/ms-excel";
                Response.Charset     = "";
                StringWriter   sw  = new StringWriter();
                HtmlTextWriter htw = new HtmlTextWriter(sw);
                gv.RenderControl(htw);
                Response.Output.Write(sw.ToString());
                Response.Flush();
                Response.End();

                return(RedirectToAction("Products")); // Возвращаемся к списку товаров
            }
        }