userQuery = $userQuery; $this->tokenQuery = $tokenQuery; parent::__construct($id, $module, $config); } /** * @inheritdoc */ public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'actions' => ['request', 'reset'], 'roles' => ['?'] ], ], ], ]; } public function actionRequest() { if (!$this->getModule()->allowPasswordRecovery) { throw new NotFoundHttpException(); } /** @var RecoveryForm $form */ $form = $this->make(RecoveryForm::class, ['scenario' => RecoveryForm::SCENARIO_REQUEST]); $event = $this->make(FormEvent::class, [$form]); $this->make(AjaxRequestModelValidator::class, $form)->validate(); $this->trigger(FormEvent::EVENT_BEFORE_REQUEST, $event); if ($form->load(Yii::$app->request->post())) { $mailService = MailFactory::makeRecoveryMailerService($form->email); if ($this->make(PasswordRecoveryService::class, [$form->email, $mailService])->run()) { $this->trigger(FormEvent::EVENT_AFTER_REQUEST, $event); return $this->render( 'message', [ 'title' => Yii::t('user', 'Recovery message sent'), 'module' => $this->getModule(), ] ); } } return $this->render('request', ['model' => $form,]); } }