From 964a80404db5b57e57cca8f4e108cc576e1be669 Mon Sep 17 00:00:00 2001
From: Anton Kulyk <kuliks.anton@gmail.com>
Date: Wed, 5 May 2021 13:11:28 +0300
Subject: [PATCH] Make it more difficult to change Site URL (#15849)

* Change site-url description copy

* Display part of site-url description as bold text

* Replace custom description with warningMessage prop
---
 .../src/metabase/admin/settings/components/SettingHeader.jsx | 5 +++++
 frontend/src/metabase/admin/settings/selectors.js            | 1 +
 src/metabase/public_settings.clj                             | 4 +++-
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/frontend/src/metabase/admin/settings/components/SettingHeader.jsx b/frontend/src/metabase/admin/settings/components/SettingHeader.jsx
index 9f4d863d3de..ff892ae505c 100644
--- a/frontend/src/metabase/admin/settings/components/SettingHeader.jsx
+++ b/frontend/src/metabase/admin/settings/components/SettingHeader.jsx
@@ -7,6 +7,11 @@ const SettingHeader = ({ setting }) => (
       {setting.display_name}
     </div>
     <div className="text-medium text-measure my1">
+      {setting.warningMessage && (
+        <React.Fragment>
+          <strong>{setting.warningMessage}</strong>{" "}
+        </React.Fragment>
+      )}
       {setting.description}
       {setting.note && <div>{setting.note}</div>}
     </div>
diff --git a/frontend/src/metabase/admin/settings/selectors.js b/frontend/src/metabase/admin/settings/selectors.js
index b48076733e4..cfe07b8cf20 100644
--- a/frontend/src/metabase/admin/settings/selectors.js
+++ b/frontend/src/metabase/admin/settings/selectors.js
@@ -65,6 +65,7 @@ const SECTIONS = updateSectionsWithPlugins({
         display_name: t`Site URL`,
         type: "string",
         widget: SiteUrlWidget,
+        warningMessage: t`Only change this if you know what you're doing!`,
       },
       {
         key: "redirect-all-requests-to-https",
diff --git a/src/metabase/public_settings.clj b/src/metabase/public_settings.clj
index 651722e308a..04fa6096a5e 100644
--- a/src/metabase/public_settings.clj
+++ b/src/metabase/public_settings.clj
@@ -86,7 +86,9 @@
 ;; This value is *guaranteed* to never have a trailing slash :D
 ;; It will also prepend `http://` to the URL if there's no protocol when it comes in
 (defsetting site-url
-  (deferred-tru "The base URL of this Metabase instance, e.g. \"http://metabase.my-company.com\".")
+  (str (deferred-tru "This URL is used for things like creating links in emails, auth redirects,")
+       " "
+       (deferred-tru "and in some embedding scenarios, so changing it could break functionality or get you locked out of this instance."))
   :visibility :public
   :getter (fn []
             (try
-- 
GitLab