WackoWiki : YuliaShabunio/WackoACL

Попытка систематизации проблемы наследования ACL


ACL надо наследовать. Вопрос – как это сделать.
Оглавление документа

Варианты поведения

Как сейчас

ACL наследуется от родительской страницы в момент создания.

Никакие дальнейшие изменения у родительской страницы не повлияют на дочерние.

Тотальный контроль

ACL наследуется от родительской страницы в момент создания.

В последствии он может быть изменен.

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

Наследуем унаследованное

ACL наследуется от родительской страницы в момент создания.

В последствии он может быть изменен.

При изменении в ACL родительской страницы правятся только те подстраницы, ACL которых не менялся с момента создания или был возвращен в состояние, равное состоянию в момент создания.

Родитель плюс пис

ACL наследуется от родительской страницы в момент создания.

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

Ссылка с ограничением

Если акл данной страницы содержит ссылку на другую страницу, то акл оттуда добавляется к аклу данной страницы.
Если в ACL есть ссылка, то:
  1. Она должна быть только одна.
  2. Она должна быть во всех трех типах прав.

Это значит, нельзя писать
@Page1
@Page2

или
read ("@Page1'), write ("@Page2").

Т.е. если Page1, то в r/w/c Page1 и только Page1.

YuriMakarov Почему такие ограничения?
Мне кажется они совсем не обязательны.
Технически реализовать только 1 список проще, несколько чуть сложнее (п1).
Пункт 2 тоже необязателен, к примеру – редактирование только автору, просмотр некоторой группе.

Варианты реализации

Как сейчас

Для каждой страницы хранится отдельный ACL в базе данных.
Хорошо реализует сценарии
Неплохо реализует
Почти невозможно реализовать

Расчет ACL на лету

Для каждой страницы хранится отдельный ACL в базе данных. Но при расчете реального ACL учитываются в том числе права всех родителей
Хорошо реализует сценарии
Неплохо реализует
Почти невозможно реализовать
Можно, но зачем?

Превратим Ваку в дерево

База данных преобразована так, чтобы легко было определить родительскую страницу.

Хорошо реализует сценарии
Неплохо реализует
Можно, но зачем?
Почти невозможно реализовать

Наборы прав

В отдельной таблице хранятся «наборы прав». В каждой странице лежит только ссылка на какой-нибудь набор.
Хорошо реализует сценарии
Неплохо реализует
Почти невозможно реализовать




Страницы, ссылающиеся на данную: AlexKulikov/WackoACL
WackoIdeas