diff options
| author | Patrick Seeger <pseeger@ccwn.org> | 2012-04-13 23:44:38 +0200 |
|---|---|---|
| committer | Patrick Seeger <pseeger@ccwn.org> | 2012-04-13 23:44:38 +0200 |
| commit | 69bffb7fe85347621f41c0baed839452e72930e1 (patch) | |
| tree | 8446bced1732932fd741e91ff8dba88b1e56693b /protected/models/LoginForm.php | |
| parent | a098922f681a9a1362202580a26b132501df4b1b (diff) | |
Erstes Yii Projekt
Diffstat (limited to '')
| -rw-r--r-- | protected/models/LoginForm.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/protected/models/LoginForm.php b/protected/models/LoginForm.php new file mode 100644 index 0000000..eb36e4a --- /dev/null +++ b/protected/models/LoginForm.php @@ -0,0 +1,77 @@ +<?php + +/** + * 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( + 'rememberMe'=>'Remember me next time', + ); + } + + /** + * 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*24*30 : 0; // 30 days + Yii::app()->user->login($this->_identity,$duration); + return true; + } + else + return false; + } +} |
