Обновление ресурса через сервис

Делаю апи, которое в том числе обновляет ресурсы, и вот в методе обновления где нужно обновить данные вызываю $this->modx->runProcessor('resource/update', $data); в результате получаю permission_denied.

Подскажите как авторизовать анонимного пользователя?

Спасибо!
Евгений
15 ноября 2022, 00:02
modx.pro
754
0

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

Роман
15 ноября 2022, 09:29
0
Только права админа нужно дать.
$username = 'robot';
$password = 'Qd5ZsZdS';
$data = array(
    'username' => $username,
    'password' => $password,
    'rememberme' => 1,
    'login_context' => 'web',
);    
$response = $modx->runProcessor('/security/login', $data);
if ($response->isError()) {
    $modx->log(modX::LOG_LEVEL_ERROR, 'login error. Username: '.$username.', Message: '.$response->getMessage());
}
Ну и в конце лучше выйти:
$response = $modx->runProcessor('/security/logout');
    Артур Шевченко
    15 ноября 2022, 11:42
    1
    +1
    Можно проще
    $this->modx->user = $this->modx->getobject('modUser', 1); // здесь  любой пользователь из группы Администратор
    $this->modx->runProcessor('resource/update', $data);
      Евгений
      15 ноября 2022, 12:03
      0
      ну да, генерировать токен, передавать его в заголовке а дальше выбирать конкретного пользователя

      пример выше работает только после перезагрузки страницы.
      этот способ работает сразу.
      deleted
      16 ноября 2022, 11:33
      0
      а зачем через процессор? медленно же
        Евгений
        16 ноября 2022, 11:41
        0
        зато быстро и надежно, ничего не сломается после обновления
        vectorserver
        16 ноября 2022, 12:11
        0
        Вот так:
        <?php
        //define('MODX_API_MODE', true);
        //require 'index.php';
        
        /* @var modX $modx */
        
        //Дадим права админа навыполнение процессора
        $modx->user = $modx->getObject('modUser', 1);
        
        //Данные для обновления ресурса
        $data = [
            'id'=>1,
            'introtext'=>'ццццццццццццц',
            'alias'=>'index',
            'context_key' => 'web',
            'tvs' => true,// save tv
            'tv3' => 'abc', //tv +id
        ];
        
        //Запускаем процессор
        $response = $modx->runProcessor('resource/update', $data);
        
        if ($response->isError()) {
            $out = $response->getMessage();
        } else{
            $out = $response->response;
        }
        
        
        var_dump($out);
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          6