public void CheckAndSetUserId(ChangePasswordModel model) { int? userId = AuthenticationService.GetUserIdFromChangePasswordCookue(); if (!userId.HasValue) throw new FormatException("Доступ к странице запрещен."); model.UserId = userId.Value; }
protected bool ValidateModel(ChangePasswordModel model) { return ModelState.IsValid; }
public ActionResult ChangePassword(ChangePasswordModel model) { if (!ValidateModel(model)) return View(model); LoginBl.OnChangePassword(model); if(!string.IsNullOrEmpty(model.Error)) { ModelState.AddModelError("",model.Error); return View(model); } return RedirectToAction("Index", "Home"); }
public ActionResult ChangePassword() { ChangePasswordModel model = new ChangePasswordModel(); LoginBl.CheckAndSetUserId(model); return View(model); }
public void OnChangePassword(ChangePasswordModel model) { try { CheckAndSetUserId(model); User user = UserDao.Load(model.UserId); user.Password = model.NewPassword; user.IsFirstTimeLogin = false; user.Email = model.Email; UserDao.MergeAndFlush(user); formsAuthenticationService.SignIn(user.Login, false); List<UserRolesDto> usersAndRoles = GetUserRoles(user); if(usersAndRoles.Count == 0) throw new ArgumentException("Отсутствуют роли в системе для данного пользователя"); UserRolesDto urDto = usersAndRoles.Where(x => x.user.Id == user.Id).FirstOrDefault(); if (urDto == null) throw new ValidationException(string.Format("Не найден пользователь с идом {0} при смене пароля роли ", user.Id)); UserRole role = user.UserRole; if (urDto.roles.Count > 1) role = urDto.roles[0]; IUser dto = AuthenticationService.CreateUser(user,role); AuthenticationService.setAuthTicket(dto); AuthenticationService.ClearChangePasswordCookue(); SendEmail(model, user.Email, "Изменение пароля", string.Format("Ваш пароль был изменен на {0}", model.NewPassword) ); if(!string.IsNullOrEmpty(model.EmailDto.Error)) { model.Error = "Пароль и e-mail был изменены успешно, однако письсмо с новым паролем не было отправлено. Ошибка: " + model.EmailDto.Error; } //AddRecordToUserLogin(user); } catch (Exception ex) { Log.Error("Exception:", ex); model.Error = "Исключение:" + ex.GetBaseException().Message; } }