Изменение сообщения "permission_denied" в процессорах
Добрый день!
Есть сниппет, который вызывает процессор. Чтобы отработал процессор — настроены права доступа и если пользователь авторизован, то все отрабатывает нормально. Но если пользователь не авторизован (или права доступа не подходят), то возвращает ошибку, а точнее сообщение «permission_denied».
Подскажите пожалуйста, как будет правильно возвратить вместо сообщения «permission_denied» свое сообщение, к примеру «my_permission_denied».
Для примера взять стандартный процессор:
Есть сниппет, который вызывает процессор. Чтобы отработал процессор — настроены права доступа и если пользователь авторизован, то все отрабатывает нормально. Но если пользователь не авторизован (или права доступа не подходят), то возвращает ошибку, а точнее сообщение «permission_denied».
Подскажите пожалуйста, как будет правильно возвратить вместо сообщения «permission_denied» свое сообщение, к примеру «my_permission_denied».
Для примера взять стандартный процессор:
<?php
class TestItemCreateProcessor extends modObjectCreateProcessor {
public $permission = 'item_create';
/**
* @return bool
*/
public function beforeSet() {
...
return parent::beforeSet();
}
}
return 'TestItemCreateProcessor';
Комментарии: 4
Судя по всему или полностью переопределить метод run() или сделать свой run, где сначала сделать checkPermissions, если что вернуть свое сообщение, а затем вызвать base::run.
Точно, вы абсолютно правы, спасибо. Не заметил, что жестко вшито сообщение.
А на сколько корректно переопределять этот метод? В «Классные процессоры в MODX 2.2» сказано… цитирую «Обратите внимание, как много в списке жирного текста. Это функции, или переменные, которые доступны вам для переназначения и расширения, чтобы вы могли сделать, что вам нужно.» и метод run() не входит в этот список.
А на сколько корректно переопределять этот метод? В «Классные процессоры в MODX 2.2» сказано… цитирую «Обратите внимание, как много в списке жирного текста. Это функции, или переменные, которые доступны вам для переназначения и расширения, чтобы вы могли сделать, что вам нужно.» и метод run() не входит в этот список.
Ну целиком я бы переопределять не стал…
Вдруг кто-то еще переопределяет метод? Хотя по идее это довольно базовый метод, менять в нем нечего процессорам.
В том, чтобы сделать так:
Но, честно говоря, идей лучше у меня нет.
Вдруг кто-то еще переопределяет метод? Хотя по идее это довольно базовый метод, менять в нем нечего процессорам.
В том, чтобы сделать так:
public function run() {
if (!$this->checkPermissions()) {
$o = $this->failure($this->modx->lexicon('permission_denied'));
return new modProcessorResponse($this->modx,$o);
}
return base::run():
}
я вижу один минус… это двойной вызов checkPermissions().Но, честно говоря, идей лучше у меня нет.
Все понятно. Спасибо большое.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.