public ActionResult UserBookings() { IRepository repository = new CommunicationWithDataBase(); logger.Debug($"Обращение к базе данных, получение пользователя по логину"); User user = repository.GetUserByLogin(User.Identity.Name); if (user == null) { logger.Debug($"Ошибка. не возможно получить пользователя"); } logger.Debug($"Обращение к базе данных, получение комнат забронированых пользователем {user.Login}"); List <Booking> bookings = repository.GetUserBookings(user.Id); List <Booking> currentBookings = bookings.Where(b => b.BookingStatusId == 2).ToList(); logger.Info($"Возвращение забронированных пользователем комнат"); return(View(currentBookings)); }
public ActionResult Authorization(UserAuthorization model) { IRepository repository = new CommunicationWithDataBase(); logger.Debug("Обращение к базе данных для получения данных о пользователе"); User user = repository.GetUserByLogin(model.Login?.ToLower()); if (user?.BlockDate > DateTime.Now) { logger.Debug($"Ошибка входа, пользователь {user.Login} заблокирован в системе"); ModelState.AddModelError("AuthorizationValidationError", $"Вы заблокированы в системе до {user.BlockDate.ToString("d")}."); } else if (model.Password == null) { ModelState.AddModelError("AuthorizationValidationError", "Логин или пароль некорректен"); } else if (repository.CheckUserAuthorization(model.Login?.ToLower(), model?.Password)) { logger.Debug($"Обращение к базе данных для проверки подлиности данных авторизации"); if (model.Login == null) { logger.Error("Ошибка. Логин пользователя был null"); } FormsAuthentication.SetAuthCookie(model.Login.ToLower(), true); logger.Info($"Пользователь {user.Login} выполнил вход на сайт"); return(RedirectToAction("Index", "Home")); } else { ModelState.AddModelError("AuthorizationValidationError", "Логин или пароль некорректен"); } logger.Info($"Отказ входа. некорректные данные"); return(View(model)); }
public ActionResult Registration(UserRegistration user) { IRepository repository = new CommunicationWithDataBase(); logger.Debug("Попытка создания нового пользователя"); if (user.Password != null) { if (user.Password.Length < 6 || user.Password.Length > 15) { ModelState.AddModelError(nameof(user.Password), "Пароль должен содержать от 6 до 15 символов"); } if (!Regex.IsMatch(user.Password, "^[a-zA-ZА-Яа-я0-9_\\.\\-]+$")) { ModelState.AddModelError(nameof(user.Password), "Пароль содержит некорректные символы"); } if (user.ConfirmPassword != user.Password) { ModelState.AddModelError(nameof(user.ConfirmPassword), "Пароли не совпадают"); } } if (!(user.DateOfBirth > DateTime.Now.AddYears(-110) && user.DateOfBirth < DateTime.Now.AddYears(-16))) { ModelState.AddModelError(nameof(user.DateOfBirth), "Некорректная дата рождения. Наши пользователи должны быть старше 16 и моложе 110 лет"); } if (user.Login != null) { if (!Regex.IsMatch(user.Login, "^[A-Za-z]+")) { ModelState.AddModelError(nameof(user.Login), "В логине должны присутствовать буквы английского алфавита"); } logger.Debug($"Обращение к базе данных для проврки уникальности логина {user.Login}"); if (repository.GetUserByLogin(user.Login.ToLower()) != null) { ModelState.AddModelError(nameof(user.Login), "Пользователь с таким логином уже существует"); } } if (user.Email != null) { logger.Debug($"Обращение к базе данных для проврки уникальности email {user.Email}"); if (repository.GetUserByEmail(user.Email) != null) { ModelState.AddModelError(nameof(user.Email), "Email используется в системе"); } } if (ModelState.IsValid) { try { repository.CreateUser(user.FirstName.ToLower(), user.SecondName.ToLower(), user.Login.ToLower(), user.Email, user.Password, user.DateOfBirth); } catch { logger.Error("Ошибка. пользователь не был создан"); } logger.Info("В систему добавлен новый пользователь"); FormsAuthentication.SetAuthCookie(user.Login.ToLower(), true); return(RedirectToAction("Index", "Home")); } return(View(user)); }