Example #1
0
 public void CheckAndSetUserId(ChangePasswordModel model)
 {
     int? userId = AuthenticationService.GetUserIdFromChangePasswordCookue();
     if (!userId.HasValue)
         throw new FormatException("Доступ к странице запрещен.");
     model.UserId = userId.Value;
 }
Example #2
0
 protected bool ValidateModel(ChangePasswordModel model)
 {
     return ModelState.IsValid;
 }
Example #3
0
 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");
 }
Example #4
0
 public ActionResult ChangePassword()
 {
     ChangePasswordModel model = new ChangePasswordModel();
     LoginBl.CheckAndSetUserId(model);
     return View(model);
 }
Example #5
0
 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;
     }
 }