email = $email; $this->mailService = $mailService; $this->query = $query; $this->logger = $logger; } public function run() { try { /** @var User $user */ $user = $this->query->whereEmail($this->email)->one(); $token = TokenFactory::makeRecoveryToken($user->id); if (!$token) { return false; } $this->mailService->setViewParam('user', $user); $this->mailService->setViewParam('token', $token); if (!$this->mailService->run()) { return false; } Yii::$app->session->setFlash( 'info', Yii::t('usuario', 'An email has been sent with instructions for resetting your password') ); return true; } catch (Exception $e) { $this->logger->log($e->getMessage(), Logger::LEVEL_ERROR); return false; } } }