<?php
class LoginForm extends CFormModel
{
public $login;
public $password;
public $rememberMe;
/**
* @var DUserIdentity
*/
private $_identity;
public function rules()
{
return array(
array('login, password', 'required'),
array('password', 'authenticate'),
);
}
/**
* Описывает метки
*/
public function attributeLabels()
{
return array(
'login' => Yii::t('common', 'Логин'),
'password' => Yii::t('common', 'Пароль'),
);
}
public function authenticate($attribute, $params)
{
$this->_identity = new DUserIdentity($this->login, $this->password);
if (!$this->_identity->authenticate()) {
$this->addError('password', 'Неправильный логин или пароль.');
}
}
public function getIdentity()
{
return $this->_identity;
}
/**
* Logs in the user using the given username and password in the model.
* @return boolean whether login is successful
*/
public function login()
{
if($this->_identity===null)
{
$this->_identity=new UserIdentity($this->username,$this->password);
$this->_identity->authenticate();
}
if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
{
$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
Yii::app()->user->login($this->_identity,$duration);
return true;
}
else
return false;
}}