Инструменты пользователя

Инструменты сайта


limb2:ru:access_templates

Шаблоны прав доступа

Основная идея, лежащая в основе шаблонов прав доступа, заключается в назначении некоторого заранее определенного набора прав доступа к объекту.

Шаблоны прав доступа обычно используются для организации простейшего документо-оборотного цикла. Например, с одной стороны, новая статья не должна быть доступна обычным посетителям сайти, а с другой, полностью доступна редакторскому составу и администраторам. Однако после опубликации статьи посетители также должны получить доступ на ее просмотр. При этом редактор может в любой момент сделать статью недоступной для посетителей, сняв ее с публикации.

Как это можно реализовать, используя шаблоны прав доступа? Довольно просто - необходимо определить шаблон прав доступа, который будет применяться к статье, при выполнении следующих действий над ней: создание(create), публикация(publish), снятие публикации(unpublish).

Рассмотрим пример, каким образом указывается в контроллере при описании действий тот факт, что то или иное действие может иметь шаблон прав доступа:

class articles_controller extends site_object_controller
{
    function _define_actions()
    {
        return array(
                'create' => array(
                        'action_path' => '/article/create_article_action',
                        'action_name' => strings :: get('create_article', 'article'),
                        'can_have_access_template' => true,
                ),
                'publish' => array(                        
                        'action_name' => strings :: get('publish'),
                        'action_path' => '/doc_flow_object/set_publish_status_action',
                        'can_have_access_template' => true,
                ),
                'unpublish' => array(                        
                        'action_name' => strings :: get('unpublish'),
                        'action_path' => '/doc_flow_object/set_publish_status_action',
                        'can_have_access_template' => true,
                ),
        );
    }
}

Здесь мы описали три действия 'create', 'publish' и 'unpublish', которые могут иметь шаблон прав доступа, используя свойство 'can_have_access_template'. Теперь в панели управления в разделе управления правами для контроллеров можно установить шаблоны прав доступа для данного контроллера. Что мы и сделаем, установим следующий шаблон прав:

create publish unpublish
visitors - + -
author + + +
admin + + +

Физически шаблоны прав действия представляют из себя таблицу, в которой указано, каким группам будет предоставлен/запрещен доступ к данному объекту при выполнении того или иного действия.

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

Зачастую действие по созданию объекта('create') находится в контроллере родительского объекта, поэтому свойство 'can_have_access_template' необходимо прописать именно в «родительском» контроллере, к примеру:

class articles_folder_controller extends site_object_controller
{
    function _define_actions()
    {
        return array(
                'create_article' => array(
                        'action_path' => '/article/create_article_action',
                        'action_name' => strings :: get('create_article', 'article'),
                        'can_have_access_template' => true,
                ),
                ...
    }

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
  _      __  ____    ___    __ __   __  ___
 | | /| / / / __ \  / _ |  / // /  /  |/  /
 | |/ |/ / / /_/ / / __ | / _  /  / /|_/ / 
 |__/|__/  \____/ /_/ |_|/_//_/  /_/  /_/
 
limb2/ru/access_templates.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)