Система прав

Материал из Semograph
Версия от 22:59, 6 августа 2014; Baranov (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

В "Семографе" используется иерархическая система прав доступа. Права разрешают доступ отдельным пользователям к действиям над конкретными объектам. Корнем в данной системе является проект, поэтому права назначаются в рамках конкретного проекта.

Права представляются следующим образом:

тип объекта : объект (или все объекты данного типа) : действие или тип подобъекта (либо все действия и подобъекты) : подобъект ...

Например:

1. контекст : К1 : просмотр - право на просмотр содержимого контекста К1

2. контекст : все : список - право на просмотр списка контекстов

3. компонент : все : список - право на просмотр списка компонентов проекта

4. контекст : К2 : компонент : все : список - право на просмотр списка компонентов в контексте К2, распространяется и на автодополнение

Если у пользователя есть право 4 и нет права 3, то он не сможет увидеть компоненты, связанные с контекстами кроме К2.

Права на просмотр списка объектов и добавление нового объекта могут быть назначены только при выборе ВСЕХ объектов данного типа (т.е. когда на предыдущем уровне иерархии выбрано "все").

Если последним элементом права является "все", то будут разрешены ВСЕ нижележащие действия над всеми нижележащими объектами. Например:

5. контекст: все - право на любые действия над контекстами данного проекта, в т.ч. на просмотр и привязку компонентов к ним

6. все - полные права доступа к данному проекту

Заметим, что одни и те же объекты на разных уровнях иерархии имеют разное значение, например:

7. компонент : все : добавление - право на добавление компонента в данный проект (не позволяет связывать его с контекстами)

8. контекст : К3 : компонент : все : добавление - право на связывание любых компонентов с контекстом К3 (для разрыва связи нужно соответствующие право с действием "удаление")

Если у пользователя есть право 8, но нет права 7, то он сможет добавить компонент к контексту К3 только в том случае, если такой компонент уже был добавлен в данный проект (не обязательно в какой-либо контекст).