包 | system.web.auth |
---|---|
继承 | class CAuthItem » CComponent |
源自 | 1.0 |
版本 | $Id: CAuthItem.PHP 3442 2011-11-09 02:48:50Z alexander.makarow $ |
源码 |
CAuthItem代表的授权项目。
一个授权项目可以是一个操作,一个任务,或者是一个角色。
他们形成一个授权的层级关系。在这个层级里面,
高层继承了低层的权限。
一个用户可以授权一个或者多个项目(称之为任务)。
他只能访问那些已经授权的项目。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
authManager | IAuthManager | 授权管理器 | CAuthItem |
bizRule | string | 这个任务关联的业务规则。 | CAuthItem |
children | array | 返回这个项目的所有子项目。 | CAuthItem |
data | mixed | 这个任务的额外的数据。 | CAuthItem |
description | string | 项目描述 | CAuthItem |
name | string | 项目名字。 | CAuthItem |
type | integer | 授权项目类型。包括0(操作),1(任务)或者2(角色)。 | CAuthItem |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__construct() | 构造方法。 | CAuthItem |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__unset() | 设置一个组件的属性为null。 | CComponent |
addChild() | 添加一个子项目。 | CAuthItem |
asa() | 返回这个名字的行为对象。 | CComponent |
assign() | 将这个项目赋予给用户。 | CAuthItem |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
checkAccess() | 检查指定的项目是否在当前这个项目的层级里面。 | CAuthItem |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaLuateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
getAssignment() | 返回赋予的项目任务信息 | CAuthItem |
getAuthManager() | 返回授权管理器 | CAuthItem |
getBizRule() | 返回这个任务关联的业务规则。 | CAuthItem |
getChildren() | 返回这个项目的所有子项目。 | CAuthItem |
getData() | 返回这个任务的额外的数据。 | CAuthItem |
getDescription() | 返回项目描述 | CAuthItem |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getName() | 返回项目名字。 | CAuthItem |
getType() | 返回授权项目类型。包括0(操作),1(任务)或者2(角色)。 | CAuthItem |
hasChild() | 返回一个值说明这个子项目是否存在 | CAuthItem |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
isAssigned() | 返回值说明这个项目是否已经赋予给用户。 | CAuthItem |
raiseEvent() | 发起一个事件。 | CComponent |
removeChild() | 移除子项目。 | CAuthItem |
revoke() | 撤消用户的授权任务。 | CAuthItem |
setBizRule() | 设置这个任务关联的业务规则。 | CAuthItem |
setData() | 设置这个任务的额外的数据。 | CAuthItem |
setDescription() | 设置项目描述 | CAuthItem |
setName() | 设置项目名字。 | CAuthItem |
属性详细
authManager
属性
只读
public IAuthManager getAuthManager()
授权管理器
bizRule
属性
public string getBizRule()
public void setBizRule(string $value)
public void setBizRule(string $value)
这个任务关联的业务规则。
children
属性
只读
public array getChildren()
返回这个项目的所有子项目。
参见
- IAuthManager::getItemChildren
data
属性
public mixed getData()
public void setData(mixed $value)
public void setData(mixed $value)
这个任务的额外的数据。
description
属性
public string getDescription()
public void setDescription(string $value)
public void setDescription(string $value)
项目描述
name
属性
public string getName()
public void setName(string $value)
public void setName(string $value)
项目名字。
type
属性
只读
public integer getType()
授权项目类型。包括0(操作),1(任务)或者2(角色)。
方法详细
__construct()
方法
public void __construct(IAuthManager $auth, string $name, integer $type, description $description='', string $bizRule=NULL, mixed $data=NULL)
| ||
$auth | IAuthManager | 授权管理器。 |
$name | string | 授权项目名字。 |
$type | integer | 授权项目类型。包括0(操作),1(任务)或者2(角色)。 |
$description | description | 项目描述。 |
$bizRule | string | 这个项目关联的业务规则。 |
$data | mixed | 这个任务的额外的数据。 |
public function __construct($auth,$name,$type,$description='',$bizRule=null,$data=null)
{
$this->_type=(int)$type;
$this->_auth=$auth;
$this->_name=$name;
$this->_description=$description;
$this->_bizRule=$bizRule;
$this->_data=$data;
}
构造方法。
addChild()
方法
public boolean addChild(string $name)
| ||
$name | string | 子项目的名字 |
{return} | boolean | 这个项目是否已经被成功添加 |
public function addChild($name)
{
return $this->_auth->addItemChild($this->_name,$name);
}
添加一个子项目。
参见
- IAuthManager::addItemChild
assign()
方法
public CAuthAssignment assign(mixed $userId, string $bizRule=NULL, mixed $data=NULL)
| ||
$userId | mixed | 用户ID(详见IWebUser::getId) |
$bizRule | string | 当调用checkAccess特别是授权项目 时要运行的业务规则。 |
$data | mixed | 随着这个任务所附带的额外数据。 |
{return} | CAuthAssignment | 授权任务信息。 |
public function assign($userId,$bizRule=null,$data=null)
{
return $this->_auth->assign($this->_name,$userId,$bizRule,$data);
}
将这个项目赋予给用户。
参见
- IAuthManager::assign
checkAccess()
方法
public boolean checkAccess(string $itemName, array $params=array (
))
| ||
$itemName | string | 要检查的项目名字。 |
$params | array | 要传递给业务规则审评的参数。 |
{return} | boolean | 指定的项目是否存在于这个项目的层级里面。 |
public function checkAccess($itemName,$params=array())
{
Yii::trace('Checking permission "'.$this->_name.'"','system.web.auth.CAuthItem');
if($this->_auth->executeBizRule($this->_bizRule,$params,$this->_data))
{
if($this->_name==$itemName)
return true;
foreach($this->_auth->getItemChildren($this->_name) as $item)
{
if($item->checkAccess($itemName,$params))
return true;
}
}
return false;
}
检查指定的项目是否在当前这个项目的层级里面。 这个方法是IAuthManager::checkAccess内部使用的。
getAssignment()
方法
public CAuthAssignment getAssignment(mixed $userId)
| ||
$userId | mixed | 用户ID (详见IWebUser::getId) |
{return} | CAuthAssignment | 赋予的项目的信息。返回Null 意味着这个项目没有赋予给用户。 |
public function getAssignment($userId)
{
return $this->_auth->getAuthAssignment($this->_name,$userId);
}
返回赋予的项目任务信息
参见
- IAuthManager::getAuthAssignment
getAuthManager()
方法
public IAuthManager getAuthManager()
| ||
{return} | IAuthManager | 授权管理器 |
public function getAuthManager()
{
return $this->_auth;
}
getBizRule()
方法
public string getBizRule()
| ||
{return} | string | 这个任务关联的业务规则。 |
public function getBizRule()
{
return $this->_bizRule;
}
getChildren()
方法
public array getChildren()
| ||
{return} | array | 这个项目的所有子项目。 |
public function getChildren()
{
return $this->_auth->getItemChildren($this->_name);
}
返回这个项目的所有子项目。
参见
- IAuthManager::getItemChildren
getData()
方法
public mixed getData()
| ||
{return} | mixed | 这个任务的额外的数据。 |
public function getData()
{
return $this->_data;
}
getDescription()
方法
public string getDescription()
| ||
{return} | string | 项目描述 |
public function getDescription()
{
return $this->_description;
}
getName()
方法
public string getName()
| ||
{return} | string | 项目名字。 |
public function getName()
{
return $this->_name;
}
getType()
方法
public integer getType()
| ||
{return} | integer | 授权项目类型。包括0(操作),1(任务)或者2(角色)。 |
public function getType()
{
return $this->_type;
}
hasChild()
方法
public boolean hasChild(string $name)
| ||
$name | string | 子项目名字 |
{return} | boolean | 这个子项目是否存在 |
public function hasChild($name)
{
return $this->_auth->hasItemChild($this->_name,$name);
}
返回一个值说明这个子项目是否存在
参见
- IAuthManager::hasItemChild
isAssigned()
方法
public boolean isAssigned(mixed $userId)
| ||
$userId | mixed | 用户ID (详见IWebUser::getId) |
{return} | boolean | 如果项目已经赋予给用户,则抛出异常。 |
public function isAssigned($userId)
{
return $this->_auth->isAssigned($this->_name,$userId);
}
返回值说明这个项目是否已经赋予给用户。
参见
- IAuthManager::isAssigned
removeChild()
方法
public boolean removeChild(string $name)
| ||
$name | string | 子项目名字 |
{return} | boolean | 返回是否删除成功 |
public function removeChild($name)
{
return $this->_auth->removeItemChild($this->_name,$name);
}
移除子项目。 要注意的是,子项目是没有被删除的。只是它跟父项目的关系解。
参见
- IAuthManager::removeItemChild
revoke()
方法
public boolean revoke(mixed $userId)
| ||
$userId | mixed | 用户ID (详见IWebUser::getId) |
{return} | boolean | 是否已经移除成功 |
public function revoke($userId)
{
$this->_auth->revoke($this->_name,$userId);
}
撤消用户的授权任务。
参见
- IAuthManager::revoke
setBizRule()
方法
public void setBizRule(string $value)
| ||
$value | string | 这个任务关联的业务规则。 |
public function setBizRule($value)
{
if($this->_bizRule!==$value)
{
$this->_bizRule=$value;
$this->_auth->saveAuthItem($this);
}
}
setData()
方法
public void setData(mixed $value)
| ||
$value | mixed | 这个任务的额外的数据。 |
public function setData($value)
{
if($this->_data!==$value)
{
$this->_data=$value;
$this->_auth->saveAuthItem($this);
}
}
setDescription()
方法
public void setDescription(string $value)
| ||
$value | string | 项目描述 |
public function setDescription($value)
{
if($this->_description!==$value)
{
$this->_description=$value;
$this->_auth->saveAuthItem($this);
}
}
setName()
方法
public void setName(string $value)
| ||
$value | string | 项目名字。 |
public function setName($value)
{
if($this->_name!==$value)
{
$oldName=$this->_name;
$this->_name=$value;
$this->_auth->saveAuthItem($this,$oldName);
}
}