users = $users; $this->settings = $settings; $this->queue = $queue; $this->url = $url; $this->translator = $translator; $this->validatorFactory = $validatorFactory; } /** * @param RequestPasswordReset $command * @return \Flarum\User\User * @throws ModelNotFoundException */ public function handle(RequestPasswordReset $command) { $email = $command->email; $validation = $this->validatorFactory->make( compact('email'), ['email' => 'required|email'] ); if ($validation->fails()) { throw new ValidationException($validation); } $user = $this->users->findByEmail($email); if (! $user) { throw new ModelNotFoundException; } $token = PasswordToken::generate($user->id); $token->save(); $data = [ 'username' => $user->display_name, 'url' => $this->url->to('forum')->route('resetPassword', ['token' => $token->token]), 'forum' => $this->settings->get('forum_title'), ]; $body = $this->translator->trans('core.email.reset_password.body', $data); $subject = $this->translator->trans('core.email.reset_password.subject'); $this->queue->push(new SendRawEmailJob($user->email, $subject, $body)); return $user; } }