Какие права доступа нужно давать пользователям для удаление своих записей

Всем привет, сделал добавление и изменения записей со стороны фронтенда и хотел сделать еще удаление записей, но проблема в том, что у админа удаление работает, а у пользователей нет. В журнале ошибок выскакивает ошибка, что у пользователя нет прав на удаление. Когда пользователь нажимает на ссылку «Удалить», то появляется просто текст Array. Сейчас стоит web, member-9999, load,list and view, но пробовал ставить разные политики доступа, ничего не меняется.
Код сниппета
<?php
if (!empty($_GET['action']) && $_GET['action'] === 'delete' && !empty($_GET['resourceId'])) {
    $resourceId = intval($_GET['resourceId']);
    $resource = $modx->getObject('modResource', $resourceId);

    // Проверка, существует ли ресурс
    if (!$resource) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: Ресурс с ID ' . $resourceId . ' не найден.');
        return $modx->error->failure('Ресурс не найден.');
    }

    // Проверка прав доступа
    if (!$modx->hasPermission('delete_document')) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: У пользователя нет прав на удаление ресурса с ID ' . $resourceId);
        return $modx->error->failure('У вас нет прав на удаление этого ресурса.');
    }

    // Проверка, является ли текущий пользователь создателем ресурса
    $userId = $modx->user->get('id');
    if ($resource->get('createdby') != $userId) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: Пользователь с ID ' . $userId . ' пытался удалить чужой ресурс с ID ' . $resourceId);
        return $modx->error->failure('Вы можете удалять только свои записи.');
    }

    // Удаление ресурса
    if ($resource->remove()) {
        $modx->log(modX::LOG_LEVEL_INFO, 'Ресурс с ID ' . $resourceId . ' успешно удален пользователем с ID ' . $userId);
        // Перенаправление после успешного удаления
        $modx->sendRedirect($modx->makeUrl($modx->getOption('site_start'), '', '', 'full'));
    } else {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: Не удалось удалить ресурс с ID ' . $resourceId);
        return $modx->error->failure('Не удалось удалить ресурс.');
    }
}
Ссылка на удаление
a href="[[~[[*id]]]]?action=delete&resourceId=[[+id]]" onclick="return confirm('Вы уверены, что хотите удалить этот ресурс?');">Удалить ресурс</a>
Может кто в курсе какие права доступа вставлять или может я вообще неправильно все делаю.
Илья
18 марта 2025, 11:58
modx.pro

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

Артур Шевченко
18 марта 2025, 14:46
+2
Зачем ты вообще проверяешь право на удаление? Просто удали этот код
// Проверка прав доступа
    if (!$modx->hasPermission('delete_document')) {
        $modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: У пользователя нет прав на удаление ресурса с ID ' . $resourceId);
        return $modx->error->failure('У вас нет прав на удаление этого ресурса.');
    }
    Илья
    18 марта 2025, 14:54
    0
    Спасибо, убрал, заработало.
      Александр Туниеков
      21 марта 2025, 15:36
      0
      Круто. А я слона не заметил :-) разбираться с шаблонами политик полез :-)
      Хотя в курсе же был что доступ только на процессорах проверяется. Но засомневался.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3