Дать доступ к разделу тикетов только одной группе

Задача простая — есть раздел тикетов, который доступен только одной группе. Я выставляю этот доступ и левые пользователи раздел не видят, но…

Сами тикеты создаются из фронта и к ним доступ стоит всем. Логично предположить, что на них будет распространяться родительские права, но нет. Раздел не доступен, а тикеты доступны.

Расставлять вручную все права на документы, которые пишут пользователи — глупо. Наследования прав, как я понял нет. Какое решение?

Второй вопрос, что сейчас делать с теми документами, кому неправденые права проставлены по моему недосмотру.

P.S. Надеюсь, что я что-то накосячил с наследованием, потому что мне кажется это наиболее логичным поведением. Не договорился с мамой — не получишь дочку.
Станислав Бодягин
21 декабря 2013, 06:42
modx.pro
1
751
0

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

Василий Наумкин
21 декабря 2013, 12:17
0
Поведение, может, и логичное, но нереальное. Иначе нужно проверять права ВСЕХ родителей документа и вычислять, что может юзер, а что нет — а это очень медленно.

Решение простое — свой плагин с проверкой чего нужно на OnLoadWebPage. Нужно смотреть в parent тикета и проверять его разрешения.
У меня схожим образом работают платные уроки.
    Станислав Бодягин
    22 декабря 2013, 20:16
    0
    Василий, спасибо. Разбираюсь как это делать, пол дня просидел над таким вот странным поведением. Нашел уже решение другое, но все не могу понять.

    Делаю так:

    $resource = $modx->resource;
    $parent = $resource->getOne('Parent');
    echo 'parent: '.$parent->get('pagetitle');
    В хроме работет правильно. В сафари вылится, потому что объект родителя не существует. Когда это PHP стал зависеть от браузера.

    Сейчас забираю:

    $resource = $modx->resource;
    $parentId = $resource->get('parent');
    echo 'parent-id: '.$parentId;
    Выдает в обоих браузерах верно.
      Василий Наумкин
      22 декабря 2013, 20:59
      0
      В первом коде ты пытаешься получить объект родителя, а во втором поле parent.
      Насколько я помню, у родителя ограничен доступ для гостей. Значит в хроме ты авторизован, а в сафари — нет.

      Вот и вся разгадка такому странному поведению. Если нет права на объект, то MODX его даже не загрузит.

      Поэтому для нормальной работы нужно бы дать политику Load only группе anonymous. Без view это позволит получить объект, но не показывать на экран.
        Станислав Бодягин
        22 декабря 2013, 21:10
        0
        Спасибо огромное! Вот даже не подумал о таком варианте поведения. Буду разбираться как лучше сделать. Вы, ваши пакеты и ваш сайт очень-очень помогает. Теперь ищу решения сначала тут, а потом в гугле.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
5