From 234554b459044ff7b9f8bc5a64ef6137f94c001c Mon Sep 17 00:00:00 2001 From: Romain LE JEUNE Date: Fri, 30 Jun 2023 14:48:42 +0200 Subject: [PATCH] feat(GODT-2709): Remove the config status file when user is removed. --- internal/bridge/user.go | 4 ++-- internal/configstatus/config_status.go | 6 ++++++ internal/user/config_status.go | 10 ++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/internal/bridge/user.go b/internal/bridge/user.go index 1275dea7..3d95c9a8 100644 --- a/internal/bridge/user.go +++ b/internal/bridge/user.go @@ -601,8 +601,8 @@ func (bridge *Bridge) logoutUser(ctx context.Context, user *user.User, withAPI, defer delete(bridge.users, user.ID()) // if this is actually a remove account - if withTelemetry && withData && withAPI { - user.SendConfigStatusAbort() + if withData && withAPI { + user.SendConfigStatusAbort(withTelemetry) } logrus.WithFields(logrus.Fields{ diff --git a/internal/configstatus/config_status.go b/internal/configstatus/config_status.go index 1d4df6b4..6f590936 100644 --- a/internal/configstatus/config_status.go +++ b/internal/configstatus/config_status.go @@ -170,6 +170,12 @@ func (status *ConfigurationStatus) AutoconfigUsed(client string) error { return nil } +func (status *ConfigurationStatus) Remove() error { + status.DataLock.Lock() + defer status.DataLock.Unlock() + return os.Remove(status.FilePath) +} + func (data *ConfigurationStatusData) init() { data.Metadata = Metadata{ Version: version, diff --git a/internal/user/config_status.go b/internal/user/config_status.go index ab604181..b973989b 100644 --- a/internal/user/config_status.go +++ b/internal/user/config_status.go @@ -57,11 +57,17 @@ func (user *User) SendConfigStatusSuccess() { } } -func (user *User) SendConfigStatusAbort() { +func (user *User) SendConfigStatusAbort(withTelemetry bool) { + if err := user.configStatus.Remove(); err != nil { + user.log.WithError(err).Error("Failed to remove config_status file.") + } + if !user.configStatus.IsPending() { return } - + if !withTelemetry { + return + } var builder configstatus.ConfigAbortBuilder abort := builder.New(user.configStatus.Data) data, err := json.Marshal(abort)