Commit Graph

19 Commits

Author SHA1 Message Date
marc fa7567f5f0 feat(scope): unattributed and all org targets
Adds a first-class org target vocabulary shared by every rule kind: a
specific organization, unattributed (objects whose org is NULL), or all.
A role can now be granted the unassigned pile without a global rule.

- rules.scope gains 'unattributed' and 'all'
- user_rules.org_id accepts NULL to target unattributed objects
- org_in_scope partitions the classes: 'unattributed' matches only a NULL
  target, tree scopes never match one
- has_permission(user, activity, view) capability probe for UI gating
- current_org_filter() parses morbac.org_ids once into org UUIDs plus the
  unattributed-bucket flag (a JSON null element requests it)
- rls_check split by arity so NULL never carries two meanings:
  rls_check(activity, view) for tables with no org column,
  rls_check(activity, view, row_org_id[, row_user_id]) where a NULL
  row_org_id means the record is unattributed
- detect_rule_conflicts is scope-aware, so rules targeting different
  object sets no longer collide

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 22:35:03 +02:00
marc 14592b91ae test(hierarchies): cover cache invalidation on hierarchy removal 2026-07-22 09:16:59 +02:00
marc 499df68bf5 fix(rls): not handling global permissions 2026-04-07 01:42:47 +02:00
marc e653b38b88 fix(authorization): system principal regretion 2026-04-06 16:16:29 +02:00
marc 0e3b90af22 feat(system): introduce global rules and system principals for easier system account handling 2026-04-04 09:23:46 +02:00
marc f64cd73159 feat(rules): add rules for users 2026-04-01 23:18:01 +02:00
marc 5ef8bae1b4 feat(all): add scope handling in rules 2026-04-01 23:07:20 +02:00
marc 80be5f913c feat(rls): add multi-orgs filtering logic 2026-03-29 22:08:49 +02:00
marc bfcbf15379 feat(activity): add binding to views 2026-03-28 13:03:12 +01:00
marc cba741fd9d feat(rules): add priority field 2026-03-23 01:00:04 +01:00
marc fca7e2053f feat(rules): add preemptive warning when creating conflicting rules 2026-03-23 00:50:00 +01:00
marc 09082ea0d3 feat(info): cleanup obligations and recommendations features 2026-03-23 00:12:37 +01:00
marc 10c1ea4a7e feat(hirearchy): add helpers 2026-03-22 23:41:05 +01:00
marc c22d18063b feat(tests): add more tests and make them pass 2026-03-22 23:25:48 +01:00
marc 9e1e448159 feat(src): ensure extension works and tests pass 2026-03-22 15:41:00 +01:00
marc 32a6a8dd17 refacto: pg_morbac -> pgmorbac 2026-02-22 22:29:52 +01:00
marc 2d5f4ca669 refacto: morbac_pg -> pg_morbac 2026-02-20 10:36:19 +01:00
marc d80b9f387b refacto: add build and cleanup file structure 2026-02-20 01:32:08 +01:00
marc 6adc62f9ec tests: cleanup structure 2026-02-20 01:04:02 +01:00