| Новости | 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, однако там вроде с текущей выложенной версией нет обратно несовместимых изменений, поэтому тоже могу обновить...