diff --git a/src/metabase/models/permissions_group.clj b/src/metabase/models/permissions_group.clj index a66ff9da783604a517a7b1355f47af8083d49bad..5984eb2310057b20466903ab942b6273d205b192 100644 --- a/src/metabase/models/permissions_group.clj +++ b/src/metabase/models/permissions_group.clj @@ -106,10 +106,10 @@ (t2/define-before-update :model/PermissionsGroup [group] (let [changes (t2/changes group)] - (u/prog1 group - (check-not-magic-group group) - (when-let [group-name (:name changes)] - (check-name-not-already-taken group-name))))) + (u/prog1 group + (check-not-magic-group group) + (when-let [group-name (:name changes)] + (check-name-not-already-taken group-name))))) ;;; ---------------------------------------------------- Util Fns ---------------------------------------------------- diff --git a/src/metabase/models/user.clj b/src/metabase/models/user.clj index b29865c20c423474d13afb6238ad56a4de78d503..ecb0de60ad721f773c5767aebd99fdc5b8d8757d 100644 --- a/src/metabase/models/user.clj +++ b/src/metabase/models/user.clj @@ -91,17 +91,20 @@ (t2/define-after-insert :model/User [{user-id :id, superuser? :is_superuser, :as user}] (u/prog1 user - ;; add the newly created user to the magic perms groups - (binding [perms-group-membership/*allow-changing-all-users-group-members* true] - (log/info (trs "Adding User {0} to All Users permissions group..." user-id)) - (t2/insert! PermissionsGroupMembership - :user_id user-id - :group_id (:id (perms-group/all-users)))) + ;; add the newly created user to the magic perms groups. + (log/info (trs "Adding User {0} to All Users permissions group..." user-id)) (when superuser? - (log/info (trs "Adding User {0} to Admin permissions group..." user-id)) - (t2/insert! PermissionsGroupMembership - :user_id user-id - :group_id (:id (perms-group/admin)))))) + (log/info (trs "Adding User {0} to All Users permissions group..." user-id))) + (let [groups (filter some? [(perms-group/all-users) + (when superuser? (perms-group/admin))])] + (binding [perms-group-membership/*allow-changing-all-users-group-members* true] + ;; do a 'simple' insert against the Table name so we don't trigger the after-insert behavior + ;; for [[metabase.models.permissions-group-membership]]... we don't want it recursively trying to update + ;; the user + (t2/insert! (t2/table-name :model/PermissionsGroupMembership) + (for [group groups] + {:user_id user-id + :group_id (u/the-id group)})))))) (t2/define-before-update :model/User [{:keys [id] :as user}]