summaryrefslogtreecommitdiff
path: root/framework/web/auth/CBaseUserIdentity.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/web/auth/CBaseUserIdentity.php')
-rw-r--r--framework/web/auth/CBaseUserIdentity.php132
1 files changed, 132 insertions, 0 deletions
diff --git a/framework/web/auth/CBaseUserIdentity.php b/framework/web/auth/CBaseUserIdentity.php
new file mode 100644
index 0000000..c2bf4e3
--- /dev/null
+++ b/framework/web/auth/CBaseUserIdentity.php
@@ -0,0 +1,132 @@
+<?php
+/**
+ * CBaseUserIdentity class file
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @link http://www.yiiframework.com/
+ * @copyright Copyright &copy; 2008-2011 Yii Software LLC
+ * @license http://www.yiiframework.com/license/
+ */
+
+/**
+ * CBaseUserIdentity is a base class implementing {@link IUserIdentity}.
+ *
+ * CBaseUserIdentity implements the scheme for representing identity
+ * information that needs to be persisted. It also provides the way
+ * to represent the authentication errors.
+ *
+ * Derived classes should implement {@link IUserIdentity::authenticate}
+ * and {@link IUserIdentity::getId} that are required by the {@link IUserIdentity}
+ * interface.
+ *
+ * @property mixed $id A value that uniquely represents the identity (e.g. primary key value).
+ * The default implementation simply returns {@link name}.
+ * @property string $name The display name for the identity.
+ * The default implementation simply returns empty string.
+ * @property array $persistentStates The identity states that should be persisted.
+ * @property whether $isAuthenticated The authentication is successful.
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @version $Id: CBaseUserIdentity.php 3515 2011-12-28 12:29:24Z mdomba $
+ * @package system.web.auth
+ * @since 1.0
+ */
+abstract class CBaseUserIdentity extends CComponent implements IUserIdentity
+{
+ const ERROR_NONE=0;
+ const ERROR_USERNAME_INVALID=1;
+ const ERROR_PASSWORD_INVALID=2;
+ const ERROR_UNKNOWN_IDENTITY=100;
+
+ /**
+ * @var integer the authentication error code. If there is an error, the error code will be non-zero.
+ * Defaults to 100, meaning unknown identity. Calling {@link authenticate} will change this value.
+ */
+ public $errorCode=self::ERROR_UNKNOWN_IDENTITY;
+ /**
+ * @var string the authentication error message. Defaults to empty.
+ */
+ public $errorMessage='';
+
+ private $_state=array();
+
+ /**
+ * Returns a value that uniquely represents the identity.
+ * @return mixed a value that uniquely represents the identity (e.g. primary key value).
+ * The default implementation simply returns {@link name}.
+ */
+ public function getId()
+ {
+ return $this->getName();
+ }
+
+ /**
+ * Returns the display name for the identity (e.g. username).
+ * @return string the display name for the identity.
+ * The default implementation simply returns empty string.
+ */
+ public function getName()
+ {
+ return '';
+ }
+
+ /**
+ * Returns the identity states that should be persisted.
+ * This method is required by {@link IUserIdentity}.
+ * @return array the identity states that should be persisted.
+ */
+ public function getPersistentStates()
+ {
+ return $this->_state;
+ }
+
+ /**
+ * Sets an array of presistent states.
+ *
+ * @param array $states the identity states that should be persisted.
+ */
+ public function setPersistentStates($states)
+ {
+ $this->_state = $states;
+ }
+
+ /**
+ * Returns a value indicating whether the identity is authenticated.
+ * This method is required by {@link IUserIdentity}.
+ * @return whether the authentication is successful.
+ */
+ public function getIsAuthenticated()
+ {
+ return $this->errorCode==self::ERROR_NONE;
+ }
+
+ /**
+ * Gets the persisted state by the specified name.
+ * @param string $name the name of the state
+ * @param mixed $defaultValue the default value to be returned if the named state does not exist
+ * @return mixed the value of the named state
+ */
+ public function getState($name,$defaultValue=null)
+ {
+ return isset($this->_state[$name])?$this->_state[$name]:$defaultValue;
+ }
+
+ /**
+ * Sets the named state with a given value.
+ * @param string $name the name of the state
+ * @param mixed $value the value of the named state
+ */
+ public function setState($name,$value)
+ {
+ $this->_state[$name]=$value;
+ }
+
+ /**
+ * Removes the specified state.
+ * @param string $name the name of the state
+ */
+ public function clearState($name)
+ {
+ unset($this->_state[$name]);
+ }
+}