Skip to content

Group-based app grants do not make an Application visible to its editors/viewers #76

Description

@rubenvdlinde

Symptom

An Application granted to a group is still invisible to members of that group: GET /api/applications returns 200 with an empty list for both an editor and a viewer.

Measured on a live instance

Everything openbuild-side checks out:

Checked Result
Stored grant {owners:['user:admin'], editors:['group:rbac-editors'], viewers:['group:rbac-viewers']} — reads back correctly
Group membership rbac-viewerrbac-viewers, rbac-editorrbac-editors (OCS cloud/users/{uid}/groups)
Groups exist admin, openregister, rbac-editors, rbac-viewers
Principal grammar PermissionResolver::matchesCaller() classifies group: principals and intersects them with the caller's groups
Result GET /api/applications → 200, empty, for both users

So the manifest permissions block is correct and the matcher supports it, yet the object never reaches the filter. Most likely candidate: OpenRegister-level object visibility — a grant separate from openbuild's permissions block. Worth checking whether the list is scoped by OR organisation/RBAC before openbuild's own check runs.

Why it matters beyond tests

If group grants don't confer visibility, then in the product an owner can add a team to an app and those users still see nothing — the affordance exists and does not work.

Blocks

  • tests/e2e/versionRouting.spec.ts 9.2 (viewer sees version-not-found, not a stack trace)
  • tests/e2e/schema-access-scopes-rbac.spec.ts (3 scenarios: lock-out warning, draft-vs-production scope isolation, disabled Access sub-editor on production)
  • the real viewer-gating assertion omitted from save-as-template.spec.ts

Groundwork is already in the repo: tests/e2e/support/appRoles.ts writes the grant correctly (carrying the whole record forward — OR saves are PUT-semantic) and documents these findings inline. The RBAC users and one stored session per role are provisioned by globalSetup (#66). Once a member can see the app, those four scenarios should be straightforward.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions