From f7e4135bfcd7003196836c5d3c43e34a49d1c004 Mon Sep 17 00:00:00 2001
From: Walter Leibbrandt <23798+walterl@users.noreply.github.com>
Date: Wed, 22 Jan 2020 17:53:54 +0200
Subject: [PATCH] Debug logging for syncing users' group memberships (#11761)

* Log when user added/removed from group during sync

* Ensure that user ID is logged

... instead of bad string representation of user model instances.
---
 src/metabase/integrations/common.clj | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/metabase/integrations/common.clj b/src/metabase/integrations/common.clj
index ef805fa28d7..67993ae2a09 100644
--- a/src/metabase/integrations/common.clj
+++ b/src/metabase/integrations/common.clj
@@ -14,22 +14,25 @@
   in `new-groups-or-ids`. Ignores special groups like `admin` and `all-users`."
   [user-or-id new-groups-or-ids]
   (let [special-group-ids  #{(u/get-id (group/admin)) (u/get-id (group/all-users))}
+        user-id            (u/get-id user-or-id)
         ;; Get a set of Group IDs the user currently belongs to
         current-group-ids  (db/select-field :group_id PermissionsGroupMembership
-                             :user_id  (u/get-id user-or-id)
+                             :user_id  user-id
                              :group_id [:not-in special-group-ids])
         new-group-ids      (set (map u/get-id new-groups-or-ids))
         ;; determine what's different between current groups and new groups
         [to-remove to-add] (data/diff current-group-ids new-group-ids)]
     ;; remove membership from any groups as needed
     (when (seq to-remove)
-      (db/delete! PermissionsGroupMembership :group_id [:in to-remove], :user_id (u/get-id user-or-id)))
+      (log/debugf "Removing user %s from group(s) %s" user-id to-remove)
+      (db/delete! PermissionsGroupMembership :group_id [:in to-remove], :user_id user-id))
     ;; add new memberships for any groups as needed
     (doseq [id    to-add
             :when (not (special-group-ids id))]
+      (log/debugf "Adding user %s to group %s" user-id id)
       ;; if adding membership fails for one reason or another (i.e. if the group doesn't exist) log the error add the
       ;; user to the other groups rather than failing entirely
       (try
-        (db/insert! PermissionsGroupMembership :group_id id, :user_id (u/get-id user-or-id))
+        (db/insert! PermissionsGroupMembership :group_id id, :user_id user-id)
         (catch Throwable e
-          (log/error e (trs "Error adding User {0} to Group {1}" (u/get-id user-or-id) id)))))))
+          (log/error e (trs "Error adding User {0} to Group {1}" user-id id)))))))
-- 
GitLab