/**
  * @param Request $request
  * @param array $routeParams
  * @return \Illuminate\Contracts\View\View
  */
 public function render(Request $request, array $routeParams = [])
 {
     $token = array_get($routeParams, 'token');
     $token = PasswordToken::findOrFail($token);
     if ($token->created_at < new DateTime('-1 day')) {
         throw new InvalidConfirmationTokenException();
     }
     return $this->view->make('flarum::reset')->with('token', $token->id);
 }
 /**
  * @param Request $request
  * @param array $routeParams
  * @return \Zend\Diactoros\Response\RedirectResponse
  */
 public function handle(Request $request, array $routeParams = [])
 {
     $input = $request->getParsedBody();
     $token = PasswordToken::findOrFail(array_get($input, 'token'));
     $password = array_get($input, 'password');
     $confirmation = array_get($input, 'password_confirmation');
     if (!$password || $password !== $confirmation) {
         return $this->redirectTo('/reset/' . $token->id);
         // TODO: Use UrlGenerator
     }
     $token->user->changePassword($password);
     $token->user->save();
     $token->delete();
     return $this->redirectTo('/');
 }
 /**
  * @param RequestPasswordReset $command
  * @return \Flarum\Core\Users\User
  * @throws ModelNotFoundException
  */
 public function handle(RequestPasswordReset $command)
 {
     $user = $this->users->findByEmail($command->email);
     if (!$user) {
         throw new ModelNotFoundException();
     }
     $token = PasswordToken::generate($user->id);
     $token->save();
     // TODO: Need to use UrlGenerator, but since this is part of core we
     // don't know that the forum routes will be loaded. Should the reset
     // password route be part of core??
     $data = ['username' => $user->username, 'url' => Core::url() . '/reset/' . $token->id, 'forumTitle' => $this->settings->get('forum_title')];
     $this->mailer->send(['text' => 'flarum::emails.resetPassword'], $data, function (Message $message) use($user) {
         $message->to($user->email);
         $message->subject('Reset Your Password');
     });
     return $user;
 }