Skip to content
Snippets Groups Projects
Unverified Commit f7e4135b authored by Walter Leibbrandt's avatar Walter Leibbrandt Committed by GitHub
Browse files

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.
parent abfccb26
No related branches found
No related tags found
No related merge requests found
......@@ -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)))))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment