%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.149 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/water/vendor/dektrium/yii2-user/controllers/ |
Upload File : |
<?php /* * This file is part of the Dektrium project. * * (c) Dektrium project <http://github.com/dektrium/> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace dektrium\user\controllers; use dektrium\user\Finder; use dektrium\user\models\RegistrationForm; use dektrium\user\models\ResendForm; use dektrium\user\models\User; use dektrium\user\traits\AjaxValidationTrait; use dektrium\user\traits\EventTrait; use yii\filters\AccessControl; use yii\web\Controller; use yii\web\NotFoundHttpException; /** * RegistrationController is responsible for all registration process, which includes registration of a new account, * resending confirmation tokens, email confirmation and registration via social networks. * * @property \dektrium\user\Module $module * * @author Dmitry Erofeev <dmeroff@gmail.com> */ class RegistrationController extends Controller { use AjaxValidationTrait; use EventTrait; /** * Event is triggered after creating RegistrationForm class. * Triggered with \dektrium\user\events\FormEvent. */ const EVENT_BEFORE_REGISTER = 'beforeRegister'; /** * Event is triggered after successful registration. * Triggered with \dektrium\user\events\FormEvent. */ const EVENT_AFTER_REGISTER = 'afterRegister'; /** * Event is triggered before connecting user to social account. * Triggered with \dektrium\user\events\UserEvent. */ const EVENT_BEFORE_CONNECT = 'beforeConnect'; /** * Event is triggered after connecting user to social account. * Triggered with \dektrium\user\events\UserEvent. */ const EVENT_AFTER_CONNECT = 'afterConnect'; /** * Event is triggered before confirming user. * Triggered with \dektrium\user\events\UserEvent. */ const EVENT_BEFORE_CONFIRM = 'beforeConfirm'; /** * Event is triggered before confirming user. * Triggered with \dektrium\user\events\UserEvent. */ const EVENT_AFTER_CONFIRM = 'afterConfirm'; /** * Event is triggered after creating ResendForm class. * Triggered with \dektrium\user\events\FormEvent. */ const EVENT_BEFORE_RESEND = 'beforeResend'; /** * Event is triggered after successful resending of confirmation email. * Triggered with \dektrium\user\events\FormEvent. */ const EVENT_AFTER_RESEND = 'afterResend'; /** @var Finder */ protected $finder; /** * @param string $id * @param \yii\base\Module $module * @param Finder $finder * @param array $config */ public function __construct($id, $module, Finder $finder, $config = []) { $this->finder = $finder; parent::__construct($id, $module, $config); } /** @inheritdoc */ public function behaviors() { return [ 'access' => [ 'class' => AccessControl::className(), 'rules' => [ ['allow' => true, 'actions' => ['register', 'connect'], 'roles' => ['?']], ['allow' => true, 'actions' => ['confirm', 'resend'], 'roles' => ['?', '@']], ], ], ]; } /** * Displays the registration page. * After successful registration if enableConfirmation is enabled shows info message otherwise * redirects to home page. * * @return string * @throws \yii\web\HttpException */ public function actionRegister() { if (!$this->module->enableRegistration) { throw new NotFoundHttpException(); } /** @var RegistrationForm $model */ $model = \Yii::createObject(RegistrationForm::className()); $event = $this->getFormEvent($model); $this->trigger(self::EVENT_BEFORE_REGISTER, $event); $this->performAjaxValidation($model); if ($model->load(\Yii::$app->request->post()) && $model->register()) { $this->trigger(self::EVENT_AFTER_REGISTER, $event); return $this->render('/message', [ 'title' => \Yii::t('user', 'Your account has been created'), 'module' => $this->module, ]); } return $this->render('register', [ 'model' => $model, 'module' => $this->module, ]); } /** * Displays page where user can create new account that will be connected to social account. * * @param string $code * * @return string * @throws NotFoundHttpException */ public function actionConnect($code) { $account = $this->finder->findAccount()->byCode($code)->one(); if ($account === null || $account->getIsConnected()) { throw new NotFoundHttpException(); } /** @var User $user */ $user = \Yii::createObject([ 'class' => User::className(), 'scenario' => 'connect', 'username' => $account->username, 'email' => $account->email, ]); $event = $this->getConnectEvent($account, $user); $this->trigger(self::EVENT_BEFORE_CONNECT, $event); if ($user->load(\Yii::$app->request->post()) && $user->create()) { $account->connect($user); $this->trigger(self::EVENT_AFTER_CONNECT, $event); \Yii::$app->user->login($user, $this->module->rememberFor); return $this->goBack(); } return $this->render('connect', [ 'model' => $user, 'account' => $account, ]); } /** * Confirms user's account. If confirmation was successful logs the user and shows success message. Otherwise * shows error message. * * @param int $id * @param string $code * * @return string * @throws \yii\web\HttpException */ public function actionConfirm($id, $code) { $user = $this->finder->findUserById($id); if ($user === null || $this->module->enableConfirmation == false) { throw new NotFoundHttpException(); } $event = $this->getUserEvent($user); $this->trigger(self::EVENT_BEFORE_CONFIRM, $event); $user->attemptConfirmation($code); $this->trigger(self::EVENT_AFTER_CONFIRM, $event); return $this->render('/message', [ 'title' => \Yii::t('user', 'Account confirmation'), 'module' => $this->module, ]); } /** * Displays page where user can request new confirmation token. If resending was successful, displays message. * * @return string * @throws \yii\web\HttpException */ public function actionResend() { if ($this->module->enableConfirmation == false) { throw new NotFoundHttpException(); } /** @var ResendForm $model */ $model = \Yii::createObject(ResendForm::className()); $event = $this->getFormEvent($model); $this->trigger(self::EVENT_BEFORE_RESEND, $event); $this->performAjaxValidation($model); if ($model->load(\Yii::$app->request->post()) && $model->resend()) { $this->trigger(self::EVENT_AFTER_RESEND, $event); return $this->render('/message', [ 'title' => \Yii::t('user', 'A new confirmation link has been sent'), 'module' => $this->module, ]); } return $this->render('resend', [ 'model' => $model, ]); } }