Промежуточное ПО Laravel 5.1 для проверки даты создания пользователя для смены пароля

Я разрабатываю веб-приложение с Laravel 5.1, и я создаю систему аутентификации, и мне нужно проверить, не изменил ли пользователь свой пароль в течение шести или более месяцев, и я бы использовал промежуточное программное обеспечение, чтобы проверить это, но я не нашел как я могу сделать это правильно. Я создал глобальное промежуточное ПО, но оно не работает, потому что я не могу получить аутентифицированного пользователя.

Возможно, мне придется использовать AfterMiddleware для проверки пароля?


person xmarston    schedule 28.10.2015    source источник


Ответы (2)


Сначала объясните/укажите, когда вы хотите, чтобы пользователь заставил пользователя изменить пароль? Во время аутентификации или после успешной аутентификации? тогда я могу дать вам решение

person msonowal    schedule 28.10.2015
comment
Во время аутентификации, потому что я хочу получить пользователя и перенаправить его в режим сброса пароля, но мне нужно знать, что это действительный пользователь. - person xmarston; 28.10.2015

тогда вам нужно перезаписать метод postLogin в AuthController

публичная функция postLogin (запрос $ request) {

  $credentials  = ['email' => $request->email, 'password' => $request->password];

  if (Auth::attempt($credentials, $request->has('remember'))) {

      if((strtotime(Auth::user()->created_at) < strtotime('6 month ago'))){
        return redirect('your-reset-path);//redirect to password reset page
      }else{
        return redirect()->intended('/');
      }

  }

  return redirect($this->loginPath())
      ->withInput($request->only('email', 'remember'))
      ->withErrors([
          'email' => $this->getFailedLoginMessage(),
      ]);
  }

это сделает работу, если вы хотите проверить created_at, но вы предпочитаете использовать другое поле с отметкой времени (last_password_updated), которое будет обновляться только при изменении пароля и при первом создании, это будет более эффективно.

person msonowal    schedule 28.10.2015
comment
Ну, это то, что я делал в первую очередь, но потом я подумал, что если пользователь вводит другой URL-адрес, приложение должно проверять, изменен ли пароль не только в функции postLogin, потому что у пользователя может быть другой URL-адрес в браузере История и проверил кнопку «Запомнить меня». - person xmarston; 28.10.2015