CAuthItem


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 属性 只读

授权管理器

bizRule 属性
public string getBizRule()
public void setBizRule(string $value)

这个任务关联的业务规则。

children 属性 只读
public array getChildren()

返回这个项目的所有子项目。

data 属性
public mixed getData()
public void setData(mixed $value)

这个任务的额外的数据。

description 属性
public string getDescription()
public void setDescription(string $value)

项目描述

name 属性
public string getName()
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);
}

添加一个子项目。

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);
    }
}