Массовые права на ресурсы MODX

Привет всем, Товарищи, подскажите пожалуйста как сделать в MODX так что бы права, которые создаёшь для группы ресурсов распространялись рекурсивно если ресурс является контейнером с дочерними элементами?
Не дело же добавлять каждый дочерний элемент в группу, если можно туда добавить их общего родителя, но в MODX такая затея не работает
Получается вот что:

1)Есть ресурс-контейнер в нём 5 000 дочерних документов
2)Есть группа ресурсов с ограниченными правами
3)Для того что бы добавить в неё элемент нужно либо перетаскивать ресурсы в интерфейсе групп ресурсов
Либо у каждого ресурса во вкладке — группы ресурсов ставить галку.
4)Проблема — если я добавляю любым вышеперечисленным способом ресурс-контейнер в эту закрытую группу ресурсов, то доступ будет закрыт именно к ней, но не к её дочерним элементам. Получается, что надо 5 000 ресурсов вручную добавить в закрытую группу — по-моему это не нормально.

Есть ли какое-то решение данной проблемы?
Может хоть подскажите на крайний случай как хоть через консоль и MODX API быстро проставить этим ресурсам нужную галочку.

Я предлагал автору компонента adminTools реализовать такую штуку, он предложил идею в сообществе, но никто на неё не откликнулся и функционал так и не был реализован.
Товарищи, неужели никто не сталкивается с таким неудобством, может я что-то делаю не правильно — направьте на верный путь))
Семён Кудрявцев
23 декабря 2016, 10:53
modx.pro
2 186
0

Комментарии: 15

Семён Кудрявцев
27 декабря 2016, 15:13
0
Что-то вопросы, касающиеся авторизации не очень актуальны в нашем сообществе))
Тогда просьба к нашим ГУРУ — ребята, подскажите, как в MODX массово устанавливать права на ресурсы?
    Сергей Шлоков
    27 декабря 2016, 17:56
    +1
    В Новом году постараюсь найти время и сделать решение с пресетами для шаблонов.
      Семён Кудрявцев
      27 декабря 2016, 19:15
      0
      Сергей, очень будем ждать появления такого функционала в AdminTools
    Воеводский Михаил
    27 декабря 2016, 15:29
    +1
    Решением для повседневности является написание плагина, который при сохранении ресурса будет присоединять его к той же группе ресурсов, к которой относится родитель.

    В качестве подсказки направления: существует метод modResource::joinGroup($group);, который необходимо использовать для присоединения ресурса к группе. В качестве параметра принимает один из трех вариантов:
    1) Объект modResourceGroup
    2) Название группы
    3) ID группы
      Семён Кудрявцев
      27 декабря 2016, 15:55
      0
      Михаил, спасибо огромное за оперативный ответ, и Ваша подсказка — то, что мне нужно. Ещё раз спасибо!
        Воеводский Михаил
        27 декабря 2016, 16:00
        +1
        Если говорить о массовом присоединении, то настоятельно рекомендую сначала получить объект группы и передавать его в качестве параметра. Иначе MODX будет выполнять getObject() для каждого вызова функции, что сильно скажется на скорости работы.
      Андрей Степаненко
      27 декабря 2016, 18:05
      0
      Вроде MODX так и работает что для родителя права устанавливаешь а для дочерних они по умолчанию наследуются.
      А вы как права проверяете?
        Андрей Степаненко
        27 декабря 2016, 18:05
        0
        Наверное проще будет проверять права родителя чтобы не парится с ресурсами. и проставлять для каждого
          Семён Кудрявцев
          27 декабря 2016, 19:18
          0
          Ну если бы всё было так просто как Вы говорите, наверное такого вопроса и не возникло, или Вы знаете какой то большой секрет, как это в MODX делается на раз-два? Тогда поделитесь с сообществом))
            Андрей Степаненко
            27 декабря 2016, 19:28
            1
            0
            Все зависит от задачи которую нужно решить.
            Доступ к ресурсу?
            Тогда вот так:
            $parent = $modx->resource->get('parent');
            
            /* @var modResource $modResource*/
            if($modResource = $modx->getObject('modResource', array('id' => $parent))){
                // Политика доступа к ресурсам примененная на вкладке "Группа ресурсов"
                $Policy = $modResource->findPolicy('web');
                //$Policy массив с данными по ресурсу
            }
              Андрей Степаненко
              27 декабря 2016, 19:29
              0
              А какие вы доступы вы уже на применяете для группы, это опять же нужно смотреть.
                Семён Кудрявцев
                27 декабря 2016, 19:38
                0
                Ну Вас вообще куда то не туда понесло))) Изначальный вопрос — как в MODX загнать контейнер и все его дочерние элементы в нужную группу ресурсов? В MODX нет удобного механизма — перетащил контейнер-родитель в группу ресурсов а с ним разом и все его дочерние элементы туда же, вот и приходится их все таскать по одной штуке, либо у все галочку на соответствующей вкладке выставлять, а теперь благодаря, нашим мудрейшим товарищам, я узнал про метод modResource::joinGroup(), с помощью которого очень легко решить поставленную задачу.
                  Андрей Степаненко
                  27 декабря 2016, 19:41
                  0
                  Ну так я и говорю что не заниматься вопросом как перетащить! В место этого проверить назначены права родителей выше!
                  Это просто другой метод решения задачи.
                    Семён Кудрявцев
                    27 декабря 2016, 19:58
                    0
                    Всё теперь понял Ваш ход мыслей) действительно другой взгляд на задачу) Ну здорово тогда! — теперь у нас есть на вооружении целых два метода решения задачи, спасибо и Вам, уважаемый bustep.ru, думаю сообществу будет полезна данная информация.
                      Bor
                      Bor
                      01 июня 2020, 18:03
                      0
                      Как в итоге решил задачу? =)
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            15