%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/models/ |
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\models;
use dektrium\user\Finder;
use dektrium\user\helpers\Password;
use dektrium\user\traits\ModuleTrait;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use Yii;
use yii\base\Model;
/**
* LoginForm get user's login and password, validates them and logs the user in. If user has been blocked, it adds
* an error to login form.
*
* @author Dmitry Erofeev <dmeroff@gmail.com>
*/
class LoginForm extends Model
{
use ModuleTrait;
/** @var string User's email or username */
public $login;
/** @var string User's plain password */
public $password;
/** @var string Whether to remember the user */
public $rememberMe = false;
/** @var \dektrium\user\models\User */
protected $user;
/** @var Finder */
protected $finder;
/**
* @param Finder $finder
* @param array $config
*/
public function __construct(Finder $finder, $config = [])
{
$this->finder = $finder;
parent::__construct($config);
}
/**
* Gets all users to generate the dropdown list when in debug mode.
*
* @return array
*/
public static function loginList()
{
/** @var \dektrium\user\Module $module */
$module = \Yii::$app->getModule('user');
$userModel = $module->modelMap['User'];
return ArrayHelper::map($userModel::find()->where(['blocked_at' => null])->all(), 'username', function ($user) {
return sprintf('%s (%s)', Html::encode($user->username), Html::encode($user->email));
});
}
/** @inheritdoc */
public function attributeLabels()
{
return [
'login' => Yii::t('user', 'Login'),
'password' => Yii::t('user', 'Password'),
'rememberMe' => Yii::t('user', 'Remember me next time'),
];
}
/** @inheritdoc */
public function rules()
{
$rules = [
'loginTrim' => ['login', 'trim'],
'requiredFields' => [['login'], 'required'],
'confirmationValidate' => [
'login',
function ($attribute) {
if ($this->user !== null) {
$confirmationRequired = $this->module->enableConfirmation
&& !$this->module->enableUnconfirmedLogin;
if ($confirmationRequired && !$this->user->getIsConfirmed()) {
$this->addError($attribute, Yii::t('user', 'You need to confirm your email address'));
}
if ($this->user->getIsBlocked()) {
$this->addError($attribute, Yii::t('user', 'Your account has been blocked'));
}
}
}
],
'rememberMe' => ['rememberMe', 'boolean'],
];
if (!$this->module->debug) {
$rules = array_merge($rules, [
'requiredFields' => [['login', 'password'], 'required'],
'passwordValidate' => [
'password',
function ($attribute) {
if ($this->user === null || !Password::validate($this->password, $this->user->password_hash)) {
$this->addError($attribute, Yii::t('user', 'Invalid login or password'));
}
}
]
]);
}
return $rules;
}
/**
* Validates if the hash of the given password is identical to the saved hash in the database.
* It will always succeed if the module is in DEBUG mode.
*
* @return void
*/
public function validatePassword($attribute, $params)
{
if ($this->user === null || !Password::validate($this->password, $this->user->password_hash))
$this->addError($attribute, Yii::t('user', 'Invalid login or password'));
}
/**
* Validates form and logs the user in.
*
* @return bool whether the user is logged in successfully
*/
public function login()
{
if ($this->validate() && $this->user) {
$isLogged = Yii::$app->getUser()->login($this->user, $this->rememberMe ? $this->module->rememberFor : 0);
if ($isLogged) {
$this->user->updateAttributes(['last_login_at' => time()]);
}
return $isLogged;
}
return false;
}
/** @inheritdoc */
public function formName()
{
return 'login-form';
}
/** @inheritdoc */
public function beforeValidate()
{
if (parent::beforeValidate()) {
$this->user = $this->finder->findUserByUsernameOrEmail(trim($this->login));
return true;
} else {
return false;
}
}
}