Создание товаров через ЛК из контекста web

Задача — дать пользователям возможность создавать товары через ЛК из контекста web.
Не получается запустить процессор $newProduct = $modx->runProcessor('resource/create', [...]);
permission_denied_processor

Пытался задавать разные права группе пользователей, пока никак. Если поставить Неограниченные права, то все запускается.
Информации, какие права требуются для процессора не нашел, пробовал выдавать права new_document_in_root и тд.

Если кто сталкивался, подскажите в сторону каких прав копать.
Dima
08 марта 2025, 16:17
modx.pro
277
0

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

Артур Шевченко
08 марта 2025, 18:07
+1
Делай так
oldUser = $modx->user;
$modx->user = $modx->getObject('modUser', 1);
$modx->runProcessor('resource/create', $_POST);
$modx->user = $oldUser;
    Dima
    10 марта 2025, 10:24
    0
    Благодарю, почему-то сначала даже не думал в эту сторону
      Наумов Алексей
      10 марта 2025, 14:43
      0
      А потом злющий хакер меняет в форме поле «id» на «1», а «content» на слово из 3-х букв…
        Артур Шевченко
        10 марта 2025, 14:48
        0
        @Наумов Алексей конечно же прав, нельзя передавать $_POST как есть, нужно его валидировать. Однако вопрос был не про безопасность, а про то как сохранить данные))) Безопасность это отдельная обширная тема.
      Ivan K.
      10 марта 2025, 17:27
      0
      Я решал похожую задачу не много другим способом, юзер отправляет запрос на создание ресурса из контекста web, этот запрос пишется в собственную отдельную таблицу, затем скрипт по крону используя API создаёт ресурсы процессором согласно данными из этой таблицы, получается как бы работа в «фоновом режиме» и нет проблем с правами на создание ресурсов.
        Артур Шевченко
        10 марта 2025, 21:48
        0
        В Modx есть очереди, можно было не делать отдельную таблицу, а использовать их. Но это имеет смысл только если на создание уходит больше 30 секунд, что как правило редкость.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6