%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
| Server IP : 14.207.165.8 / Your IP : 216.73.216.26 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/ppaobm/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,
]);
}
}