Права доступа

Материал из Smart Core Wiki

Перейти к: навигация, поиск

Содержание

Формат строк прав доступа для папок и нод

Пример строк с правами доступа.

Группе с ИД = 0 нельзя ни читать ни писать, ни смотреть, группе юзеров с ИД = 5 можно читать и писать, но не просмотривать:

0|read:0,write:0,view:0;5|read:1,write:1,view:0; -

Пользователю с ИД = 4 можно и читать и писать:

u4|read:1,write:1;

Системные права доступа

Т.е. на уровне "папок" и "нод".

Действие Папка Нода
Чтение Может ли пользовать запросить папку. Если нет, то генерируется ошибка 403 (доступ запрещен). Отображается нода или нет, соответственно обрабатывает её движок или нет.
Запись ??? пока не определено, может рассмотреть как возможность администрирования раздела. (1) Возможность передачи ноде POST данных.
Просмотр Нигде не отображается и скрываются ссылки на скрытые папки, но доступ к скрытым папкам остаётся как обычно. ??? пока не определено (2)

(1) Право записи в папку в принципе можно расценить на возможность создавать в этой папке другие папки и ноды, но тут надо продумать момент по какой логике например разрешить управления в корневой папке и в тоже время запретить скажем для папки /admin/, в принципе можем считать, что если даже право записи в папку есть, но в самой этой папке есть папки без права записи, то их удалять нельзя.

(2) Права "просмотр" для нод как можно применить, я не знаю если надо скрыть ноду от юзера, то мы просто убираем с неё чтение, единственный вариант приходит в голову, это для тех случаев, когда к ноде надо сделать запрос т.е. чтобы она была активная и доступная, но её ненадо отображать на странице... может быть это может быть поледным для аякса. (надо думать).

Списки прав для ролей

Ниже приведены планируемые права, которые можно будет назначать группам пользователей.

Панель управления

Также права от ПУ являются общими для администрирования системы и относятся к ядру.

  1. Авторизация на сайте.
  2. Доступ к панели управления.
  3. Управление подключениями к БД.
  4. Установка и удаление модулей.
  5. Включение и отключение модулей.
  6. Регистрация новых пользоватей.

Тулбар

Компоненты

Модули

Новости

  1. Добавление новостей (default).
  2. Редактирование своих новостей.
  3. Редактирование чужих новостей.
  4. Удаление своих новостей.
  5. Удаление чужих новостей.

Комментарии

Старые заметки

ВНИМАНИЕ! эта статья требует доработки! информация на ней может быть не актуальной.

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

Далее для выяснения прав доступа применяется метод isAllowed($object, $action, $permissions), где object — это имя объекта, например «folder» для папок в ядре, «action» — это запрашиваемое действие, например «read», а «permissions» — это строка с правами конкретного объекта.

В случае, если строка прав пуская, то применяется права доступа прописанные по умолчанию в таблице engine_permissions, но также учитываются модификации из engine_permissions_defaults, они обладают большим приоритетом, чем engine_permissions.

Строка прав permissions, имеет следующий формат: {group_id}|{action}:{isAllow1|0},{action}:{isAllow1|0};{group_id}|{action}:{isAllow1|0},{action}:{isAllow1|0}. Например группа гостей у нас в системе имеет id = 0, тогда можно на папку выставить права 0|read:0,write:0,view:0 и запретить таким образом к ней любые обращения от гостей.

Таким образом для выяснения того или иного права над объектом надо выполнить запрос у метода isAllowed(), который в свою очередь, но обращается к БД, это метод синглтон класса Permissions, у него конструктор запускается только один раз, считывает таблицы engine_permissions и engine_permissions_defaults, строит многомерный массив и сохраняет результат в приватном свойстве $default_permissions. Далее при запросе с непустой строкой «permissions», происходит накладывание разрешений на массив $default_permissions, притом: все права в «permissions» выше приоритетом, чем $default_permissions, а также «permissions» могут быть разрешения для одной группы пользователей и запреты для другой, а юзер может входить во все эти группы, в такои случае разрешение даётся в том случае, если оно есть хотябы в одной группы, в которую включен пользователь.

Также допускается установка прав для конкретного юзера, например u5|write:1, разрешает право на запись пользователю с id = 5. Это право имеет приоритет выше, чем групповой.

Личные инструменты
Пространства имён
Варианты
Действия
Основные разделы
Ссылки
Навигация
Инструменты