Какие права доступа нужно давать пользователям для удаление своих записей
Всем привет, сделал добавление и изменения записей со стороны фронтенда и хотел сделать еще удаление записей, но проблема в том, что у админа удаление работает, а у пользователей нет. В журнале ошибок выскакивает ошибка, что у пользователя нет прав на удаление. Когда пользователь нажимает на ссылку «Удалить», то появляется просто текст 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>
Может кто в курсе какие права доступа вставлять или может я вообще неправильно все делаю. Комментарии: 3
Зачем ты вообще проверяешь право на удаление? Просто удали этот код
// Проверка прав доступа
if (!$modx->hasPermission('delete_document')) {
$modx->log(modX::LOG_LEVEL_ERROR, 'Ошибка: У пользователя нет прав на удаление ресурса с ID ' . $resourceId);
return $modx->error->failure('У вас нет прав на удаление этого ресурса.');
}
Спасибо, убрал, заработало.
Круто. А я слона не заметил :-) разбираться с шаблонами политик полез :-)
Хотя в курсе же был что доступ только на процессорах проверяется. Но засомневался.
Хотя в курсе же был что доступ только на процессорах проверяется. Но засомневался.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.