Files
pgmorbac-fastify/CHANGELOG.md
T

45 lines
2.8 KiB
Markdown

# Changelog
All notable changes to this package will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.2.0] - 2026-11-02
### Added
- `permittedScope(db, req, reply, orgIds, activity, view)`: the orgs of a list request the caller may act in, through the hooks; 403 only when none passes.
### Fixed
- The list routes for users, roles, role settings, role, user and cross-org rules, delegations, permission profiles, user roles and activities checked only the first org of `X-Org-Ids`, then answered for every listed org. A caller allowed in the first org read the others' rows, and a caller refused in the first org got 403 for the whole list. They now answer for the permitted orgs only.
- The unpinned org list, the stored org filter and `readableOrgPaths` decided with `morbac.is_allowed` in SQL, which skips the permission hooks. They now go through them, so an org the hooks refuse is never offered.
## [1.1.0] - 2026-10-21
### Added
- `addPermissionHook('pre' | 'post', hook)`: application rules every permission decision runs. Hooks can only refuse; a throwing hook fails the decision.
- `isAllowed` and `permittedOrgs`: the hooked decision without a reply, for one org or several.
### Changed
- `hasPermission`, `hasPermissionAny`, `canPerform`, `canActOnUser`, `canGrantRule`, the user listing and role assignment decide through `isAllowed`, so hooks apply to each.
- The data proxy forwards only the `X-Org-Ids` the caller is allowed in, instead of every listed org once one passed. Rows are unchanged without hooks: RLS already hid the others.
## [1.0.0] - 2026-07-25
### Added
- First stable release of the Node.js companion to the `pgmorbac` PostgreSQL extension.
- `hasPermission` and org-scope helpers backed by `morbac.is_allowed`.
- `withMorbacContext` for running queries under the acting user so RLS applies.
- PostgREST data proxy with per-route permissions and a hard page-size cap.
- `morbacMigrations()` loader that ships the bundled extension SQL.
- Fastify management routes for orgs, roles, rules, users, global rules, activities, and delegations.
- PostgREST-style list-query parsing with allowlisted sort/filter columns.
- JSON schema response fragments and shared domain types.
- Unattributed org target: `UNATTRIBUTED`, `OrgTarget` and `OrgSelection` express
a specific organisation, records with no org, or every org at once.
- `hasAnyPermission` wraps the `morbac.has_permission` capability probe for UI gating.
- `withMorbacContext` accepts an org selection, serialised to `morbac.org_ids`
where a JSON null element names the unattributed bucket.
[1.0.0]: https://github.com/crudylabs/pgmorbac-fastify/releases/tag/v1.0.0