mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Redirect to actionable page if routing is restricted (#28002)
If a user has a required action, e.g. adding a 2FA method or filling in new required fields, we disable client-side routing except to allowed pages. This led to a situation where a user might navigate away from e.g. the profile page to look at the new ToS, and then being "stuck" due to not knowing how to get back to accept the new terms. This PR makes it so that if you click any restricted link, instead of doing nothing we transition the user back to the page where they can take the required action.
This commit is contained in:
@@ -31,7 +31,7 @@ describe "User preferences | Profile", type: :system do
|
||||
)
|
||||
end
|
||||
|
||||
it "redirects to the profile page to fill up required fields" do
|
||||
it "server-side redirects to the profile page to fill up required fields" do
|
||||
visit("/")
|
||||
|
||||
expect(page).to have_current_path("/u/#{user.username}/preferences/profile")
|
||||
@@ -42,6 +42,21 @@ describe "User preferences | Profile", type: :system do
|
||||
)
|
||||
end
|
||||
|
||||
it "client-side redirects to the profile page to fill up required fields" do
|
||||
visit("/faq")
|
||||
|
||||
expect(page).to have_current_path("/faq")
|
||||
|
||||
find("#site-logo").click
|
||||
|
||||
expect(page).to have_current_path("/u/#{user.username}/preferences/profile")
|
||||
|
||||
expect(page).to have_selector(
|
||||
".alert-error",
|
||||
text: I18n.t("js.user.preferences.profile.enforced_required_fields"),
|
||||
)
|
||||
end
|
||||
|
||||
it "disables client-side routing while missing required fields" do
|
||||
user_preferences_profile_page.visit(user)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user