Плагин проверки авторства

Здравствуйте. Прошу помочь мне с написанием небольшого плагина. В бэкэнде нужно предотвратить редактирование ресурса (тикета) пользователем, который не является его автором.
Мне подсказали, что плагин нужен на событие OnBeforeDocFormSave, я совсем не дружу с modx, думаю должно быть что-то подобное:
<?php
switch($modx->event->name){    
    case 'OnBeforeDocFormSave':
	{
		if ($user->get('id') != $resource->get('createdby')) { 
			// что же здесь писать
		};
	}
}
Помогите, пожалуйста, допились это до нормального плагина, чтобы выводилась ошибка, что нет прав на редактирование и чтобы ресурс не сохранялся.
Виталий Барышников
28 декабря 2015, 11:19
modx.pro
3
1 930
0

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

Василий Наумкин
28 декабря 2015, 14:22
0
Вообще-то, только юзеры с разрешением edit_document могут редактировать чужие тикеты.
    Виталий Барышников
    28 декабря 2015, 14:32
    0
    Т.е. если у юзера (менеджера контента) нет разрешения edit_document он в бэкэнде сможет создавать/редактировать свои тикеты?
      Василий Наумкин
      28 декабря 2015, 14:34
      0
      Сомневаюсь. Я не понял сразу, что речь идёт про бэкенд, так что мой коммент бесполезен.
        Виталий Барышников
        28 декабря 2015, 15:03
        0
        Да, вот в этом-то вся проблема. Я из-за этого разделения прав не могу запустить сайт, т.к. менеджеры — обычные непрограммисты (я их сам закидываю в соответствующую группу копирайтеров), которые могут писать свои статейки (тикеты) и закидывать к ним картинки через ms2Gallery, а могут нечаянно удалять и редактировать чужие статьи, и даже удалять раздел с тикетами, что очень печально.
    Евгений
    28 декабря 2015, 15:09
    0
    Я так понимаю указанная часть работает? Тогда нужно просто вывести сообщение об ошибке
      Василий Наумкин
      28 декабря 2015, 15:30
      4
      +3
      Обожемой, зачем откапывать рецепты из Evolution?
      <?php
      switch ($modx->event->name) {    
      	case 'OnBeforeDocFormSave':
      		if ($modx->user->get('id') != $object->get('createdby')) { 
      			$modx->event->output('Ошибка! У вас нет прав редактировать этот документ');
      		};
      	break;
      }

        Виталий Барышников
        28 декабря 2015, 16:14
        0
        Спасибо, Василий. Вы уже в который раз меня выручаете.
          Евгений
          28 декабря 2015, 16:35
          0
          Сорри, просто запрос в поисковике набрал по поводу allert в MODX, а на той странице, которую открыл поисковик, непонятно что за версия MODXa.
          Василию спасибо, код забрал на память…
            Виталий Барышников
            28 декабря 2015, 16:46
            0
            У меня не так как на скрине сработало. Зависает сохранение (модальное окно Сохранение висит, пока страницу не обновишь), сообщения об ошибке нет, изменения не сохранены.
              Виталий Барышников
              30 декабря 2015, 09:20
              0
              У меня этот код заработал, когда я поменял
              $object->get('createdby')
              на
              $resource->get('createdby')
              adminixi
              28 апреля 2016, 18:26
              -1
              А где это нужно прописать?
                Сергей Шлоков
                28 апреля 2016, 20:28
                1
                +1
                Создаете плагин с указанным кодом и отмечаете событие «OnBeforeDocFormSave» на вкладке «Системные события». Сохраняете и вуаля.
            Воеводский Михаил
            28 декабря 2015, 22:29
            0
            500 ошибка. Смотри логи сервера и устраняй причину.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              14