parser

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

 

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

можно

Misha v.3 15.07.2004 10:17

1. соотв. пользователи должны состоять в интересующих вас группах (записи в таблице auser_to_auser)
2. у пользователей и групп должны быть выставлены права на root (auser.rights)
3. ваши страницы для класса должны иметь поля: id, parent_id, irf
4. пользователям.группам должны быть даны права на соответствующие страницы (acl)

после этого можно пользоваться функциями класса:
1. инициализируете объект класса в $auth_data
2. достаете текущий тред страиц (по крайней мере от корневой до текущей) в $thread (это вам все равно надо будет делать, например чтобы построить меню раздела)
3. $acl[^auth_data.getFullACL[$thread]]
4. получаем права текущего пользователя на запрашиваемый им документ: $rights(^auth_data.getRightsToObject[$current_page;$thread;$acl])

собственно все (мог ошибиться, т.к. писал по памяти)... в зависимости от того, что вы получили в $rights формируете пользователю страницу (посылаете его нафиг, не показываете ему часть данных, disable-ти ему некоторые элементы интерфейса и т.д.)

что в $rights? просто цифра. битовая. каждый бит означает наличие какого-либо права.

что в irf (inherited right filter - маска наследуемых прав)? просто цифра. тоже битовая. в зависимости от того, в каком состоянии находится бит определяется, "стекают" права данные на объект выше на этот объект или нет.

P.S. на самом деле я не уверен, что вам нужна такая навороченая система раздачи прав (идеология содралась с Novell NDS), но я ей пользуюсь.