summaryrefslogtreecommitdiff
path: root/protected/models/LoginForm.php
diff options
context:
space:
mode:
authorPatrick Seeger <pseeger@ccwn.org>2012-04-13 23:44:38 +0200
committerPatrick Seeger <pseeger@ccwn.org>2012-04-13 23:44:38 +0200
commit69bffb7fe85347621f41c0baed839452e72930e1 (patch)
tree8446bced1732932fd741e91ff8dba88b1e56693b /protected/models/LoginForm.php
parenta098922f681a9a1362202580a26b132501df4b1b (diff)
Erstes Yii Projekt
Diffstat (limited to '')
-rw-r--r--protected/models/LoginForm.php77
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;
+ }
+}