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