diff --git a/changelog/unreleased/list-permissions.md b/changelog/unreleased/list-permissions.md new file mode 100644 index 0000000000..791aa3e691 --- /dev/null +++ b/changelog/unreleased/list-permissions.md @@ -0,0 +1,6 @@ +Enhancement: Add endpoint to list permissions + +We added 'https://cloud.ocis.test/api/v0/settings/permissions-list' to retrieve all permissions of the logged in user. + +https://github.com/owncloud/ocis/pull/5594 +https://github.com/owncloud/ocis/pull/5571 diff --git a/services/settings/pkg/service/v0/service.go b/services/settings/pkg/service/v0/service.go index ec2966cf2c..40c6187dd3 100644 --- a/services/settings/pkg/service/v0/service.go +++ b/services/settings/pkg/service/v0/service.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" cs3permissions "github.com/cs3org/go-cs3apis/cs3/permissions/v1beta1" rpcv1beta1 "github.com/cs3org/go-cs3apis/cs3/rpc/v1beta1" @@ -499,7 +500,7 @@ func (g Service) ListPermissions(ctx context.Context, req *settingssvc.ListPermi if bundle != nil { for _, setting := range bundle.GetSettings() { - permissionNames[setting.Name] = struct{}{} + permissionNames[formatPermissionName(setting)] = struct{}{} } } } @@ -667,3 +668,8 @@ func (g Service) isCurrentUser(ctx context.Context, accountID string) bool { func (g Service) canManageRoles(ctx context.Context) bool { return g.hasStaticPermission(ctx, RoleManagementPermissionID) } + +func formatPermissionName(setting *settingsmsg.Setting) string { + constraint := strings.TrimPrefix(setting.GetPermissionValue().GetConstraint().String(), "CONSTRAINT_") + return setting.Name + "." + strings.ToLower(constraint) +}