Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

fix(security): schema RBAC — project update owner-only + cross-project create guards#282

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/rbac-schema-guards
May 28, 2026
Merged

fix(security): schema RBAC — project update owner-only + cross-project create guards#282
rubenvdlinde merged 1 commit into
developmentfrom
fix/rbac-schema-guards

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Summary

  • C1 planix_register.jsonproject.update now requires owner: $userId match. Previously any project member could update owner/members fields, allowing non-owners to evict the owner. Now only the owner (or admin) may update the project.
  • H1 planix_register.jsontask.create and column.create now require the caller to be a member of the target project (parent-project lookup predicate), closing cross-project injection. timeEntry.create adds user: $userId match to prevent impersonation — users may only log time as themselves.
  • Schema versions bumped 0.1.1 → 0.1.2 for task, column, timeEntry, project; register/info.xml bumped 0.2.3 → 0.2.4.

Test plan

  • JSON schema valid: python3 -c "import json; json.load(open('lib/Settings/planix_register.json'))" — passes
  • Project owner can still update project details
  • Non-owner project member receives 403 on update
  • Task create from non-member project returns 403
  • TimeEntry create with different user UID returns 403

…add cross-project guards (C1 + H1)

C1: project.update now requires owner match instead of member match.
Any member could previously update owner/members fields, allowing a
non-owner to evict the project owner. Now only the owner (or admin)
may update a project.

H1: task.create and column.create add parent-project membership
predicate, preventing cross-project injection by an authenticated
user who is not a member of the target project.
timeEntry.create adds user:$userId match to prevent impersonation —
a user may only log time as themselves.

Bumps all affected schema versions (0.1.1 → 0.1.2) and register/
info.xml version (0.2.3 → 0.2.4).
@rubenvdlinde rubenvdlinde merged commit 55a5669 into development May 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant