Удаление ресурса, тикета с frontend
Добрый день, бьюсь над проблемой удаления ресурса с фронтенд части сайта.
Но какие бы я права не накладывал, все равно на выходе удаления не происходит, ввиду отсутствия прав.
Подскажите, кто как реализовывал удаление ресурсов, созданных пользователем с сайта.
<?php
if (!isset($_GET['docid']) and !$id = intval($_GET['docid'])) {
return;
}
$response = $modx->runProcessor('resource/delete', array('id' => $id));
if (!$response->isError()) {
return 'Ресурс отмечен как удаленный!';
// echo $response->getResponse();
}
Cниппет вызываемый из сайта, в который передается id документа.Но какие бы я права не накладывал, все равно на выходе удаления не происходит, ввиду отсутствия прав.
Подскажите, кто как реализовывал удаление ресурсов, созданных пользователем с сайта.
Комментарии: 7
Вот исходник — https://github.com/bezumkin/Tickets/blob/master/core/components/tickets/processors/mgr/ticket/delete.class.phpА вот тут проверяются права
Думаю что вы сможете разобраться как реализовать безопасный функционал без чужих костылей.
Посмотрев внимательно эти 2 исходника — картина проясняется.
Думаю что вы сможете разобраться как реализовать безопасный функционал без чужих костылей.
Посмотрев внимательно эти 2 исходника — картина проясняется.
Это вызов со стороны mgr, как сделать проверку по пользователю на фронте?
Процессоры как раз решают эту проблему.
Процессоры как раз решают эту проблему.
Может через обычный $modx->getObject и set('deleted', 1)? Всегда срабатывало.
Не а права можешь сам проверять, например если пользователь является автором и в нужной группе пользователей.
Не а права можешь сам проверять, например если пользователь является автором и в нужной группе пользователей.
Можно ли показать пример проверки прав на ресурс. Сколько не искал — ничего.
<?php
$res = $modx->getObject('modResource', $_GET['docid']);
if($res) {
$createdby = $res->get('createdby');
if($modx->user->isMember('Administrator') || $createdby == $modx->user->id) { // если админ или если ты автор ресурса
$res->set('deleted', 1);
if($res->save()) {
return 'Ресурс отмечен как удаленный!';
}
}
}
Благодарю! Сделал по другому, но логику понял.
Приветствую, поделитесь пожалуйста решением, как реализовали удаление тикета с фронтента?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.