parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

про поле thread_id и не только

VictorSmirnov 28.10.2003 11:04

Предлагаю рассмотреть сл. ситуацию.
У нас есть объект parent и у него
два потомка child1 и child2.

Верно ли, что у этих объектов должен
быть общий thread_id?
Подозреваю, что да.

Тогда, для определения доступов к объекту
child2 мы вытаскиваем доступы к объекту child1
(и всем его потомкам, не так ли), что нам совершенно
не нужно.

Возможно, что в каком-то узле дерева объектов
поле irf будет равно 0, тогда нам, очевидно, не нужны все
его предки.

Получается, что нужно писать весьма сложный
код для создания параметра thread перед вызовом метода
@getRightsToObject[object;thread;acl;is_owner].

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

Мне представляется, что проще в классе auth определить
виртуальный метод getObject[object_id], который
бы выдавал нужные поля объекта в удобном виде.
Например, таблицей. Виртуальный, потому как в
общем случае, в классе auth, как я понимаю, мы
не знаем, что такое объект и откуда его брать.
Дальше, в коде метода getRightsToObject[]
вместо обращения к таблице thread можно поставить
вызов метода getObject. Поле acl тоже не нужно,
его можно получить по объекту.

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

Мне очень понравилась идея провести аналогию с NDS.
Бросаются в глаза отличие.
В NDS пользователи и группы тоже являются объектами.
И на них можно давать права!

Спасибо за внимание!