From dbe40bd7c7e360ad7130d254a255212e28d8a9da Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Tue, 14 Mar 2023 15:58:27 +0100 Subject: [PATCH] Avoid repeated default role assignments When using the metadata storage (the current default) the default role assignments were recreated at every start of the settings service. Leading to duplicated role assignments Fixes: #3432 --- changelog/unreleased/fix-duplicated-demouser-roles.md | 6 ++++++ services/settings/pkg/store/metadata/store.go | 10 ++++++++++ 2 files changed, 16 insertions(+) create mode 100644 changelog/unreleased/fix-duplicated-demouser-roles.md diff --git a/changelog/unreleased/fix-duplicated-demouser-roles.md b/changelog/unreleased/fix-duplicated-demouser-roles.md new file mode 100644 index 000000000..6e015198c --- /dev/null +++ b/changelog/unreleased/fix-duplicated-demouser-roles.md @@ -0,0 +1,6 @@ +Bugfix: Fix default role assignment for demo users + +The roles-assignments for demo users where duplicated with every +restart of the settings service. + +https://github.com/owncloud/ocis/issues/3432 diff --git a/services/settings/pkg/store/metadata/store.go b/services/settings/pkg/store/metadata/store.go index 38a2cb02b..8081d40ce 100644 --- a/services/settings/pkg/store/metadata/store.go +++ b/services/settings/pkg/store/metadata/store.go @@ -131,11 +131,21 @@ func (s *Store) initMetadataClient(mdc MetadataClient) error { return err } + assIDs, err := mdc.ReadDir(ctx, accountPath(accountUUID)) + if err != nil { + return err + } + if len(assIDs) > 0 { + // There is already a role assignment for this ID, skip to the next + continue + } + ass := &settingsmsg.UserRoleAssignment{ Id: uuid.Must(uuid.NewV4()).String(), AccountUuid: accountUUID, RoleId: roleID, } + b, err := json.Marshal(ass) if err != nil { return err