ZoomX icon indicating copy to clipboard operation
ZoomX copied to clipboard

fix unauthorized_page issue

Open crystaldaking opened this issue 2 years ago • 4 comments

If you create an access policy through the built-in ACL, then there is no way to return the page that is specified by default as unauthorized.

What I did

  1. If the resource does not exist, an exception with a 403 code will be returned (as it is now)
  2. If the resource exists, then I will redirect to this page (unfortunately with code 200)

Perhaps you have other ideas on how to fix it - I am ready to listen and help with the implementation

crystaldaking avatar Nov 22 '22 13:11 crystaldaking

Всё работает согласно логике. А логика следующая:

  • если включён строгий режим (т.е. режим фреймворка) или для текущей страницы есть роут (т.е. попали в зону фреймворка), то работает механизм фреймворка с отображением страницы соответствующей ошибки.
  • в противном случае работает MODX по привычной схеме.

Тут можно спорить - правильная ли логика или нет. Но твоё решение ломает эту логику. Т.е. нужно сначала придумать новую логику, а потом всё соглавно ей переписывать.

В режиме фреймворка нужно самому заботиться об обработке тех же ошибок (непривычно для модыксера). Таким образом, если нужно, например, средиректить на страницу unauthorize_page при попытке войти на закрытую страницу, нужно создать плагин с событием OnPageUnauthorized и там вызывать метод $modx->sendUnauthorizedPage();.

sergant210 avatar Nov 23 '22 04:11 sergant210

Действительно непривычно для модыксера. Меня в чате попросили помочь - я посмотрел и на коленке соорудил решение.

У человека страница попала в роуты, но при этом показывалась 500 ошибка хотя по хорошему должна была быть 403 :)

crystaldaking avatar Nov 23 '22 08:11 crystaldaking

А это скорее всего баг. На выходных погоняю тесты и проверю, что за wtf )

sergant210 avatar Nov 23 '22 09:11 sergant210

У человека страница попала в роуты, но при этом показывалась 500 ошибка хотя по хорошему должна была быть 403 :)

Погонял. У меня всё работает как задумывалось. Роут найден, но доступ к ресурсу запрещен. Вот что выводится - image

500 ошибки нет. Надо больше информации, чтобы воспроизвести проблему.

sergant210 avatar Nov 27 '22 07:11 sergant210