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()); }
/// <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)); }
/// <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()); }
/// <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")); // Возвращаемся к списку товаров } }