diff --git a/changelog/unreleased/fix-duplicated-demouser-roles.md b/changelog/unreleased/fix-duplicated-demouser-roles.md new file mode 100644 index 00000000000..6e015198cb4 --- /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 38a2cb02b82..8081d40cec3 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