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

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


limb2:ru:access_policy

Введение в систему прав

Limb2 имеет двухуровневую систему прав

  • Доступ к объектам. Система доступа определяет права пользователя для запрошенного объекта: чтение, зпись или оба
  • Доступ к действиям. Система доступа определяет резрешено ли пользователю выполнять запрошенное действие над объектом.

Эти этапы логично и тесно связаны. Действие требует набор прав на объекты, которые доступны пользователю. Поэтому для пользователя недостаточно только иметь право на доступ к действию - пользователь должен иметь также доступ к запрошенным объектам. Звучит немного сложно, надеюсь хороший пример сможет все прояснить.

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

Доступ к объектам

В Limb 2.4.x нет различия между правами на запись и чтение. Пользователь либо имеет доступ к объекту, либо нет. Если пользователь не имеет право на доступ к объекту, он обычно вообщее не осведомлен о его существовании. Единственный способ увидить такие объекты - напрямую использовать метод fetch() объекта сайта.

Вы можете просматривать и задавать права доступа на объекты через Limb GUI используя страницу /admin/objects_access. Система внутренне позволяет назначать права доступа на объекты для каждого пользователя, однако на нашей практике мы не испытывали такой необходимости, поэтому GUI позволяет назначать права только группы.

Доступ к действиям

Действия - это набор операций. Будучи определенными в контроллере объекта сайта, действия могут применяться непосредственно к объекту сайта или …выпольнять что-нибудь иное. Для выполнения действия пользователь должен иметь право для его выполнение.

Limb предоставляет GUI для управления доступом к действиям через страницу /admin/controllers. Администраторы задают какие действия доступны для групп пользователей. Как было упомято выше, в Limb нет GUI для задания прав на действия для отдельных пользователей. В нашей практике мы еще не встечали ни одного случая, когда бы требовалась такая функциональность, однако реализовать это - не проблема.

Каждое действие требует конкретного набора прав на объекты. Эти права описаны в контроллере объекта сайта. Чтобы все прояснить, давайте посмотрим на один маленький пример:

Небольшой пример

Предположим, мы имеем некоторый article_controller. Он поддрживает только 2 действия: 'display' and 'delete':

class article_controller extends site_object_controller
{
    function _define_actions()
    {
        return  array(
          'display' => array(
           [[...]]
          ),
          'delete' => array(
           [[...]]
          ),
        );        
    }
}

Давайте представим, что у нас в системе есть 3 экземпляра статей.

Наш пользователь состоит в 2-х группах: 'visitors' и 'admins'.

Вот права на объекты, которые есть у пользовательских групп:

                        article1   article2   article3
visitors                             ok         ok 
admins                    ok         ok          

А права на действия для групп выглядят так:

               display   delete
visitors        да       нет
admins          нет      да

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

Обсуждение

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