/var/www/vhosts/nabawater/vendor/dektrium/yii2-user/models
NameSizeModeActions
query/-0755rm
Account.php62690644editdlrm
LoginForm.php50920644editdlrm
Profile.php48050644editdlrm
RecoveryForm.php36950644editdlrm
RegistrationForm.php37850644editdlrm
ResendForm.php25420644editdlrm
SettingsForm.php64520644editdlrm
Token.php29670644editdlrm
User.php177590644editdlrm
UserSearch.php29660644editdlrm
Edit: /var/www/vhosts/nabawater/vendor/dektrium/yii2-user/models/LoginForm.php (5092B)
* * 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 */ 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; } } }