You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Во многих процессорах мы можем видеть проверку permission, например рассмотрим процессор MiniShop3\Processors\Settings\Link\Remove
в нем видим метод
public function initialize()
{
if (!$this->modx->hasPermission($this->permission)) {
return $this->modx->lexicon('access_denied');
}
return parent::initialize();
}
Однако, если мы посмотрим базовый процессор ModelProcessor мы видим наличие в нем функции checkPermissions с таким же содержанием. В свою очередь checkPermissions вызывается в функции run() базового Processor. Таким образом permission проверяются дважды: в методе checkPermissions() и в initialize().
Предлагаю
Проверить необходимость таких проверок в процессорах miniShop3, если они действительно не нужны - удалить их из процессоров.
Activity
biz87 commentedon Feb 15, 2026
Анализ актуальности
Проблема подтверждена и по-прежнему актуальна.
Текущее состояние
56 процессоров содержат дублирующую проверку прав — и в
checkPermissions()(наследуется отModelProcessor), и вinitialize():Базовый
ModelProcessor::checkPermissions()уже проверяет$this->permissionавтоматически и вызывается вProcessor::run()доinitialize().Нюанс: разные сообщения об ошибке
checkPermissions()возвращаетpermission_denied_processorinitialize()возвращаетaccess_deniedНужно решить, какое сообщение оставить.
Три паттерна в кодовой базе
initialize()checkPermissions()Product/Delete.php) — оставитьПлан работ
initialize()с проверкой прав из 56 процессоров$permissionзадано корректно в каждомcheckPermissions()без измененийaccess_deniedиpermission_denied_processorне нуждаются в унификацииОбъём: ~56 файлов, механическая правка, низкий риск. Потребуется тестирование прав доступа после изменений.