Плагин проверки авторства
Здравствуйте. Прошу помочь мне с написанием небольшого плагина. В бэкэнде нужно предотвратить редактирование ресурса (тикета) пользователем, который не является его автором.
Мне подсказали, что плагин нужен на событие OnBeforeDocFormSave, я совсем не дружу с modx, думаю должно быть что-то подобное:
Мне подсказали, что плагин нужен на событие OnBeforeDocFormSave, я совсем не дружу с modx, думаю должно быть что-то подобное:
<?php
switch($modx->event->name){
case 'OnBeforeDocFormSave':
{
if ($user->get('id') != $resource->get('createdby')) {
// что же здесь писать
};
}
}
Помогите, пожалуйста, допились это до нормального плагина, чтобы выводилась ошибка, что нет прав на редактирование и чтобы ресурс не сохранялся. Комментарии: 14
Вообще-то, только юзеры с разрешением edit_document могут редактировать чужие тикеты.
Т.е. если у юзера (менеджера контента) нет разрешения edit_document он в бэкэнде сможет создавать/редактировать свои тикеты?
Сомневаюсь. Я не понял сразу, что речь идёт про бэкенд, так что мой коммент бесполезен.
Да, вот в этом-то вся проблема. Я из-за этого разделения прав не могу запустить сайт, т.к. менеджеры — обычные непрограммисты (я их сам закидываю в соответствующую группу копирайтеров), которые могут писать свои статейки (тикеты) и закидывать к ним картинки через ms2Gallery, а могут нечаянно удалять и редактировать чужие статьи, и даже удалять раздел с тикетами, что очень печально.
Я так понимаю указанная часть работает? Тогда нужно просто вывести сообщение об ошибке…
Спасибо, Василий. Вы уже в который раз меня выручаете.
Сорри, просто запрос в поисковике набрал по поводу allert в MODX, а на той странице, которую открыл поисковик, непонятно что за версия MODXa.
Василию спасибо, код забрал на память…
Василию спасибо, код забрал на память…
У меня не так как на скрине сработало. Зависает сохранение (модальное окно Сохранение висит, пока страницу не обновишь), сообщения об ошибке нет, изменения не сохранены.
У меня этот код заработал, когда я поменял
$object->get('createdby')
на $resource->get('createdby')
Странно, должно и так работать. Вот код процессора, $object там жёстко прописан.
Возможно, у тебя старая версия MODX.
Возможно, у тебя старая версия MODX.
А где это нужно прописать?
Создаете плагин с указанным кодом и отмечаете событие «OnBeforeDocFormSave» на вкладке «Системные события». Сохраняете и вуаля.
500 ошибка. Смотри логи сервера и устраняй причину.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.