From 04f2dd1a0be9b9db3dd6c244cd0e31e2f2080d1a Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Wed, 9 Nov 2022 15:48:12 +0100 Subject: [PATCH] GODT-2021: Remove gluon data when deleting user --- internal/bridge/settings.go | 2 +- internal/bridge/user.go | 8 ++++---- internal/bridge/user_events.go | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/internal/bridge/settings.go b/internal/bridge/settings.go index dceb618f..3ed55521 100644 --- a/internal/bridge/settings.go +++ b/internal/bridge/settings.go @@ -284,7 +284,7 @@ func (bridge *Bridge) FactoryReset(ctx context.Context) { // Delete all the users. safe.Lock(func() { for _, user := range bridge.users { - bridge.logoutUser(ctx, user, true) + bridge.logoutUser(ctx, user, true, true) } for _, user := range bridge.vault.GetUserIDs() { diff --git a/internal/bridge/user.go b/internal/bridge/user.go index 0286f0a5..aba223c5 100644 --- a/internal/bridge/user.go +++ b/internal/bridge/user.go @@ -207,7 +207,7 @@ func (bridge *Bridge) LogoutUser(ctx context.Context, userID string) error { defer delete(bridge.users, user.ID()) - bridge.logoutUser(ctx, user, true) + bridge.logoutUser(ctx, user, true, false) bridge.publish(events.UserLoggedOut{ UserID: userID, @@ -228,7 +228,7 @@ func (bridge *Bridge) DeleteUser(ctx context.Context, userID string) error { if user, ok := bridge.users[userID]; ok { defer delete(bridge.users, user.ID()) - bridge.logoutUser(ctx, user, true) + bridge.logoutUser(ctx, user, true, true) } if err := bridge.vault.DeleteUser(userID); err != nil { @@ -502,8 +502,8 @@ func (bridge *Bridge) newVaultUser( } // logout logs out the given user, optionally logging them out from the API too. -func (bridge *Bridge) logoutUser(ctx context.Context, user *user.User, withAPI bool) { - if err := bridge.removeIMAPUser(ctx, user, false); err != nil { +func (bridge *Bridge) logoutUser(ctx context.Context, user *user.User, withAPI, withData bool) { + if err := bridge.removeIMAPUser(ctx, user, withData); err != nil { logrus.WithError(err).Error("Failed to remove IMAP user") } diff --git a/internal/bridge/user_events.go b/internal/bridge/user_events.go index 09bee429..f91a54d8 100644 --- a/internal/bridge/user_events.go +++ b/internal/bridge/user_events.go @@ -47,8 +47,7 @@ func (bridge *Bridge) handleUserEvent(ctx context.Context, user *user.User, even case events.UserDeauth: safe.Lock(func() { defer delete(bridge.users, user.ID()) - - bridge.logoutUser(ctx, user, false) + bridge.logoutUser(ctx, user, false, false) }, bridge.usersLock) }