包 | 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
属性
这个任务关联的业务规则。
children
属性
只读
public array getChildren()
返回这个项目的所有子项目。
data
属性
这个任务的额外的数据。
description
属性
项目描述
name
属性
项目名字。
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);
}
添加一个子项目。
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);
}
将这个项目赋予给用户。
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);
}
返回赋予的项目任务信息
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);
}
返回这个项目的所有子项目。
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);
}
返回一个值说明这个子项目是否存在
isAssigned()
方法
public boolean isAssigned(mixed $userId)
| ||
$userId | mixed | 用户ID (详见IWebUser::getId) |
{return} | boolean | 如果项目已经赋予给用户,则抛出异常。 |
public function isAssigned($userId)
{
return $this->_auth->isAssigned($this->_name,$userId);
}
返回值说明这个项目是否已经赋予给用户。
removeChild()
方法
public boolean removeChild(string $name)
| ||
$name | string | 子项目名字 |
{return} | boolean | 返回是否删除成功 |
public function removeChild($name)
{
return $this->_auth->removeItemChild($this->_name,$name);
}
移除子项目。 要注意的是,子项目是没有被删除的。只是它跟父项目的关系解。
revoke()
方法
public boolean revoke(mixed $userId)
| ||
$userId | mixed | 用户ID (详见IWebUser::getId) |
{return} | boolean | 是否已经移除成功 |
public function revoke($userId)
{
$this->_auth->revoke($this->_name,$userId);
}
撤消用户的授权任务。
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);
}
}