pdoResources. Учет прав доступа на ресурс
Здравствуйте.
Пытаюсь заменить getResources на pdoResources. Использую pdoTools 2.1.3, MODx Revolution 2.2.14-pl traditional.
Но pdoResources выводит список ресурсов без учета прав пользователя на эти ресурсы.
Вызов pdoResources
[[!pdoResources?
&parents=`3672`
&limit=`0`
&depth=`0`
&sortby=`{«publishedon»:«DESC»}`
&sortdir=`DESC`
&hideContainers=`1`
&includeTVs=`1`
&processTVs=`1`
&tpl=`newsGRTest_tpl`
]]
Нашла только статью 2013 года о том, что не реализован функционал, но там версия pdoTools 1.6.0-pl bezumkin.ru/sections/components/1775/
Подскажите, пожалуйста, в чем проблема.
Пытаюсь заменить getResources на pdoResources. Использую pdoTools 2.1.3, MODx Revolution 2.2.14-pl traditional.
Но pdoResources выводит список ресурсов без учета прав пользователя на эти ресурсы.
Вызов pdoResources
[[!pdoResources?
&parents=`3672`
&limit=`0`
&depth=`0`
&sortby=`{«publishedon»:«DESC»}`
&sortdir=`DESC`
&hideContainers=`1`
&includeTVs=`1`
&processTVs=`1`
&tpl=`newsGRTest_tpl`
]]
Нашла только статью 2013 года о том, что не реализован функционал, но там версия pdoTools 1.6.0-pl bezumkin.ru/sections/components/1775/
Подскажите, пожалуйста, в чем проблема.
Комментарии: 16
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
и найти параметр checkPermissions.
Далее вбить его в поиск на этом сайте, что бы увидеть примеры modx.pro/search?query=checkPermissions
в общем вам скорее всего нужно
Еще спрошу.
Теперь все это хозяйство оборачиваю в pdoPage. И тут не все гладко проходит.
Вывожу документы в чанке news_tpl. Пытаюсь сквозную нумерацию у документов на страницах сделать.
Получается кривота. Всего 8 документов.
На первой странице выводится один документ; на след. странице три, но нумерация с 5 документа, на третьей 4 документа нумерация с 9-го… Почему?
Потому что сначала выбирается 4 ресурса из БД, а потом проверяются права. В итоге видим ту картину, что вы описали. А проверять права в момент выборки нельзя.
Не сделать корректную постраничную навигацию с pdoPage и pdoResources с проверкой прав таким образом…
Копался в этом же направлении сам как-то, в итоге забил.
Алексей, а других вариантов реализации такой постраничной навигации нет?
Поэтому они исключаются после. И никак этого не избежать, разве что самостоятельно выбирать ресурсы по каким-то другим параметрам, типа родителя или шаблона, а не фильтровать по разрешению.
Есть новости. Каждая входит в разные группы ресурсов.
Вызываем pdoResources с limit=10. Администратор увидит все 10, Менеджер- 2, Гость — 1. Хотя в БД есть и другие новости предназначенные для Менеджера и Гостя. Но за счет того, что выбираются они без учета прав, страдают все кроме Администратора :)
Я с удовольствием освою этот трюк и даже включу в функционал pdoTools.
Вложенный вызов в &resources вернёт список всех подходящих ресурсов, которые прошли проверку для юзера. А второй вызов будет работать уже с этими ресурсами без проверок — и выведет их разбитыми на страницы как положено.
Не проверял, но должно работать.
Правда, наверное, будут проблемы с производительностью, если количество дочерних ресурсов будет большим, ведь для каждого из них будет производится проверка прав.
Причем, смотреть в условиях определенного проекта.
Можно написать свой сниппет, который будет вызывать pdoResources и кэшировать эти ids для конкретного юзера. Можно даже, наверное, сделать это и средствами самого pdoResources, используя параметры &cacheKey и &cacheTime, но мне сейчас некогда проверять.
Направление работы должно быть понятно.
Дело мастера боится :)
Результат работы предложенного Вами способа.
Про производительность пока ничего сказать не могу. Но, конкретно с новостями, думаю, никакой трагедии наблюдаться на должно. Количество их невелико. Зато «дырок» и недодач не будет :)
У нас, например, вы можете видеть такие цифры внизу каждой страницы.
В первом же комментарии дан правильный ответ.