Spec-Zone.ru › Yii 1.1

CDbAuthManager

Пакет system.web.auth
Наследование класс CDbAuthManager » CAuthManager » CApplicationComponent » CComponent
Реализует IAuthManager, IApplicationComponent
С версии 1.0
Исходный код framework/web/auth/CDbAuthManager.php
CDbAuthManager представляет менеджер авторизации, который хранит информацию об авторизации в базе данных.

Подключение к базе данных задается параметром connectionID. Структура базы данных должна соответствовать описанию в "framework/web/auth/*.sql". Вы можете изменить имена трех таблиц, используемых для хранения данных об авторизации, установив itemTable, itemChildTable и assignmentTable.

Свойства public

Свойство Тип Описание Определено
assignmentTable строка имя таблицы, хранящей назначения элементов авторизации. CDbAuthManager
authItems массив Возвращает элементы авторизации определенного типа и пользователя. CDbAuthManager
behaviors массив поведения, которые должны быть присоединены к данному компоненту. CApplicationComponent
connectionID строка идентификатор компонента приложения CDbConnection. CDbAuthManager
db CDbConnection подключение к базе данных. CDbAuthManager
defaultRoles массив список имен ролей, которые неявно назначаются всем пользователям. CAuthManager
isInitialized логическое Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
itemChildTable строка имя таблицы, хранящей иерархию элементов авторизации. CDbAuthManager
itemTable строка имя таблицы, хранящей элементы авторизации. CDbAuthManager
operations массив Возвращает операции. CAuthManager
roles массив Возвращает роли. CAuthManager
showErrors логическое Включить вывод сообщений об ошибках для bizRules. CAuthManager
tasks массив Возвращает задачи. CAuthManager

Свойства protected

Свойство Тип Описание Определено
dbConnection CDbConnection экземпляр подключения к БД CDbAuthManager

Общедоступные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в нулевое значение. CComponent
addItemChild() Добавляет элемент как дочерний к другому элементу. CDbAuthManager
asa() Возвращает объект поведения с указанным именем. CComponent
assign() Присваивает элемент авторизации пользователю. CDbAuthManager
attachBehavior() Присоединяет поведение к этому компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик событий к событию. CComponent
canGetProperty() Определяет, можно ли считать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
checkAccess() Выполняет проверку доступа для указанного пользователя. CDbAuthManager
clearAll() Удаляет все данные авторизации. CDbAuthManager
clearAuthAssignments() Удаляет все назначения авторизации. CDbAuthManager
createAuthItem() Создает элемент авторизации. CDbAuthManager
createOperation() Создает операцию. CAuthManager
createRole() Создает роль. CAuthManager
createTask() Создает задачу. CAuthManager
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает присоединенное поведение. CComponent
disableBehaviors() Отключает все присоединённые поведения к этому компоненту. CComponent
enableBehavior() Включает присоединенное поведение. CComponent
enableBehaviors() Включает все присоединённые поведения к этому компоненту. CComponent
evaluateExpression() Вычисляет PHP выражение или обратный вызов в контексте этого компонента. CComponent
executeBizRule() Выполняет указанное правило бизнеса. CAuthManager
getAuthAssignment() Возвращает информацию о назначении элемента. CDbAuthManager
getAuthAssignments() Возвращает назначения элементов для указанного пользователя. CDbAuthManager
getAuthItem() Возвращает элемент авторизации с указанным именем. CDbAuthManager
getAuthItems() Возвращает элементы авторизации определённого типа и пользователя. CDbAuthManager
getEventHandlers() Возвращает список присоединённых обработчиков событий для события. CComponent
getIsInitialized() Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
getItemChildren() Возвращает дочерние элементы указанного элемента. CDbAuthManager
getOperations() Возвращает операции. CAuthManager
getRoles() Возвращает роли. CAuthManager
getTasks() Возвращает задачи. CAuthManager
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли присоединённые обработчики к событию с указанным именем. CComponent
hasItemChild() Возвращает значение, указывающее, существует ли дочерний элемент внутри родительского. CDbAuthManager
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует компонент приложения. CDbAuthManager
isAssigned() Возвращает значение, указывающее, был ли элемент назначен пользователю. CDbAuthManager
raiseEvent() Вызывает событие. CComponent
removeAuthItem() Удаляет указанный элемент авторизации. CDbAuthManager
removeItemChild() Удаляет дочерний элемент из родителя. CDbAuthManager
revoke() Отменяет назначение авторизации для пользователя. CDbAuthManager
save() Сохраняет данные авторизации в постоянном хранилище. CDbAuthManager
saveAuthAssignment() Сохраняет изменения в назначении авторизации. CDbAuthManager
saveAuthItem() Сохраняет элемент авторизации в постоянном хранилище. CDbAuthManager

Защищенные методы

Метод Описание Определено в
checkAccessRecursive() Выполняет проверку доступа для указанного пользователя. CDbAuthManager
checkItemChildType() Проверяет типы элементов, чтобы убедиться, что дочерний элемент может быть добавлен к родителю. CAuthManager
detectLoop() Проверяет наличие цикла в иерархии элементов авторизации. CDbAuthManager
getDbConnection() Возвращает экземпляр подключения к базе данных. CDbAuthManager
usingSqlite() CDbAuthManager

Подробное описание свойств

assignmentTable свойство

public string $assignmentTable;

название таблицы, хранящей назначения элементов авторизации. По умолчанию 'AuthAssignment'.

authItems свойство только для чтения

public array getAuthItems(integer $type=NULL, mixed $userId=NULL)

Возвращает элементы авторизации определенного типа и пользователя.

connectionID свойство

public string $connectionID;

Идентификатор компонента приложения CDbConnection. По умолчанию 'db'. База данных должна иметь таблицы, как указано в "framework/web/auth/*.sql".

db свойство

public CDbConnection $db;

соединение с базой данных. По умолчанию инициализируется автоматически как компонент приложения, идентификатор которого указан как connectionID.

dbConnection свойство только для чтения

protected CDbConnection getDbConnection()

экземпляр подключения к БД

itemChildTable свойство

public string $itemChildTable;

название таблицы, хранящей иерархию элементов авторизации. По умолчанию 'AuthItemChild'.

itemTable свойство

public string $itemTable;

название таблицы, хранящей элементы авторизации. По умолчанию 'AuthItem'.

Подробное описание методов

addItemChild() метод

public boolean addItemChild(string $itemName, string $childName)
$itemName строка имя родительского элемента
$childName строка имя дочернего элемента
{return} логическое значение успешность добавления элемента
Исходный код: framework/web/auth/CDbAuthManager.php#129 (показать)
public function addItemChild($itemName,$childName)
{
    if(
$itemName===$childName)
        throw new 
CException(Yii::t('yii','Cannot add "{name}" as a child of itself.',
                array(
'{name}'=>$itemName)));

    
$rows=$this->db->createCommand()
        ->
select()
        ->
from($this->itemTable)
        ->
where('name=:name1 OR name=:name2', array(
            
':name1'=>$itemName,
            
':name2'=>$childName
        
))
        ->
queryAll();

    if(
count($rows)==2)
    {
        if(
$rows[0]['name']===$itemName)
        {
            
$parentType=$rows[0]['type'];
            
$childType=$rows[1]['type'];
        }
        else
        {
            
$childType=$rows[0]['type'];
            
$parentType=$rows[1]['type'];
        }
        
$this->checkItemChildType($parentType,$childType);
        if(
$this->detectLoop($itemName,$childName))
            throw new 
CException(Yii::t('yii','Cannot add "{child}" as a child of "{name}". A loop has been detected.',
                array(
'{child}'=>$childName,'{name}'=>$itemName)));

        
$this->db->createCommand()
            ->
insert($this->itemChildTable, array(
                
'parent'=>$itemName,
                
'child'=>$childName,
            ));

        return 
true;
    }
    else
        throw new 
CException(Yii::t('yii','Either "{parent}" or "{child}" does not exist.',array('{child}'=>$childName,'{parent}'=>$itemName)));
}

Добавляет элемент в качестве дочернего к другому элементу.

assign() метод

public CAuthAssignment assign(string $itemName, mixed $userId, string $bizRule=NULL, mixed $data=NULL)
$itemName строка имя элемента
$userId смешанный тип идентификатор пользователя (см. IWebUser::getId)
$bizRule строка правило бизнеса, выполняемое при вызове checkAccess для данного элемента авторизации.
$data смешанный тип дополнительные данные, связанные с этим назначением
{return} CAuthAssignment информация о назначении авторизации.
Исходный код: framework/web/auth/CDbAuthManager.php#252 (показать)
public function assign($itemName,$userId,$bizRule=null,$data=null)
{
    if(
$this->usingSqlite() && $this->getAuthItem($itemName)===null)
        throw new 
CException(Yii::t('yii','The item "{name}" does not exist.',array('{name}'=>$itemName)));

    
$this->db->createCommand()
        ->
insert($this->assignmentTable, array(
            
'itemname'=>$itemName,
            
'userid'=>$userId,
            
'bizrule'=>$bizRule,
            
'data'=>serialize($data)
        ));
    return new 
CAuthAssignment($this,$itemName,$userId,$bizRule,$data);
}

Назначает элемент авторизации пользователю.

checkAccess() метод

public boolean checkAccess(string $itemName, mixed $userId, array $params=array ( ))
$itemName строка имя операции, для которой требуется проверка доступа
$userId смешанный тип идентификатор пользователя. Может быть целым числом или строкой, представляющей уникальный идентификатор пользователя. См. IWebUser::getId.
$params массив параметры имя-значение, которые будут переданы правилам бизнеса, связанным с задачами и ролями, назначенными пользователю. С версии 1.1.11 в этот массив добавлен параметр с именем 'userId', который содержит значение $userId.
{return} логическое значение разрешено ли пользователю выполнить операции.
Исходный код: framework/web/auth/CDbAuthManager.php#72 (показать)
public function checkAccess($itemName,$userId,$params=array())
{
    
$assignments=$this->getAuthAssignments($userId);
    return 
$this->checkAccessRecursive($itemName,$userId,$params,$assignments);
}

Производит проверку доступа для указанного пользователя.

checkAccessRecursive() метод (доступен с v1.1.3)

protected boolean checkAccessRecursive(string $itemName, mixed $userId, array $params, array $assignments)
$itemName строка имя операции, для которой требуется проверка доступа
$userId смешанный тип идентификатор пользователя. Может быть целым числом или строкой, представляющей уникальный идентификатор пользователя. См. IWebUser::getId.
$params массив параметры имя-значение, которые будут переданы правилам бизнеса, связанным с задачами и ролями, назначенными пользователю. С версии 1.1.11 в этот массив добавлен параметр с именем 'userId', который содержит значение $userId.
$assignments массив назначения указанному пользователю
{return} логическое значение разрешено ли пользователю выполнить операции.
Исходный код: framework/web/auth/CDbAuthManager.php#91 (показать)
protected function checkAccessRecursive($itemName,$userId,$params,$assignments)
{
    if((
$item=$this->getAuthItem($itemName))===null)
        return 
false;
    
Yii::trace('Checking permission "'.$item->getName().'"','system.web.auth.CDbAuthManager');
    if(!isset(
$params['userId']))
        
$params['userId'] = $userId;
    if(
$this->executeBizRule($item->getBizRule(),$params,$item->getData()))
    {
        if(
in_array($itemName,$this->defaultRoles))
            return 
true;
        if(isset(
$assignments[$itemName]))
        {
            
$assignment=$assignments[$itemName];
            if(
$this->executeBizRule($assignment->getBizRule(),$params,$assignment->getData()))
                return 
true;
        }
        
$parents=$this->db->createCommand()
            ->
select('parent')
            ->
from($this->itemChildTable)
            ->
where('child=:name', array(':name'=>$itemName))
            ->
queryColumn();
        foreach(
$parents as $parent)
        {
            if(
$this->checkAccessRecursive($parent,$userId,$params,$assignments))
                return 
true;
        }
    }
    return 
false;
}

Выполняет проверку доступа для указанного пользователя. Этот метод вызывается внутри checkAccess.

clearAll() метод

public void clearAll()
Исходный код: framework/web/auth/CDbAuthManager.php#548 (показать)
public function clearAll()
{
    
$this->clearAuthAssignments();
    
$this->db->createCommand()->delete($this->itemChildTable);
    
$this->db->createCommand()->delete($this->itemTable);
}

Удаляет все данные авторизации.

clearAuthAssignments() метод

public void clearAuthAssignments()
Исходный код: framework/web/auth/CDbAuthManager.php#558 (показать)
public function clearAuthAssignments()
{
    
$this->db->createCommand()->delete($this->assignmentTable);
}

Удаляет все назначения авторизации.

createAuthItem() метод

public CAuthItem createAuthItem(string $name, integer $type, string $description='', string $bizRule=NULL, mixed $data=NULL)
$name строка имя элемента. Должно быть уникальным идентификатором.
$type целое число тип элемента (0: операция, 1: задача, 2: роль).
$description строка описание элемента
$bizRule строка правило бизнеса, связанное с элементом. Это фрагмент кода PHP, который будет выполнен при вызове checkAccess для элемента.
$data смешанный тип дополнительные данные, связанные с элементом.
{return} CAuthItem элемент авторизации
Исходный код: framework/web/auth/CDbAuthManager.php#435 (показать)
public function createAuthItem($name,$type,$description='',$bizRule=null,$data=null)
{
    
$this->db->createCommand()
        ->
insert($this->itemTable, array(
            
'name'=>$name,
            
'type'=>$type,
            
'description'=>$description,
            
'bizrule'=>$bizRule,
            
'data'=>serialize($data)
        ));
    return new 
CAuthItem($this,$name,$type,$description,$bizRule,$data);
}

Создает элемент авторизации. Элемент авторизации представляет разрешение на действие (например, создание записи). Он имеет три типа: операция, задача и роль. Элементы авторизации образуют иерархию. Элементы более высокого уровня наследуют разрешения, представленные элементами более низкого уровня.

detectLoop() метод

protected boolean detectLoop(string $itemName, string $childName)
$itemName строка имя родительского элемента
$childName строка имя дочернего элемента, который должен быть добавлен в иерархию
{return} логическое значение есть ли цикл
Исходный код: framework/web/auth/CDbAuthManager.php#569 (показать)
protected function detectLoop($itemName,$childName)
{
    if(
$childName===$itemName)
        return 
true;
    foreach(
$this->getItemChildren($childName) as $child)
    {
        if(
$this->detectLoop($itemName,$child->getName()))
            return 
true;
    }
    return 
false;
}

Проверяет наличие цикла в иерархии элементов авторизации.

getAuthAssignment() метод

public CAuthAssignment getAuthAssignment(string $itemName, mixed $userId)
$itemName string имя элемента
$userId mixed ИД пользователя (см. IWebUser::getId)
{return} CAuthAssignment информация об назначении элемента. Возвращает Null, если элемент не назначен пользователю.
Source Code: framework/web/auth/CDbAuthManager.php#306 (показать)
public function getAuthAssignment($itemName,$userId)
{
    
$row=$this->db->createCommand()
        ->
select()
        ->
from($this->assignmentTable)
        ->
where('itemname=:itemname AND userid=:userid', array(
            
':itemname'=>$itemName,
            
':userid'=>$userId))
        ->
queryRow();
    if(
$row!==false)
    {
        if((
$data=@unserialize($row['data']))===false)
            
$data=null;
        return new 
CAuthAssignment($this,$row['itemname'],$row['userid'],$row['bizrule'],$data);
    }
    else
        return 
null;
}

Возвращает информацию о назначении элемента.

getAuthAssignments() метод

public array getAuthAssignments(mixed $userId)
$userId mixed ИД пользователя (см. IWebUser::getId)
{return} array информация о назначении элемента для пользователя. Пустой массив будет возвращён, если пользователю не назначено ни одного элемента.
Source Code: framework/web/auth/CDbAuthManager.php#331 (показать)
public function getAuthAssignments($userId)
{
    
$rows=$this->db->createCommand()
        ->
select()
        ->
from($this->assignmentTable)
        ->
where('userid=:userid', array(':userid'=>$userId))
        ->
queryAll();
    
$assignments=array();
    foreach(
$rows as $row)
    {
        if((
$data=@unserialize($row['data']))===false)
            
$data=null;
        
$assignments[$row['itemname']]=new CAuthAssignment($this,$row['itemname'],$row['userid'],$row['bizrule'],$data);
    }
    return 
$assignments;
}

Возвращает назначения элементов для указанного пользователя.

getAuthItem() метод

public CAuthItem getAuthItem(string $name)
$name string имя элемента
{return} CAuthItem элемент авторизации. Null, если элемент не найден.
Source Code: framework/web/auth/CDbAuthManager.php#479 (показать)
public function getAuthItem($name)
{
    
$row=$this->db->createCommand()
        ->
select()
        ->
from($this->itemTable)
        ->
where('name=:name', array(':name'=>$name))
        ->
queryRow();

    if(
$row!==false)
    {
        if((
$data=@unserialize($row['data']))===false)
            
$data=null;
        return new 
CAuthItem($this,$row['name'],$row['type'],$row['description'],$row['bizrule'],$data);
    }
    else
        return 
null;
}

Возвращает элемент авторизации с заданным именем.

getAuthItems() метод

public array getAuthItems(integer $type=NULL, mixed $userId=NULL)
$type integer тип элемента (0: операция, 1: задача, 2: роль). По умолчанию null, возвращает все элементы независимо от типа.
$userId mixed ИД пользователя. По умолчанию null, возвращает все элементы, даже если они не назначены пользователю.
{return} array элементы авторизации заданного типа.
Source Code: framework/web/auth/CDbAuthManager.php#372 (показать)
public function getAuthItems($type=null,$userId=null)
{
    if(
$type===null && $userId===null)
    {
        
$command=$this->db->createCommand()
            ->
select()
            ->
from($this->itemTable);
    }
    elseif(
$userId===null)
    {
        
$command=$this->db->createCommand()
            ->
select()
            ->
from($this->itemTable)
            ->
where('type=:type', array(':type'=>$type));
    }
    elseif(
$type===null)
    {
        
$command=$this->db->createCommand()
            ->
select('name,type,description,t1.bizrule,t1.data')
            ->
from(array(
                
$this->itemTable.' t1',
                
$this->assignmentTable.' t2'
            
))
            ->
where('name=itemname AND userid=:userid', array(':userid'=>$userId));
    }
    else
    {
        
$command=$this->db->createCommand()
            ->
select('name,type,description,t1.bizrule,t1.data')
            ->
from(array(
                
$this->itemTable.' t1',
                
$this->assignmentTable.' t2'
            
))
            ->
where('name=itemname AND type=:type AND userid=:userid', array(
                
':type'=>$type,
                
':userid'=>$userId
            
));
    }
    
$items=array();
    foreach(
$command->queryAll() as $row)
    {
        if((
$data=@unserialize($row['data']))===false)
            
$data=null;
        
$items[$row['name']]=new CAuthItem($this,$row['name'],$row['type'],$row['description'],$row['bizrule'],$data);
    }
    return 
$items;
}

Возвращает элементы авторизации заданного типа и пользователя.

getDbConnection() метод

protected CDbConnection getDbConnection()
{return} CDbConnection экземпляр подключения к БД
Source Code: framework/web/auth/CDbAuthManager.php#585 (показать)
protected function getDbConnection()
{
    if(
$this->db!==null)
        return 
$this->db;
    elseif((
$this->db=Yii::app()->getComponent($this->connectionID)) instanceof CDbConnection)
        return 
$this->db;
    else
        throw new 
CException(Yii::t('yii','CDbAuthManager.connectionID "{id}" is invalid. Please make sure it refers to the ID of a CDbConnection application component.',
            array(
'{id}'=>$this->connectionID)));
}

getItemChildren() метод

public array getItemChildren(mixed $names)
$names mixed имя родительского элемента. Может быть строкой или массивом. Массив представляет список имён элементов.
{return} array все дочерние элементы родителя
Source Code: framework/web/auth/CDbAuthManager.php#212 (показать)
public function getItemChildren($names)
{
    if(
is_string($names))
        
$condition='parent='.$this->db->quoteValue($names);
    elseif(
is_array($names) && $names!==array())
    {
        foreach(
$names as &$name)
            
$name=$this->db->quoteValue($name);
        
$condition='parent IN ('.implode(', ',$names).')';
    }

    
$rows=$this->db->createCommand()
        ->
select('name, type, description, bizrule, data')
        ->
from(array(
            
$this->itemTable,
            
$this->itemChildTable
        
))
        ->
where($condition.' AND name=child')
        ->
queryAll();

    
$children=array();
    foreach(
$rows as $row)
    {
        if((
$data=@unserialize($row['data']))===false)
            
$data=null;
        
$children[$row['name']]=new CAuthItem($this,$row['name'],$row['type'],$row['description'],$row['bizrule'],$data);
    }
    return 
$children;
}

Возвращает дочерние элементы указанного элемента.

hasItemChild() метод

public boolean hasItemChild(string $itemName, string $childName)
$itemName string имя родительского элемента
$childName string имя дочернего элемента
{return} boolean существует ли дочерний элемент
Source Code: framework/web/auth/CDbAuthManager.php#195 (показать)
public function hasItemChild($itemName,$childName)
{
    return 
$this->db->createCommand()
        ->
select('parent')
        ->
from($this->itemChildTable)
        ->
where('parent=:parent AND child=:child', array(
            
':parent'=>$itemName,
            
':child'=>$childName))
        ->
queryScalar() !== false;
}

Возвращает значение, указывающее, существует ли дочерний элемент внутри родительского.

init() метод

public void init()
Source Code: framework/web/auth/CDbAuthManager.php#56 (показать)
public function init()
{
    
parent::init();
    
$this->_usingSqlite=!strncmp($this->getDbConnection()->getDriverName(),'sqlite',6);
}

Инициализирует компонент приложения. Этот метод переопределяет родительскую реализацию, устанавливая подключение к базе данных.

isAssigned() метод

public boolean isAssigned(string $itemName, mixed $userId)
$itemName string имя элемента
$userId mixed ИД пользователя (см. IWebUser::getId)
{return} boolean назначалось ли элемент пользователю.
Source Code: framework/web/auth/CDbAuthManager.php#288 (показать)
public function isAssigned($itemName,$userId)
{
    return 
$this->db->createCommand()
        ->
select('itemname')
        ->
from($this->assignmentTable)
        ->
where('itemname=:itemname AND userid=:userid', array(
            
':itemname'=>$itemName,
            
':userid'=>$userId))
        ->
queryScalar() !== false;
}

Возвращает значение, указывающее, назначен ли элемент пользователю.

removeAuthItem() метод

public boolean removeAuthItem(string $name)
$name string имя удаляемого элемента
{return} boolean существует ли элемент в хранилище и был ли он удален
Source Code: framework/web/auth/CDbAuthManager.php#453 (показать)
public function removeAuthItem($name)
{
    if(
$this->usingSqlite())
    {
        
$this->db->createCommand()
            ->
delete($this->itemChildTable, 'parent=:name1 OR child=:name2', array(
                
':name1'=>$name,
                
':name2'=>$name
        
));
        
$this->db->createCommand()
            ->
delete($this->assignmentTable, 'itemname=:name', array(
                
':name'=>$name,
        ));
    }

    return 
$this->db->createCommand()
        ->
delete($this->itemTable, 'name=:name', array(
            
':name'=>$name
        
)) > 0;
}

Удаляет указанный элемент авторизации.

removeItemChild() метод

public boolean removeItemChild(string $itemName, string $childName)
$itemName string имя родительского элемента
$childName string имя дочернего элемента
{return} boolean удаление прошло успешно
Source Code: framework/web/auth/CDbAuthManager.php#180 (показать)
public function removeItemChild($itemName,$childName)
{
    return 
$this->db->createCommand()
        ->
delete($this->itemChildTable, 'parent=:parent AND child=:child', array(
            
':parent'=>$itemName,
            
':child'=>$childName
        
)) > 0;
}

Удаляет дочерний элемент из родителя. Обратите внимание, что дочерний элемент не удаляется. Удаляется только родительско-дочернее отношение.

revoke() метод

public boolean revoke(string $itemName, mixed $userId)
$itemName string имя элемента
$userId mixed ИД пользователя (см. IWebUser::getId)
{return} boolean удаление прошло успешно
Source Code: framework/web/auth/CDbAuthManager.php#273 (показать)
public function revoke($itemName,$userId)
{
    return 
$this->db->createCommand()
        ->
delete($this->assignmentTable, 'itemname=:itemname AND userid=:userid', array(
            
':itemname'=>$itemName,
            
':userid'=>$userId
        
)) > 0;
}

Отменяет назначение элемента авторизации для пользователя.

save() метод

public void save()
Source Code: framework/web/auth/CDbAuthManager.php#541 (показать)
public function save()
{
}

Сохраняет данные авторизации в постоянное хранилище.

saveAuthAssignment() метод

public void saveAuthAssignment(CAuthAssignment $assignment)
$assignment CAuthAssignment назначаемый элемент, который был изменён.
Исходный код: framework/web/auth/CDbAuthManager.php#352 (показать)
public function saveAuthAssignment($assignment)
{
    
$this->db->createCommand()
        ->
update($this->assignmentTable, array(
            
'bizrule'=>$assignment->getBizRule(),
            
'data'=>serialize($assignment->getData()),
        ), 
'itemname=:itemname AND userid=:userid', array(
            
'itemname'=>$assignment->getItemName(),
            
'userid'=>$assignment->getUserId()
        ));
}

Сохраняет изменения в назначении авторизации.

saveAuthItem() метод

public void saveAuthItem(CAuthItem $item, string $oldName=NULL)
$item CAuthItem элемент, который нужно сохранить.
$oldName строка старое имя элемента. Если null, то имя элемента не изменено.
Исходный код: framework/web/auth/CDbAuthManager.php#502 (показать)
public function saveAuthItem($item,$oldName=null)
{
    if(
$this->usingSqlite() && $oldName!==null && $item->getName()!==$oldName)
    {
        
$this->db->createCommand()
            ->
update($this->itemChildTable, array(
                
'parent'=>$item->getName(),
            ), 
'parent=:whereName', array(
                
':whereName'=>$oldName,
            ));
        
$this->db->createCommand()
            ->
update($this->itemChildTable, array(
                
'child'=>$item->getName(),
            ), 
'child=:whereName', array(
                
':whereName'=>$oldName,
            ));
        
$this->db->createCommand()
            ->
update($this->assignmentTable, array(
                
'itemname'=>$item->getName(),
            ), 
'itemname=:whereName', array(
                
':whereName'=>$oldName,
            ));
    }

    
$this->db->createCommand()
        ->
update($this->itemTable, array(
            
'name'=>$item->getName(),
            
'type'=>$item->getType(),
            
'description'=>$item->getDescription(),
            
'bizrule'=>$item->getBizRule(),
            
'data'=>serialize($item->getData()),
        ), 
'name=:whereName', array(
            
':whereName'=>$oldName===null?$item->getName():$oldName,
        ));
}

Сохраняет элемент авторизации в постоянное хранилище.

usingSqlite() метод

protected boolean usingSqlite()
{return} логический тип указывает, является ли база данных базой данных SQLite
Исходный код: framework/web/auth/CDbAuthManager.php#599 (показать)
protected function usingSqlite()
{
    return 
$this->_usingSqlite;
}

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CDbAuthManager

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API