ZoomX
ZoomX copied to clipboard
fix unauthorized_page issue
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
- If the resource does not exist, an exception with a 403 code will be returned (as it is now)
- 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
Всё работает согласно логике. А логика следующая:
- если включён строгий режим (т.е. режим фреймворка) или для текущей страницы есть роут (т.е. попали в зону фреймворка), то работает механизм фреймворка с отображением страницы соответствующей ошибки.
- в противном случае работает MODX по привычной схеме.
Тут можно спорить - правильная ли логика или нет. Но твоё решение ломает эту логику. Т.е. нужно сначала придумать новую логику, а потом всё соглавно ей переписывать.
В режиме фреймворка нужно самому заботиться об обработке тех же ошибок (непривычно для модыксера). Таким образом, если нужно, например, средиректить на страницу unauthorize_page при попытке войти на закрытую страницу, нужно создать плагин с событием OnPageUnauthorized и там вызывать метод $modx->sendUnauthorizedPage();
.
Действительно непривычно для модыксера. Меня в чате попросили помочь - я посмотрел и на коленке соорудил решение.
У человека страница попала в роуты, но при этом показывалась 500 ошибка хотя по хорошему должна была быть 403 :)
А это скорее всего баг. На выходных погоняю тесты и проверю, что за wtf )
У человека страница попала в роуты, но при этом показывалась 500 ошибка хотя по хорошему должна была быть 403 :)
Погонял. У меня всё работает как задумывалось. Роут найден, но доступ к ресурсу запрещен. Вот что выводится -
500 ошибки нет. Надо больше информации, чтобы воспроизвести проблему.