Массовые права на ресурсы MODX
Привет всем, Товарищи, подскажите пожалуйста как сделать в MODX так что бы права, которые создаёшь для группы ресурсов распространялись рекурсивно если ресурс является контейнером с дочерними элементами?
Не дело же добавлять каждый дочерний элемент в группу, если можно туда добавить их общего родителя, но в MODX такая затея не работает
Получается вот что:
1)Есть ресурс-контейнер в нём 5 000 дочерних документов
2)Есть группа ресурсов с ограниченными правами
3)Для того что бы добавить в неё элемент нужно либо перетаскивать ресурсы в интерфейсе групп ресурсов
Либо у каждого ресурса во вкладке — группы ресурсов ставить галку.
4)Проблема — если я добавляю любым вышеперечисленным способом ресурс-контейнер в эту закрытую группу ресурсов, то доступ будет закрыт именно к ней, но не к её дочерним элементам. Получается, что надо 5 000 ресурсов вручную добавить в закрытую группу — по-моему это не нормально.
Есть ли какое-то решение данной проблемы?
Может хоть подскажите на крайний случай как хоть через консоль и MODX API быстро проставить этим ресурсам нужную галочку.
Я предлагал автору компонента adminTools реализовать такую штуку, он предложил идею в сообществе, но никто на неё не откликнулся и функционал так и не был реализован.
Товарищи, неужели никто не сталкивается с таким неудобством, может я что-то делаю не правильно — направьте на верный путь))
Не дело же добавлять каждый дочерний элемент в группу, если можно туда добавить их общего родителя, но в MODX такая затея не работает
Получается вот что:
1)Есть ресурс-контейнер в нём 5 000 дочерних документов
2)Есть группа ресурсов с ограниченными правами
3)Для того что бы добавить в неё элемент нужно либо перетаскивать ресурсы в интерфейсе групп ресурсов
Либо у каждого ресурса во вкладке — группы ресурсов ставить галку.
4)Проблема — если я добавляю любым вышеперечисленным способом ресурс-контейнер в эту закрытую группу ресурсов, то доступ будет закрыт именно к ней, но не к её дочерним элементам. Получается, что надо 5 000 ресурсов вручную добавить в закрытую группу — по-моему это не нормально.
Есть ли какое-то решение данной проблемы?
Может хоть подскажите на крайний случай как хоть через консоль и MODX API быстро проставить этим ресурсам нужную галочку.
Я предлагал автору компонента adminTools реализовать такую штуку, он предложил идею в сообществе, но никто на неё не откликнулся и функционал так и не был реализован.
Товарищи, неужели никто не сталкивается с таким неудобством, может я что-то делаю не правильно — направьте на верный путь))
Комментарии: 15
Что-то вопросы, касающиеся авторизации не очень актуальны в нашем сообществе))
Тогда просьба к нашим ГУРУ — ребята, подскажите, как в MODX массово устанавливать права на ресурсы?
Тогда просьба к нашим ГУРУ — ребята, подскажите, как в MODX массово устанавливать права на ресурсы?
В Новом году постараюсь найти время и сделать решение с пресетами для шаблонов.
Сергей, очень будем ждать появления такого функционала в AdminTools
Решением для повседневности является написание плагина, который при сохранении ресурса будет присоединять его к той же группе ресурсов, к которой относится родитель.
В качестве подсказки направления: существует метод modResource::joinGroup($group);, который необходимо использовать для присоединения ресурса к группе. В качестве параметра принимает один из трех вариантов:
1) Объект modResourceGroup
2) Название группы
3) ID группы
В качестве подсказки направления: существует метод modResource::joinGroup($group);, который необходимо использовать для присоединения ресурса к группе. В качестве параметра принимает один из трех вариантов:
1) Объект modResourceGroup
2) Название группы
3) ID группы
Михаил, спасибо огромное за оперативный ответ, и Ваша подсказка — то, что мне нужно. Ещё раз спасибо!
Если говорить о массовом присоединении, то настоятельно рекомендую сначала получить объект группы и передавать его в качестве параметра. Иначе MODX будет выполнять getObject() для каждого вызова функции, что сильно скажется на скорости работы.
Вроде MODX так и работает что для родителя права устанавливаешь а для дочерних они по умолчанию наследуются.
А вы как права проверяете?
А вы как права проверяете?
Наверное проще будет проверять права родителя чтобы не парится с ресурсами. и проставлять для каждого
Ну если бы всё было так просто как Вы говорите, наверное такого вопроса и не возникло, или Вы знаете какой то большой секрет, как это в MODX делается на раз-два? Тогда поделитесь с сообществом))
Все зависит от задачи которую нужно решить.
Доступ к ресурсу?
Тогда вот так:
Доступ к ресурсу?
Тогда вот так:
$parent = $modx->resource->get('parent');
/* @var modResource $modResource*/
if($modResource = $modx->getObject('modResource', array('id' => $parent))){
// Политика доступа к ресурсам примененная на вкладке "Группа ресурсов"
$Policy = $modResource->findPolicy('web');
//$Policy массив с данными по ресурсу
}
А какие вы доступы вы уже на применяете для группы, это опять же нужно смотреть.
Ну Вас вообще куда то не туда понесло))) Изначальный вопрос — как в MODX загнать контейнер и все его дочерние элементы в нужную группу ресурсов? В MODX нет удобного механизма — перетащил контейнер-родитель в группу ресурсов а с ним разом и все его дочерние элементы туда же, вот и приходится их все таскать по одной штуке, либо у все галочку на соответствующей вкладке выставлять, а теперь благодаря, нашим мудрейшим товарищам, я узнал про метод modResource::joinGroup(), с помощью которого очень легко решить поставленную задачу.
Ну так я и говорю что не заниматься вопросом как перетащить! В место этого проверить назначены права родителей выше!
Это просто другой метод решения задачи.
Это просто другой метод решения задачи.
Всё теперь понял Ваш ход мыслей) действительно другой взгляд на задачу) Ну здорово тогда! — теперь у нас есть на вооружении целых два метода решения задачи, спасибо и Вам, уважаемый bustep.ru, думаю сообществу будет полезна данная информация.
Как в итоге решил задачу? =)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.