Your IP : 216.73.216.48
<?php
namespace app\models\forms;
use Yii;
use yii\base\Model;
use app\models\Members;
use app\models\MembersRestrictedIps;
class LoginForm extends Model {
public $username;
public $password;
public $rememberMe = true;
private $_user = false;
public function rules() {
return [
[['username', 'password'], 'required'],
['rememberMe', 'boolean'],
['password', 'validatePassword'],
];
}
public function attributeLabels() {
return [
'username' => Yii::t('app', 'Потребителско име'),
'password' => Yii::t('app', 'Парола'),
'rememberMe' => Yii::t('app', 'Запомни ме')
];
}
public function validatePassword($attribute, $params) {
if (!$this->hasErrors()) {
$user = $this->getMember();
if (!$user || !$user->validatePassword($this->password)) {
$this->addError($attribute, 'Невалидно потребителско име или парола.');
}
}
}
public function login() {
$restrictedIps = new MembersRestrictedIps();
if ($this->validate() && $restrictedIps->getRestrictedIps(['member_id' => $this->getMember()->member_id, 'ip_address' => ip2long(Yii::$app->request->userIP)])->count() == 0) {
return Yii::$app->user->login($this->getMember(), $this->rememberMe ? 3600 * 24 * 30 : 0);
} else {
return false;
}
}
public function getMember() {
if ($this->_user === false) {
$this->_user = Members::findByUsername($this->username);
}
return $this->_user;
}
}