From 73325c6c3561efe6ccff2e53528385a5754a4854 Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Tue, 4 Apr 2023 11:48:48 -0500 Subject: [PATCH] FEATURE: SiteSetting to default user path to different routes (#20962) --- .../app/initializers/url-redirects.js | 7 +++++- .../discourse/tests/acceptance/user-test.js | 24 +++++++++++++++++++ config/site_settings.yml | 5 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/app/initializers/url-redirects.js b/app/assets/javascripts/discourse/app/initializers/url-redirects.js index e04798f90b0..65a1ce7b45f 100644 --- a/app/assets/javascripts/discourse/app/initializers/url-redirects.js +++ b/app/assets/javascripts/discourse/app/initializers/url-redirects.js @@ -26,7 +26,12 @@ export default { let siteSettings = container.lookup("service:site-settings"); initializeDefaultHomepage(siteSettings); - DiscourseURL.rewrite(/^\/u\/([^\/]+)\/?$/, "/u/$1/summary", { + let defaultUserRoute = siteSettings.view_user_route || "summary"; + if (!container.lookup(`route:user.${defaultUserRoute}`)) { + defaultUserRoute = "summary"; + } + + DiscourseURL.rewrite(/^\/u\/([^\/]+)\/?$/, `/u/$1/${defaultUserRoute}`, { exceptions: [ "/u/account-created", "/users/account-created", diff --git a/app/assets/javascripts/discourse/tests/acceptance/user-test.js b/app/assets/javascripts/discourse/tests/acceptance/user-test.js index 143bdfb4d12..93da629c29a 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/user-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/user-test.js @@ -335,6 +335,30 @@ acceptance( } ); +acceptance("User - Invalid view_user_route setting", function (needs) { + needs.settings({ + view_user_route: "X", + }); + + test("It defaults to summary", async function (assert) { + await visit("/u/eviltrout"); + + assert.strictEqual(currentRouteName(), "user.summary"); + }); +}); + +acceptance("User - Valid view_user_route setting", function (needs) { + needs.settings({ + view_user_route: "activity", + }); + + test("It defaults to summary", async function (assert) { + await visit("/u/eviltrout"); + + assert.strictEqual(currentRouteName(), "userActivity.index"); + }); +}); + acceptance("User - Logout", function (needs) { needs.user({ username: "eviltrout" }); diff --git a/config/site_settings.yml b/config/site_settings.yml index 6cdca72ada2..4f36dc7fb4e 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -2466,6 +2466,11 @@ uncategorized: default: 0 hidden: true + view_user_route: + default: "summary" + hidden: true + client: true + tos_topic_id: default: -1 hidden: true