Spec-Zone.ru › Yii 1.1

CPhpAuthManager

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

Данные авторизации будут сохранены и загружены из файла, указанного параметром authFile, по умолчанию 'protected/data/auth.php'.

CPhpAuthManager подходит в основном для данных авторизации, которые не слишком велики (например, данные авторизации для системы личного блога). Для более сложных данных авторизации используйте CDbAuthManager.

Общественные свойства

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

Публичные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
addItemChild() Добавляет элемент в качестве дочернего для другого элемента. CPhpAuthManager
asa() Возвращает объект поведения с указанным именем. CComponent
assign() Присваивает элемент авторизации пользователю. CPhpAuthManager
attachBehavior() Присоединяет поведение к данному компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик события к событию. CComponent
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
checkAccess() Производит проверку доступа для указанного пользователя. CPhpAuthManager
clearAll() Удаляет все данные авторизации. CPhpAuthManager
clearAuthAssignments() Удаляет все назначения авторизации. CPhpAuthManager
createAuthItem() Создает элемент авторизации. CPhpAuthManager
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() Возвращает информацию об назначении элемента. CPhpAuthManager
getAuthAssignments() Возвращает назначения элементов авторизации для указанного пользователя. CPhpAuthManager
getAuthItem() Возвращает элемент авторизации с указанным именем. CPhpAuthManager
getAuthItems() Возвращает элементы авторизации определенного типа и пользователя. CPhpAuthManager
getEventHandlers() Возвращает список присоединенных обработчиков событий для события. CComponent
getIsInitialized() Проверяет, был ли инициирован этот компонент приложения. CApplicationComponent
getItemChildren() Возвращает дочерние элементы указанного элемента. CPhpAuthManager
getOperations() Возвращает операции. CAuthManager
getRoles() Возвращает роли. CAuthManager
getTasks() Возвращает задачи. CAuthManager
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли присоединенные обработчики для указанного события. CComponent
hasItemChild() Возвращает значение, указывающее, существует ли дочерний элемент в родительском элементе. CPhpAuthManager
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует компонент приложения. CPhpAuthManager
isAssigned() Возвращает значение, указывающее, был ли элемент назначен пользователю. CPhpAuthManager
load() Загружает данные авторизации. CPhpAuthManager
raiseEvent() Возбуждает событие. CComponent
removeAuthItem() Удаляет указанный элемент авторизации. CPhpAuthManager
removeItemChild() Удаляет дочерний элемент из его родителя. CPhpAuthManager
revoke() Отменяет назначение авторизации для пользователя. CPhpAuthManager
save() Сохраняет данные авторизации в постоянное хранилище. CPhpAuthManager
saveAuthAssignment() Сохраняет изменения в назначении авторизации. CPhpAuthManager
saveAuthItem() Сохраняет элемент авторизации в постоянном хранилище. CPhpAuthManager

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

Метод Описание Определено в
checkItemChildType() Проверяет типы элементов, чтобы убедиться, что дочерний элемент может быть добавлен к родителю. CAuthManager
detectLoop() Проверяет наличие цикла в иерархии элементов авторизации. CPhpAuthManager
loadFromFile() Загружает данные авторизации из файла скрипта PHP. CPhpAuthManager
saveToFile() Сохраняет данные авторизации в файл скрипта PHP. CPhpAuthManager
END_OF_DOCUMENT_MARKER

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

authFile свойство

public string $authFile;

путь к PHP-скрипту, содержащему данные авторизации. Если не задан, используется файл 'protected/data/auth.php'. Убедитесь, что этот файл доступен для записи процессом веб-сервера, если данные авторизации необходимо изменить.

См. также

  • loadFromFile
  • saveToFile

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

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

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

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

addItemChild() метод

public boolean addItemChild(string $itemName, string $childName)
$itemName string имя родительского элемента
$childName string имя дочернего элемента
{return} boolean успешность добавления элемента
Исходный код: framework/web/auth/CPhpAuthManager.php#100 (показать)
public function addItemChild($itemName,$childName)
{
    if(!isset(
$this->_items[$childName],$this->_items[$itemName]))
        throw new 
CException(Yii::t('yii','Either "{parent}" or "{child}" does not exist.',array('{child}'=>$childName,'{parent}'=>$itemName)));
    
$child=$this->_items[$childName];
    
$item=$this->_items[$itemName];
    
$this->checkItemChildType($item->getType(),$child->getType());
    if(
$this->detectLoop($itemName,$childName))
        throw new 
CException(Yii::t('yii','Cannot add "{child}" as a child of "{parent}". A loop has been detected.',
            array(
'{child}'=>$childName,'{parent}'=>$itemName)));
    if(isset(
$this->_children[$itemName][$childName]))
        throw new 
CException(Yii::t('yii','The item "{parent}" already has a child "{child}".',
            array(
'{child}'=>$childName,'{parent}'=>$itemName)));
    
$this->_children[$itemName][$childName]=$this->_items[$childName];
    return 
true;
}

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

assign() метод

public CAuthAssignment assign(string $itemName, mixed $userId, string $bizRule=NULL, mixed $data=NULL)
$itemName string имя элемента
$userId mixed ИД пользователя (см. IWebUser::getId)
$bizRule string правило бизнес-логики, которое выполняется при вызове checkAccess для данного элемента авторизации.
$data mixed дополнительные данные, связанные с этим назначением
{return} CAuthAssignment информация о назначении авторизации.
Исходный код: framework/web/auth/CPhpAuthManager.php#176 (показать)
public function assign($itemName,$userId,$bizRule=null,$data=null)
{
    if(!isset(
$this->_items[$itemName]))
        throw new 
CException(Yii::t('yii','Unknown authorization item "{name}".',array('{name}'=>$itemName)));
    elseif(isset(
$this->_assignments[$userId][$itemName]))
        throw new 
CException(Yii::t('yii','Authorization item "{item}" has already been assigned to user "{user}".',
            array(
'{item}'=>$itemName,'{user}'=>$userId)));
    else
        return 
$this->_assignments[$userId][$itemName]=new CAuthAssignment($this,$itemName,$userId,$bizRule,$data);
}

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

checkAccess() метод

public boolean checkAccess(string $itemName, mixed $userId, array $params=array ( ))
$itemName string имя операции, для которой требуется проверка доступа
$userId mixed ИД пользователя. Может быть целым числом или строкой, представляющей уникальный идентификатор пользователя. См. IWebUser::getId.
$params array параметры в формате имя-значение, которые будут переданы правилам бизнес-логики, связанным с задачами и ролями, назначенными пользователю. С версии 1.1.11 в этот массив добавлен параметр с именем 'userId', содержащий значение $userId.
{return} boolean возможность выполнения операции пользователем.
Исходный код: framework/web/auth/CPhpAuthManager.php#66 (показать)
public function checkAccess($itemName,$userId,$params=array())
{
    if(!isset(
$this->_items[$itemName]))
        return 
false;
    
$item=$this->_items[$itemName];
    
Yii::trace('Checking permission "'.$item->getName().'"','system.web.auth.CPhpAuthManager');
    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(
$this->_assignments[$userId][$itemName]))
        {
            
$assignment=$this->_assignments[$userId][$itemName];
            if(
$this->executeBizRule($assignment->getBizRule(),$params,$assignment->getData()))
                return 
true;
        }
        foreach(
$this->_children as $parentName=>$children)
        {
            if(isset(
$children[$itemName]) && $this->checkAccess($parentName,$userId,$params))
                return 
true;
        }
    }
    return 
false;
}

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

clearAll() метод

public void clearAll()
Исходный код: framework/web/auth/CPhpAuthManager.php#447 (показать)
public function clearAll()
{
    
$this->clearAuthAssignments();
    
$this->_children=array();
    
$this->_items=array();
}

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

clearAuthAssignments() метод

public void clearAuthAssignments()
Исходный код: framework/web/auth/CPhpAuthManager.php#457 (показать)
public function clearAuthAssignments()
{
    
$this->_assignments=array();
}

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

createAuthItem() метод

public CAuthItem createAuthItem(string $name, integer $type, string $description='', string $bizRule=NULL, mixed $data=NULL)
$name string имя элемента. Должно быть уникальным идентификатором.
$type integer тип элемента (0: операция, 1: задача, 2: роль).
$description string описание элемента
$bizRule string правило бизнес-логики, связанное с элементом. Это фрагмент PHP-кода, который будет выполнен при вызове checkAccess для элемента.
$data mixed дополнительные данные, связанные с элементом.
{return} CAuthItem элемент авторизации
Исходный код: framework/web/auth/CPhpAuthManager.php#286 (показать)
public function createAuthItem($name,$type,$description='',$bizRule=null,$data=null)
{
    if(isset(
$this->_items[$name]))
        throw new 
CException(Yii::t('yii','Unable to add an item whose name is the same as an existing item.'));
    return 
$this->_items[$name]=new CAuthItem($this,$name,$type,$description,$bizRule,$data);
}

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

detectLoop() метод

protected boolean detectLoop(string $itemName, string $childName)
$itemName string имя родительского элемента
$childName string имя дочернего элемента, который добавляется в иерархию
{return} boolean существует ли цикл
Исходный код: framework/web/auth/CPhpAuthManager.php#468 (показать)
protected function detectLoop($itemName,$childName)
{
    if(
$childName===$itemName)
        return 
true;
    if(!isset(
$this->_children[$childName], $this->_items[$itemName]))
        return 
false;

    foreach(
$this->_children[$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, если элемент не назначен пользователю.
Исходный код: framework/web/auth/CPhpAuthManager.php#222 (показать)
public function getAuthAssignment($itemName,$userId)
{
    return isset(
$this->_assignments[$userId][$itemName])?$this->_assignments[$userId][$itemName]:null;
}

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

getAuthAssignments() метод

public array getAuthAssignments(mixed $userId)
$userId mixed ИД пользователя (см. IWebUser::getId)
{return} array информация о назначениях элементов для пользователя. Возвращает пустой массив, если пользователю не назначены элементы.
Исходный код: framework/web/auth/CPhpAuthManager.php#233 (показать)
public function getAuthAssignments($userId)
{
    return isset(
$this->_assignments[$userId])?$this->_assignments[$userId]:array();
}

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

getAuthItem() метод

public CAuthItem getAuthItem(string $name)
$name string имя элемента
{return} CAuthItem элемент авторизации. Возвращает Null, если элемент не найден.
Исходный код: framework/web/auth/CPhpAuthManager.php#318 (показать)
public function getAuthItem($name)
{
    return isset(
$this->_items[$name])?$this->_items[$name]:null;
}

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

getAuthItems() метод

public array getAuthItems(integer $type=NULL, mixed $userId=NULL)
$type integer тип элемента (0: операция, 1: задача, 2: роль). По умолчанию null, что означает возврат всех элементов независимо от типа.
$userId mixed ID пользователя. По умолчанию null, что означает возврат всех элементов, даже если они не назначены пользователю.
{return} array элементы авторизации указанного типа.
Исходный код: framework/web/auth/CPhpAuthManager.php#246 (показать)
public function getAuthItems($type=null,$userId=null)
{
    if(
$type===null && $userId===null)
        return 
$this->_items;
    
$items=array();
    if(
$userId===null)
    {
        foreach(
$this->_items as $name=>$item)
        {
            if(
$item->getType()==$type)
                
$items[$name]=$item;
        }
    }
    elseif(isset(
$this->_assignments[$userId]))
    {
        foreach(
$this->_assignments[$userId] as $assignment)
        {
            
$name=$assignment->getItemName();
            if(isset(
$this->_items[$name]) && ($type===null || $this->_items[$name]->getType()==$type))
                
$items[$name]=$this->_items[$name];
        }
    }
    return 
$items;
}

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

getItemChildren() метод

public array getItemChildren(mixed $names)
$names mixed имя родительского элемента. Может быть строкой или массивом. Массив представляет список имён элементов.
{return} array все дочерние элементы родительского
Исходный код: framework/web/auth/CPhpAuthManager.php#152 (показать)
public function getItemChildren($names)
{
    if(
is_string($names))
        return isset(
$this->_children[$names]) ? $this->_children[$names] : array();

    
$children=array();
    foreach(
$names as $name)
    {
        if(isset(
$this->_children[$name]))
            
$children=array_merge($children,$this->_children[$name]);
    }
    return 
$children;
}

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

hasItemChild() метод

public boolean hasItemChild(string $itemName, string $childName)
$itemName string имя родительского элемента
$childName string имя дочернего элемента
{return} boolean существует ли дочерний элемент
Исходный код: framework/web/auth/CPhpAuthManager.php#141 (показать)
public function hasItemChild($itemName,$childName)
{
    return isset(
$this->_children[$itemName][$childName]);
}

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

init() метод

public void init()
Исходный код: framework/web/auth/CPhpAuthManager.php#48 (показать)
public function init()
{
    
parent::init();
    if(
$this->authFile===null)
        
$this->authFile=Yii::getPathOfAlias('application.data.auth').'.php';
    
$this->load();
}

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

isAssigned() метод

public boolean isAssigned(string $itemName, mixed $userId)
$itemName string имя элемента
$userId mixed ID пользователя (см. IWebUser::getId)
{return} boolean элемент назначен пользователю.
Исходный код: framework/web/auth/CPhpAuthManager.php#210 (показать)
public function isAssigned($itemName,$userId)
{
    return isset(
$this->_assignments[$userId][$itemName]);
}

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

load() метод

public void load()
Исходный код: framework/web/auth/CPhpAuthManager.php#415 (показать)
public function load()
{
    
$this->clearAll();

    
$items=$this->loadFromFile($this->authFile);

    foreach(
$items as $name=>$item)
        
$this->_items[$name]=new CAuthItem($this,$name,$item['type'],$item['description'],$item['bizRule'],$item['data']);

    foreach(
$items as $name=>$item)
    {
        if(isset(
$item['children']))
        {
            foreach(
$item['children'] as $childName)
            {
                if(isset(
$this->_items[$childName]))
                    
$this->_children[$name][$childName]=$this->_items[$childName];
            }
        }
        if(isset(
$item['assignments']))
        {
            foreach(
$item['assignments'] as $userId=>$assignment)
            {
                
$this->_assignments[$userId][$name]=new CAuthAssignment($this,$name,$userId,$assignment['bizRule'],$assignment['data']);
            }
        }
    }
}

Загружает данные авторизации.

loadFromFile() метод

protected array loadFromFile(string $file)
$file string путь к файлу.
{return} array данные авторизации
Исходный код: framework/web/auth/CPhpAuthManager.php#489 (показать)
protected function loadFromFile($file)
{
    if(
is_file($file))
        return require(
$file);
    else
        return array();
}

Загружает данные авторизации из PHP-скрипта.

См. также

  • saveToFile

removeAuthItem() метод

public boolean removeAuthItem(string $name)
$name string имя элемента, который нужно удалить
{return} boolean существует ли элемент в хранилище и был ли он удален
Исходный код: framework/web/auth/CPhpAuthManager.php#298 (показать)
public function removeAuthItem($name)
{
    if(isset(
$this->_items[$name]))
    {
        foreach(
$this->_children as &$children)
            unset(
$children[$name]);
        foreach(
$this->_assignments as &$assignments)
            unset(
$assignments[$name]);
        unset(
$this->_items[$name]);
        return 
true;
    }
    else
        return 
false;
}

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

removeItemChild() метод

public boolean removeItemChild(string $itemName, string $childName)
$itemName string имя родительского элемента
$childName string имя дочернего элемента
{return} boolean успешно ли выполнено удаление
Исходный код: framework/web/auth/CPhpAuthManager.php#124 (показать)
public function removeItemChild($itemName,$childName)
{
    if(isset(
$this->_children[$itemName][$childName]))
    {
        unset(
$this->_children[$itemName][$childName]);
        return 
true;
    }
    else
        return 
false;
}

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

revoke() метод

public boolean revoke(string $itemName, mixed $userId)
$itemName string имя элемента
$userId mixed ID пользователя (см. IWebUser::getId)
{return} boolean успешно ли выполнено удаление
Исходный код: framework/web/auth/CPhpAuthManager.php#193 (показать)
public function revoke($itemName,$userId)
{
    if(isset(
$this->_assignments[$userId][$itemName]))
    {
        unset(
$this->_assignments[$userId][$itemName]);
        return 
true;
    }
    else
        return 
false;
}

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

save() метод

public void save()
Исходный код: framework/web/auth/CPhpAuthManager.php#377 (показать)
public function save()
{
    
$items=array();
    foreach(
$this->_items as $name=>$item)
    {
        
$items[$name]=array(
            
'type'=>$item->getType(),
            
'description'=>$item->getDescription(),
            
'bizRule'=>$item->getBizRule(),
            
'data'=>$item->getData(),
        );
        if(isset(
$this->_children[$name]))
        {
            foreach(
$this->_children[$name] as $child)
                
$items[$name]['children'][]=$child->getName();
        }
    }

    foreach(
$this->_assignments as $userId=>$assignments)
    {
        foreach(
$assignments as $name=>$assignment)
        {
            if(isset(
$items[$name]))
            {
                
$items[$name]['assignments'][$userId]=array(
                    
'bizRule'=>$assignment->getBizRule(),
                    
'data'=>$assignment->getData(),
                );
            }
        }
    }

    
$this->saveToFile($items,$this->authFile);
}

Сохраняет данные авторизации в постоянном хранилище. Если внесены изменения в данные авторизации, убедитесь, что вы вызываете этот метод для сохранения изменённых данных в постоянное хранилище.

saveAuthAssignment() метод

public void saveAuthAssignment(CAuthAssignment $assignment)
$assignment CAuthAssignment назначение, которое было изменено.
Исходный код: framework/web/auth/CPhpAuthManager.php#368 (показать)
public function saveAuthAssignment($assignment)
{
}

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

saveAuthItem() метод

public void saveAuthItem(CAuthItem $item, string $oldName=NULL)
$item CAuthItem элемент, который нужно сохранить.
$oldName string прежнее имя элемента. Если null, значит имя элемента не изменено.
Исходный код: framework/web/auth/CPhpAuthManager.php#329 (показать)
public function saveAuthItem($item,$oldName=null)
{
    if(
$oldName!==null && ($newName=$item->getName())!==$oldName) // name changed
    
{
        if(isset(
$this->_items[$newName]))
            throw new 
CException(Yii::t('yii','Unable to change the item name. The name "{name}" is already used by another item.',array('{name}'=>$newName)));
        if(isset(
$this->_items[$oldName]) && $this->_items[$oldName]===$item)
        {
            unset(
$this->_items[$oldName]);
            
$this->_items[$newName]=$item;
            if(isset(
$this->_children[$oldName]))
            {
                
$this->_children[$newName]=$this->_children[$oldName];
                unset(
$this->_children[$oldName]);
            }
            foreach(
$this->_children as &$children)
            {
                if(isset(
$children[$oldName]))
                {
                    
$children[$newName]=$children[$oldName];
                    unset(
$children[$oldName]);
                }
            }
            foreach(
$this->_assignments as &$assignments)
            {
                if(isset(
$assignments[$oldName]))
                {
                    
$assignments[$newName]=$assignments[$oldName];
                    unset(
$assignments[$oldName]);
                }
            }
        }
    }
}

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

saveToFile() метод

protected void saveToFile(array $data, string $file)
$data array данные авторизации
$file string путь к файлу.
Исходный код: framework/web/auth/CPhpAuthManager.php#503 (показать)
protected function saveToFile($data,$file)
{
    
file_put_contents($file,"<?php\nreturn ".var_export($data,true).";\n");
}

Сохраняет данные авторизации в файл PHP-скрипта.

См. также

  • loadFromFile

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

Spec-Zone.ru

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