| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- use CFormModel;
- use UserIdentity;
- use Yii;
- /**
- * LoginForm class.
- * LoginForm is the data structure for keeping
- * user login form data. It is used by the 'login' action of 'SiteController'.
- */
- class LoginForm extends CFormModel
- {
- public $username;
- public $password;
- public $rememberMe;
- private $_identity;
- /**
- * Declares the validation rules.
- * The rules state that username and password are required,
- * and password needs to be authenticated.
- */
- public function rules()
- {
- return array(
- // username and password are required
- array('username, password', 'required'),
- // rememberMe needs to be a boolean
- array('rememberMe', 'boolean'),
- // password needs to be authenticated
- array('password', 'authenticate'),
- );
- }
- /**
- * Declares attribute labels.
- */
- public function attributeLabels()
- {
- return array(
- 'username' => '用户名',
- 'password' => '密码',
- 'rememberMe' => '记住我的登录状态',
- );
- }
- /**
- * Authenticates the password.
- * This is the 'authenticate' validator as declared in rules().
- */
- public function authenticate($attribute, $params)
- {
- if (!$this->hasErrors()) {
- $this->_identity = new UserIdentity($this->username, $this->password);
- if (!$this->_identity->authenticate()) {
- $this->addError('password', 'Incorrect username or password.');
- }
- }
- }
- /**
- * 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 * 48 : 0; // 48 小时
- Yii::app()->user->login($this->_identity, $duration);
- return true;
- } else {
- return false;
- }
- }
- }
|