У меня есть защищенный тип события, который проверяет, вошел ли пользователь в систему, и перенаправляет его на страницу входа, если это не так:
<event-types>
<event-type name="securedPage">
<before>
<broadcasts>
<message name="CheckLogin"/>
</broadcasts>
</before>
<results>
<result name="NeedLogin" do="page.login" redirect="true"/>
</results>
</event-type>
</event-types>
Страница входа имеет форму, которая ссылается на обработчик события action.login
, который будет перенаправлять на домашнюю страницу пользователя, если вход был успешным, и повторно отображать страницу входа, если это не так:
<event-handler name="action.login">
<broadcasts>
<message name="Login"/>
</broadcasts>
<results>
<result name="LoggedIn" do="page.user.home" redirect="true"/>
<result name="NotLoggedIn" do="page.login"/>
</results>
</event-handler>
Этот код прекрасно работает, но проблема, с которой я сейчас сталкиваюсь, заключается в том, что он всегда перенаправляет на домашнюю страницу пользователя, даже если он запросил другую страницу. Поскольку форма отправляет сообщение в событие action.login , а результат do
жестко задан в page.user.home
, как я могу изменить свой код, чтобы отслеживать, какую страницу пользователь первоначально запросил, и перенаправить их там?