Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Misha v.3 01.10.2007 21:02
моё мнение: кешировать данные из SQL в xml не надо. разгрузив SQL сервер (который уже только и занят только тем что сидит и ждёт когда у него что-то спросят) вы создаёте жирный xdoc + имеете описанные у вас проблемы поиска пересечений.^self.initACL[]2. дообавляем в класс метод @initACL[]
@initACL[] ^if($is_logon){ ^self.loadUserGroups[] ^use[ACL.p] $oACL[^ACL::create[ $.oSql[$oSql] ]] } $result[] #end @initACL[]3. добавляем в класс примерно такой метод:
@isHaveAccess[sAccessAbbr;sRefererType;iRefererId] ^if($is_logon){ $result(def $oACL && ^oACL.isHaveRight[$sAccessAbbr;^oACL.getRightsToItem[$user;$sRefererType;$.id($iRefererId)]]) }{ $result(false) } #end @isHaveAccess[]4. где надо проверяем:
^if(^oAuth.isHaveAccess[R;tree;666]){ <p>User have 'read' access to object in tree with id=666.</p> }{ <p>Access denied.</p> }P.S. правда пришлось ещё малость изменить сам auth.p, однако там вроде с текущей выложенной версией нет обратно несовместимых изменений, поэтому тоже могу обновить...