From 0992b052984d537081184641dd5acaaca2262af5 Mon Sep 17 00:00:00 2001 From: "metabase-bot[bot]" <109303359+metabase-bot[bot]@users.noreply.github.com> Date: Sun, 7 Apr 2024 22:53:32 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20backported=20"Ignore=20internal?= =?UTF-8?q?=20user=20when=20initializing=20from=20config=20file"=20(#41111?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Noah Moss <32746338+noahmoss@users.noreply.github.com> --- .../advanced_config/file/users.clj | 15 +++++---------- .../advanced_config/file/users_test.clj | 4 ++-- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj b/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj index ce989d70034..a03ccb53288 100644 --- a/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj +++ b/enterprise/backend/src/metabase_enterprise/advanced_config/file/users.clj @@ -1,8 +1,10 @@ (ns metabase-enterprise.advanced-config.file.users (:require [clojure.spec.alpha :as s] - [metabase-enterprise.advanced-config.file.interface :as advanced-config.file.i] + [metabase-enterprise.advanced-config.file.interface + :as advanced-config.file.i] [metabase.models.user :refer [User]] + [metabase.setup :as setup] [metabase.util :as u] [metabase.util.i18n :as i18n :refer [trs]] [metabase.util.log :as log] @@ -30,23 +32,16 @@ [_section] (s/spec (s/* ::config-file-spec))) -(defn- init-from-config-file-is-first-user? - "For [[init-from-config-file!]]: `true` if this the first User being created for this instance. If so, we will ALWAYS - create that User as a superuser, regardless of what is specified in the config file. (It doesn't make sense to - create the first User as anything other than a superuser)." - [] - (zero? (t2/count User))) (defn- init-from-config-file! [user] - ;; TODO -- if this is the FIRST user, we should probably make them a superuser, right? (if-let [existing-user-id (t2/select-one-pk User :email (:email user))] (do (log/info (u/colorize :blue (trs "Updating User with email {0}" (pr-str (:email user))))) (t2/update! User existing-user-id user)) - ;; create a new user. If they are the first User, force them to be an admin. + ;; create a new user. If they are the first non-internal User, force them to be an admin. (let [user (cond-> user - (init-from-config-file-is-first-user?) (assoc :is_superuser true))] + (not (setup/has-user-setup)) (assoc :is_superuser true))] (log/info (u/colorize :green (trs "Creating the first User for this instance. The first user is always created as an admin."))) (log/info (u/colorize :green (trs "Creating new User {0} with email {1}" (pr-str (str (:first_name user) \space (:last_name user))) diff --git a/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj b/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj index cb9a970ad67..97117c32e53 100644 --- a/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj +++ b/enterprise/backend/test/metabase_enterprise/advanced_config/file/users_test.clj @@ -2,8 +2,8 @@ (:require [clojure.test :refer :all] [metabase-enterprise.advanced-config.file :as advanced-config.file] - [metabase-enterprise.advanced-config.file.users :as advanced-config.file.users] [metabase.models :refer [User]] + [metabase.setup :as setup] [metabase.test :as mt] [metabase.util.password :as u.password] [toucan2.core :as t2])) @@ -70,7 +70,7 @@ :email "cam+config-file-admin-test@metabase.com" :password "2cans" :is_superuser false}]}}] - (with-redefs [advanced-config.file.users/init-from-config-file-is-first-user? (constantly true)] + (with-redefs [setup/has-user-setup (constantly false)] (is (= :ok (advanced-config.file/initialize!))) (is (partial= {:first_name "Cam" -- GitLab