@open-rlb/nestjs-amqp 2.0.7 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +9 -10
  2. package/modules/acl/authz-match.d.ts +6 -0
  3. package/modules/acl/authz-match.js +10 -0
  4. package/modules/acl/authz-match.js.map +1 -0
  5. package/modules/acl/config/acl.config.d.ts +1 -0
  6. package/modules/acl/const.d.ts +2 -2
  7. package/modules/acl/const.js +3 -3
  8. package/modules/acl/const.js.map +1 -1
  9. package/modules/acl/index.d.ts +1 -0
  10. package/modules/acl/index.js +1 -0
  11. package/modules/acl/index.js.map +1 -1
  12. package/modules/acl/services/acl-management.service.d.ts +7 -3
  13. package/modules/acl/services/acl-management.service.js +24 -10
  14. package/modules/acl/services/acl-management.service.js.map +1 -1
  15. package/modules/acl/services/acl.service.d.ts +3 -4
  16. package/modules/acl/services/acl.service.js +24 -46
  17. package/modules/acl/services/acl.service.js.map +1 -1
  18. package/modules/broker/config/decorator-paths.js +2 -2
  19. package/modules/broker/config/decorator-paths.js.map +1 -1
  20. package/modules/broker/decorators/broker-action.decorator.d.ts +1 -1
  21. package/modules/broker/decorators/broker-action.decorator.js +2 -2
  22. package/modules/broker/decorators/broker-action.decorator.js.map +1 -1
  23. package/modules/broker/services/shutdown-state.service.d.ts +1 -0
  24. package/modules/broker/services/shutdown-state.service.js +12 -12
  25. package/modules/broker/services/shutdown-state.service.js.map +1 -1
  26. package/modules/gateway-admin/util/route-manifest.js +1 -1
  27. package/modules/gateway-admin/util/route-manifest.js.map +1 -1
  28. package/modules/proxy/config/path-definition.config.d.ts +2 -2
  29. package/modules/proxy/services/acl.service.d.ts +2 -2
  30. package/modules/proxy/services/acl.service.js.map +1 -1
  31. package/modules/proxy/services/http-auth-handler.service.d.ts +6 -4
  32. package/modules/proxy/services/http-auth-handler.service.js +15 -9
  33. package/modules/proxy/services/http-auth-handler.service.js.map +1 -1
  34. package/modules/proxy/services/http-handler.service.js +4 -3
  35. package/modules/proxy/services/http-handler.service.js.map +1 -1
  36. package/modules/proxy/services/websocket.service.d.ts +1 -1
  37. package/modules/proxy/services/websocket.service.js +6 -9
  38. package/modules/proxy/services/websocket.service.js.map +1 -1
  39. package/package.json +1 -1
  40. package/schematics/nest-add/files/skills/rlb-amqp/SKILL.md +3 -3
  41. package/schematics/nest-add/files/skills/rlb-amqp/references/config-schema.md +18 -14
  42. package/schematics/nest-add/files/skills/rlb-amqp/references/gotchas.md +42 -17
  43. package/schematics/nest-add/files/skills/rlb-amqp-acl/SKILL.md +51 -38
  44. package/schematics/nest-add/files/skills/rlb-amqp-add-action/SKILL.md +4 -3
  45. package/schematics/nest-add/files/skills/rlb-amqp-add-route/SKILL.md +20 -14
  46. package/schematics/nest-add/files/skills/rlb-amqp-add-ws-event/SKILL.md +7 -6
  47. package/schematics/nest-add/files/skills/rlb-amqp-gateway-admin/SKILL.md +1 -1
  48. package/schematics/nest-add/files/skills/rlb-amqp-scaffold/SKILL.md +4 -4
  49. package/schematics/nest-add/index.js +8 -12
  50. package/schematics/nest-add/index.js.map +1 -1
  51. package/schematics/nest-add/index.ts +8 -12
@@ -76,29 +76,54 @@ Ported from `docs/gotchas.md` (re-verified against post-2.0.5 code).
76
76
  NOT a metrics dump. Use `/admin/metrics*` (`gw-metrics-*`) for metrics.
77
77
 
78
78
  ## Auth / ACL
79
- 21. **`roles` require `auth` on the same path/event.** No `auth` → no identity → fails closed
80
- (every request `403`, logged at boot). Always pair `roles: [...]` with `auth: <provider>`.
81
- 22. **`roles` require an `IAclRoleService`** registered via `RLB_GTW_ACL_ROLE_SERVICE` in
79
+ 21. **`actions` require `auth` on the same path/event.** No `auth` → no identity → fails closed
80
+ (every request `403`, logged at boot). Always pair `actions: [...]` with `auth: <provider>`.
81
+ 22. **`actions` require an `IAclRoleService`** registered via `RLB_GTW_ACL_ROLE_SERVICE` in
82
82
  `ProxyModule.forRootAsync({ providers: [...] })`. Missing → deny (403). The gateway check is
83
- **role-based, OR, resource-agnostic** (`canUserDoGtw(roles, userId)`): `roles` lists ROLE NAMES,
84
- the user passes holding AT LEAST ONE. The provider only needs `uidClaim` (+ `headerPrefix`).
85
- 23. **Two ACL check actions on `rlb-acl`** (both cached, both HTTP GET → `200` true/false):
86
- `acl-can-user-do-gtw` → `canUserDoGtw(roles, userId)` (gateway filter, OR, resource-agnostic,
87
- `GET /acl/check`) and `acl-can-user-do` `canUserDo(roles, userId, resource)` (**ms-side**;
88
- a global grant OR a grant on that resource passes, `GET /acl/check-resource`).
83
+ **action-based, OR, resource-SCOPED** (`checkAction(userId, ctx, actions)`): `actions` lists
84
+ ACTION NAMES, the caller is authorized if it holds AT LEAST ONE on the request's
85
+ `(companyId, resourceId)`. The provider only needs `uidClaim` (+ `headerPrefix`).
86
+ 23. **One ACL check action on `rlb-acl`: `acl-check-action`** (cached, HTTP GET `200` true/false).
87
+ `checkAction(userId, ctx, action)`, `ctx = { companyId?, resourceId? }`,
88
+ `action = string | string[]` (OR). It resolves action→roles-that-include-it, then matches the
89
+ user's grants. A grant authorizes **iff** `grant.companyId === req.companyId &&
90
+ grant.resourceId === req.resourceId` (undefined/null/`''` = absent). The ONLY carve-out: both
91
+ ids absent on request AND grant. **No wildcard** — a `null` `resourceId` does NOT match
92
+ everything; `companyId` is load-bearing. Replaces the old `acl-can-user-do` /
93
+ `acl-can-user-do-gtw` and the merged `GET /acl/check` + `/acl/check-resource`.
94
+ 23a. **Gateway gating is ACTION-based, not role-based.** `gateway.paths[].actions` /
95
+ `events[].actions` name ACTIONS (was `roles`). The gateway resolves `userId` from the auth
96
+ provider, extracts `(companyId, resourceId)` from the request, and authorizes if the caller
97
+ holds one of `actions` on that pair. It reads the canonical `companyId`/`resourceId` from the
98
+ request (precedence params→query→body) and matches them exactly. WS events gate by `actions`
99
+ **resource-agnostically**.
100
+ 23b. **`@BrokerAuth`'s 3rd param is now `actions` (was `roles`).** Signature:
101
+ `@BrokerAuth(authName, allowAnonymous?, actions?, httpName?)`. Pass action names there for an
102
+ auto-discovered route's action gate.
89
103
  24. **Actions, roles & auth-providers are NAME-KEYED. PUT upserts; there is NO POST.** The `name`
90
104
  IS the key (no id). `PUT` creates-or-updates, `GET` lists, `GET .../get?name=` reads one,
91
105
  `DELETE` removes by `name`. The old id-based ACL CRUD and `POST`-create endpoints are GONE.
92
106
  (Gateway-admin **paths** are the exception — they keep id-keyed CRUD and a POST create.)
93
107
  25. **`acl-grant` / `acl-revoke` both REQUIRE `userId` + `roles`** (optional `resourceId` +
94
- `companyId`). `grant` MERGES roles into the single `(userId, resourceId)` record (idempotent).
95
- `revoke` REMOVES exactly those roles and **deletes the record once it has no roles left**.
96
- `revoke` without `roles` throws `400 roles are required` — to wipe a grant, revoke all its roles.
97
- 26. **`companyId` is grouping metadata only.** It replaced `resourceBusinessId` and plays NO part
98
- in authorization it only groups resources in `acl-list-resources-by-user`. Targeting is by
99
- `(userId, resourceId)` only. Both grant/revoke validate every role exists (unknown `400`).
100
- 27. **Removed actions:** `acl-list-by-user` and `acl-verify-access` no longer exist. Use
101
- `acl-can-user-do` for resource-scoped checks and `acl-list-resources-by-user` to list resources.
108
+ `companyId`). The grant record is keyed by `(userId, companyId, resourceId)`. `grant` MERGES
109
+ roles into that triple (idempotent). `revoke` REMOVES exactly those roles and **deletes the
110
+ record once it has no roles left**. `revoke` without `roles` throws `400 roles are required` —
111
+ to wipe a grant, revoke all its roles. **Grants assign ROLES (keep the `roles` param); roles
112
+ contain actions.** Only the gateway/route GATE switched to action names.
113
+ 25a. **`acl-grant` / `acl-revoke` are GATED.** The caller (forwarded `X-GTW-AUTH-USERID`) must hold
114
+ the `role-management` action on the TARGET `(companyId, resourceId)`, else `403`. The gate
115
+ action defaults to `role-management`, overridable via `AclModuleOptions.roleManagementAction`.
116
+ **Chicken-and-egg:** no caller can grant the very first `role-management`, so **bootstrap by
117
+ seeding the first `role-management` grant directly in the DB**.
118
+ 26. **`companyId` is LOAD-BEARING in authorization.** It replaced `resourceBusinessId` and is
119
+ BOTH part of the grant identity AND matched during `checkAction`: a grant authorizes only when
120
+ `grant.companyId === req.companyId` (and `resourceId` likewise). It also groups
121
+ `acl-list-resources-by-user` output. There is **no wildcard** — a `null`/absent `resourceId`
122
+ only matches a request with that id also absent. Both grant/revoke validate every role exists
123
+ (unknown → `400`).
124
+ 27. **Removed actions:** `acl-list-by-user`, `acl-verify-access`, `acl-can-user-do`, and
125
+ `acl-can-user-do-gtw` no longer exist (the last two collapsed into `acl-check-action`). Use
126
+ `acl-check-action` for authorization checks and `acl-list-resources-by-user` to list resources.
102
127
  28. **Auth & gateway config go to `ProxyModule`** (`authOptions` / `gatewayOptions`), not
103
128
  `BrokerModule`. `BrokerModule` owns only `options` / `topics` / `appOptions`.
104
129
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rlb-amqp-acl
3
- description: Manage role-based access control (ACL) with @open-rlb/nestjs-amqp — actions, roles, grants/revokes, and "can user do X" checks. Use when wiring AclModule, gating gateway routes by roles, granting/revoking a user's roles, listing a user's resources, or answering authorization/permission questions (roles, grants, acl-check).
3
+ description: Manage access control (ACL) with @open-rlb/nestjs-amqp — actions, roles, grants/revokes, and "can user do X" checks. Use when wiring AclModule, gating gateway routes by actions, granting/revoking a user's roles, listing a user's resources, or answering authorization/permission questions (actions, roles, grants, acl-check).
4
4
  ---
5
5
 
6
6
  # Manage ACL (@open-rlb/nestjs-amqp)
@@ -11,15 +11,16 @@ Read first when you need depth:
11
11
  - `sample/config-sample/acl.yaml` (annotated broker + gateway reference)
12
12
  - `sample/config-sample/gateway-in-memory/src/app.module.ts` (forRoot wiring)
13
13
 
14
- Use when: managing **actions/roles/grants**, wiring `AclModule`, role-gating routes
15
- (`roles: [...]`), or answering "can user do X".
14
+ Use when: managing **actions/roles/grants**, wiring `AclModule`, action-gating routes
15
+ (`actions: [...]`), or answering "can user do X".
16
16
 
17
17
  ## Model (3 entities)
18
18
 
19
19
  - **Action** — atomic capability (`read-doc`). Name-keyed.
20
20
  - **Role** — bundle of action names (`editor = [read-doc, write-doc]`). Name-keyed.
21
- - **Grant** — binds a `userId` → role names; one record per `(userId, resourceId)`.
22
- - **Checks** match on **roles, never action strings**.
21
+ - **Grant** — binds a `userId` → role names; one record per `(userId, companyId, resourceId)`.
22
+ - **Checks** resolve the requested **action** → roles-that-include-it, then match the
23
+ user's grants. The route/gate names **actions**; grants still assign **roles**.
23
24
 
24
25
  ## Decorator-bound (NOT configurable)
25
26
 
@@ -28,8 +29,8 @@ reference them literally. The queue / exchange / routingKey that carry the topic
28
29
 
29
30
  `ACL_ACTIONS`: `acl-action-list`, `acl-action-get`, `acl-action-update`,
30
31
  `acl-action-delete`, `acl-role-list`, `acl-role-get`, `acl-role-update`,
31
- `acl-role-delete`, `acl-grant`, `acl-revoke`, `acl-can-user-do-gtw`,
32
- `acl-can-user-do`, `acl-list-resources-by-user`, `acl-invalidate`.
32
+ `acl-role-delete`, `acl-grant`, `acl-revoke`, `acl-check-action`,
33
+ `acl-list-resources-by-user`, `acl-invalidate`.
33
34
 
34
35
  > **Removed in 2.0.5:** `acl-list-by-user`, `acl-verify-access`, `acl-create` /
35
36
  > id-based ACL CRUD. Entities are name-keyed: **PUT upserts, no POST.**
@@ -40,28 +41,36 @@ No id, no POST. `PUT` upserts by `name` (idempotent), `GET` lists (`?page=&limit
40
41
  `GET …/get?name=` reads one, `DELETE` removes by `name`. Role upsert: every referenced
41
42
  action must already exist (else **400**).
42
43
 
43
- ## Grants — dual grant/revoke
44
+ ## Grants — dual grant/revoke (now GATED)
44
45
 
45
- One record per `(userId, resourceId)`. Both ops **require `userId` + `roles`**;
46
- `resourceId` + `companyId` are **optional**.
46
+ One record per `(userId, companyId, resourceId)`. Both ops **require `userId` + `roles`**;
47
+ `resourceId` + `companyId` are **optional** but PART of the record identity.
47
48
 
48
- - `acl-grant` — merges roles into the pair (creates if absent; idempotent).
49
+ - `acl-grant` — merges roles into the triple (creates if absent; idempotent).
49
50
  - `acl-revoke` — removes roles; deletes the record once empty.
50
51
  - Both validate every role exists (unknown role → **400**) and invalidate the user's cache.
51
- - `companyId` (replaced `resourceBusinessId`) is **grouping metadata only** it groups
52
- `acl-list-resources-by-user` output and plays **no part** in authorization.
53
-
54
- ## Checks GET 200 with `true`/`false`
55
-
56
- `false` is real content; only `null`/`undefined` collapses to 204. Both return `false`
57
- (never throw) on missing input or error.
58
-
59
- - `acl-can-user-do-gtw` — resource-**agnostic**, the gateway's primary filter. `true` if
60
- the user holds **≥1** requested role. Query: `?userId=&roles=user&roles=admin`.
61
- - `acl-can-user-do` — resource-**scoped**: `true` if a **global** grant OR a grant bound
62
- to that exact `resource` gives a matching role. Query: `?userId=&roles=admin&resource=doc-1`.
63
- Normally called over the broker by the owning microservice.
64
- - `acl-list-resources-by-user` — **auth-gated** (needs `auth`, no roles): reads `userId`
52
+ - `companyId` (replaced `resourceBusinessId`) is **load-bearing**: it is part of the grant
53
+ identity AND part of authorization (a grant matches only when its `companyId` equals the
54
+ request's). It also groups `acl-list-resources-by-user` output.
55
+ - **Caller gating:** `acl-grant`/`acl-revoke` require the caller (forwarded
56
+ `X-GTW-AUTH-USERID`) to hold the `role-management` action on the TARGET
57
+ `(companyId, resourceId)`, else **403**. The gate action defaults to `role-management`,
58
+ overridable via `AclModuleOptions.roleManagementAction`. Bootstrap by seeding the first
59
+ `role-management` grant directly in the DB (no caller can grant it otherwise).
60
+
61
+ ## Checks single primitive, GET 200 with `true`/`false`
62
+
63
+ `false` is real content; only `null`/`undefined` collapses to 204. Returns `false`
64
+ (never throws) on missing input or error.
65
+
66
+ - `acl-check-action` → `checkAction(userId, ctx, action)`, `ctx = { companyId?, resourceId? }`,
67
+ `action = string | string[]` (OR). Resolves the action(s) → roles-that-include-it, then
68
+ matches the user's grants. A grant authorizes **iff** `grant.companyId === req.companyId &&
69
+ grant.resourceId === req.resourceId` (undefined/null/`''` all count as absent). The ONLY
70
+ carve-out: both ids absent on the request AND on the grant. **No wildcard** — a `null`
71
+ `resourceId` no longer matches everything; `companyId` is load-bearing.
72
+ Query: `?userId=&action=read-doc&companyId=acme&resourceId=doc-1`.
73
+ - `acl-list-resources-by-user` — **auth-gated** (needs `auth`, no actions): reads `userId`
65
74
  from the forwarded `X-GTW-AUTH-USERID` header; lists accessible resources grouped by
66
75
  `companyId` with resolved actions.
67
76
 
@@ -88,8 +97,9 @@ AclModule.forRoot(
88
97
  );
89
98
  ```
90
99
 
91
- Gateway side — let route `roles: [...]` filters run **in-process** (no broker hop) by
92
- binding the gateway token to the same `AclService`:
100
+ Gateway side — let route `actions: [...]` gates run **in-process** (no broker hop) by
101
+ binding the gateway token to the same `AclService` (implements
102
+ `IAclRoleService.checkAction(userId, ctx, action)`):
93
103
 
94
104
  ```ts
95
105
  import { ProxyModule, AclService, RLB_GTW_ACL_ROLE_SERVICE } from '@open-rlb/nestjs-amqp';
@@ -99,8 +109,9 @@ ProxyModule.forRoot({
99
109
  });
100
110
  ```
101
111
 
102
- Same process → `useExisting`. Separate services → gateway RPCs `acl-can-user-do-gtw` on
103
- `rlb-acl` instead. A route's `roles` are ROLE NAMES; the user passes with **≥1**.
112
+ Same process → `useExisting`. Separate services → gateway RPCs `acl-check-action` on
113
+ `rlb-acl` instead. A route's `actions` are ACTION NAMES; the caller is authorized if it
114
+ holds **≥1** of them on the request's `(companyId, resourceId)`.
104
115
 
105
116
  ## YAML — topic + queue (names fixed, transport yours)
106
117
 
@@ -135,10 +146,9 @@ the fixed library string.
135
146
  | acl-role-get | GET | /acl/roles/get | query | acl-role-get |
136
147
  | acl-role-upsert | PUT | /acl/roles | body | acl-role-update |
137
148
  | acl-role-delete | DELETE | /acl/roles | body | acl-role-delete |
138
- | acl-grant | POST | /acl/grants | body | acl-grant |
139
- | acl-revoke | DELETE | /acl/grants | body | acl-revoke |
140
- | acl-check-gtw | GET | /acl/check | query | acl-can-user-do-gtw |
141
- | acl-check-resource | GET | /acl/check-resource | query | acl-can-user-do |
149
+ | acl-grant | POST | /acl/grants | body | acl-grant (gated: caller needs `role-management`) |
150
+ | acl-revoke | DELETE | /acl/grants | body | acl-revoke (gated: caller needs `role-management`) |
151
+ | acl-check | GET | /acl/check | query | acl-check-action |
142
152
  | acl-list-resources-by-user | GET | /acl/resources | query | acl-list-resources-by-user (+ `auth:`) |
143
153
 
144
154
  ```yaml
@@ -153,18 +163,18 @@ gateway:
153
163
  action: acl-role-update
154
164
  mode: rpc
155
165
  - name: acl-grant # body: { userId, roles, resourceId?, companyId?, friendlyName? }
156
- method: POST
166
+ method: POST # gated: caller (X-GTW-AUTH-USERID) needs role-management on target
157
167
  path: /acl/grants
158
168
  dataSource: body
159
169
  topic: rlb-acl
160
170
  action: acl-grant
161
171
  mode: rpc
162
- - name: acl-check-gtw # ?userId=&roles=user&roles=admin → 200 true/false
172
+ - name: acl-check # ?userId=&action=read-doc&companyId=&resourceId= → 200 true/false
163
173
  method: GET
164
174
  path: /acl/check
165
175
  dataSource: query
166
176
  topic: rlb-acl
167
- action: acl-can-user-do-gtw
177
+ action: acl-check-action
168
178
  mode: rpc
169
179
  - name: acl-list-resources-by-user # auth-gated; userId from X-GTW-AUTH-USERID
170
180
  method: GET
@@ -180,6 +190,9 @@ gateway:
180
190
 
181
191
  - topic `rlb-acl` + its queue declared on the consuming service; gateway paths use the
182
192
  literal `action` strings above.
183
- - role-gated routes (`roles: [...]`) → `RLB_GTW_ACL_ROLE_SERVICE` bound to an
184
- `IAclRoleService` (`AclService`). Auth-provider needs `uidClaim` (+ `headerPrefix`).
193
+ - action-gated routes (`actions: [...]`) → `RLB_GTW_ACL_ROLE_SERVICE` bound to an
194
+ `IAclRoleService` (`AclService`, `checkAction`). Auth-provider needs `uidClaim`
195
+ (+ `headerPrefix`).
196
+ - `acl-grant`/`acl-revoke` are gated — seed the first `role-management` grant directly in
197
+ the DB or every caller gets `403`.
185
198
  - a check returning `false` is a **200**, not an error.
@@ -97,8 +97,9 @@ Two independent pairings sit on the method, each only needed in the multi case:
97
97
  `@BrokerAuth` is **public**.
98
98
 
99
99
  Auth lives in a separate, decoupled decorator —
100
- `@BrokerAuth(authName, allowAnonymous?, roles?, httpName?)` — never inside `@BrokerHTTP`'s options.
101
- This lets two HTTP paths for the SAME action carry DIFFERENT auth.
100
+ `@BrokerAuth(authName, allowAnonymous?, actions?, httpName?)` — never inside `@BrokerHTTP`'s options.
101
+ The 3rd param is `actions` (ACL action names, was `roles`). This lets two HTTP paths for the SAME
102
+ action carry DIFFERENT auth.
102
103
 
103
104
  Simple case — one route, auth auto-pairs (no names needed):
104
105
 
@@ -118,7 +119,7 @@ Multi case — two routes for ONE action, each name-paired to its own auth:
118
119
  @BrokerHTTP('GET', '/bookings/:id', 'params', { name: 'get-booking' })
119
120
  @BrokerAuth('cust-jwks', true, undefined, 'get-booking') // httpName ⇄ route name
120
121
  @BrokerHTTP('GET', '/admin/bookings/:id', 'params', { name: 'admin-get-booking' })
121
- @BrokerAuth('admin-jwks', undefined, ['admin'], 'admin-get-booking')
122
+ @BrokerAuth('admin-jwks', undefined, ['booking.admin'], 'admin-get-booking') // 3rd param = ACL actions
122
123
  async getBooking(@BrokerParam('params', 'id') id: string) {
123
124
  return this.bookings.find(id);
124
125
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rlb-amqp-add-route
3
- description: Expose a broker action over HTTP through the @open-rlb/nestjs-amqp gateway by adding a gateway.paths[] entry. Use when the user wants a new HTTP endpoint/REST route that forwards to a topic/action, choosing rpc (wait reply) vs event (fire-and-forget with confirm), with auth, roles, dataSource, timeout, file upload or raw body. Generates the YAML path fragment and flags required bootstrap/ACL wiring.
3
+ description: Expose a broker action over HTTP through the @open-rlb/nestjs-amqp gateway by adding a gateway.paths[] entry. Use when the user wants a new HTTP endpoint/REST route that forwards to a topic/action, choosing rpc (wait reply) vs event (fire-and-forget with confirm), with auth, actions (ACL gate), dataSource, timeout, file upload or raw body. Generates the YAML path fragment and flags required bootstrap/ACL wiring.
4
4
  ---
5
5
 
6
6
  # Add an HTTP gateway route (gateway.paths[])
@@ -20,7 +20,9 @@ Canonical example: `sample/config-sample/gateway-in-memory/config/config.yaml`.
20
20
  - **dataSource**: how the payload is assembled — `req.params` are ALWAYS merged in, plus:
21
21
  `body` | `query` | `params` | `body-query` (body wins) | `query-body` (query wins).
22
22
  - **auth**: an `auth-provider` name (validates the request, maps claims to `X-GTW-AUTH-*`
23
- headers). `allowAnonymous: true` skips the gate. `roles: [...]` adds a role check.
23
+ headers). `allowAnonymous: true` skips the gate. `actions: [...]` adds an ACL action check
24
+ scoped to the request's `(companyId, resourceId)` (read from the canonical fields,
25
+ params → query → body).
24
26
  - Extras: `timeout` (rpc), `successStatusCode`, `binary`, `redirect`, `parseRaw`, static
25
27
  `headers`, `forwardHeaders`.
26
28
 
@@ -36,7 +38,7 @@ Canonical example: `sample/config-sample/gateway-in-memory/config/config.yaml`.
36
38
  | `dataSource` | `body` \| `query` \| `params` \| `body-query` \| `query-body`. |
37
39
  | `auth` | Auth-provider name; validates + maps claims. |
38
40
  | `allowAnonymous` | `true` → gate skipped (token still mapped if present & valid). |
39
- | `roles` | Role NAMES; caller passes with AT LEAST ONE. Requires `auth`. |
41
+ | `actions` | ACTION NAMES; caller passes holding AT LEAST ONE on the request's `(companyId, resourceId)`. Requires `auth`. |
40
42
  | `timeout` | RPC timeout (ms), `rpc` only. |
41
43
  | `binary` | Treat a raw (non-JSON) RPC reply as base64 → binary body. |
42
44
  | `parseRaw` | Adds the raw request body as `$raw` (needs `rawBody: true`). |
@@ -60,7 +62,7 @@ gateway:
60
62
  action: <action>
61
63
  mode: rpc # or event
62
64
  auth: gateway-jwks # optional
63
- roles: [resource.write] # optional → needs RLB_GTW_ACL_ROLE_SERVICE
65
+ actions: [resource.write] # optional → needs RLB_GTW_ACL_ROLE_SERVICE; checked on (companyId, resourceId)
64
66
  timeout: 7000 # rpc only
65
67
  successStatusCode: 201
66
68
  ```
@@ -71,15 +73,18 @@ For every request the gateway runs `processAuthData` (best-effort), then:
71
73
 
72
74
  1. **`allowAnonymous: true`** → gate SKIPPED. A valid token still gets its claims mapped &
73
75
  forwarded; a missing/invalid token is NOT blocked.
74
- 2. **`auth` set, no `roles`** → authentication only. Provider must validate (else `401`);
76
+ 2. **`auth` set, no `actions`** → authentication only. Provider must validate (else `401`);
75
77
  on success the `X-GTW-AUTH-*` headers are forwarded downstream.
76
- 3. **`auth` + `roles`** → authn + role authz. After a valid token the gateway reads the user
77
- id from the provider's `uidClaim` and calls `IAclRoleService.canUserDoGtw(roles, userId)`
78
- in-process. Passes with at least one role, else `403`.
78
+ 3. **`auth` + `actions`** → authn + action authz. After a valid token the gateway reads the
79
+ user id from the provider's `uidClaim`, extracts `(companyId, resourceId)` from the request
80
+ (canonical fields, params query body), and calls
81
+ `IAclRoleService.checkAction(userId, { companyId, resourceId }, actions)` in-process. Passes
82
+ if the caller holds at least one of `actions` on that pair, else `403`. The check is
83
+ **exact-match on `(companyId, resourceId)` — there is no wildcard**, and `companyId` is
84
+ load-bearing.
79
85
 
80
- > `roles` WITHOUT `auth` is a misconfiguration: no identity → fails closed (every request
81
- > `403`, logged loudly at boot). The resource-scoped check (`acl-can-user-do`) is NOT run by
82
- > the gateway — it lives on the target microservice.
86
+ > `actions` WITHOUT `auth` is a misconfiguration: no identity → fails closed (every request
87
+ > `403`, logged loudly at boot).
83
88
 
84
89
  ## Status mapping
85
90
 
@@ -109,9 +114,10 @@ For every request the gateway runs `processAuthData` (best-effort), then:
109
114
  ## Required wiring to flag
110
115
 
111
116
  - If `parseRaw: true` → bootstrap with `NestFactory.create(AppModule, { rawBody: true })`.
112
- - If `roles` is used → an `IAclRoleService` must be registered via `RLB_GTW_ACL_ROLE_SERVICE`
113
- in `ProxyModule.forRootAsync({ providers: [{ provide: RLB_GTW_ACL_ROLE_SERVICE, useExisting: AclService }] })`.
114
- If a path declares `roles` and the service is NOT registered request DENIED (`403`) +
117
+ - If `actions` is used → an `IAclRoleService` (`checkAction`) must be registered via
118
+ `RLB_GTW_ACL_ROLE_SERVICE` in
119
+ `ProxyModule.forRootAsync({ providers: [{ provide: RLB_GTW_ACL_ROLE_SERVICE, useExisting: AclService }] })`.
120
+ If a path declares `actions` and the service is NOT registered → request DENIED (`403`) +
115
121
  error logged. The auth-provider needs a `uidClaim` (+ `headerPrefix`) to resolve the userId.
116
122
  - Forwarded auth claims reach the handler as prefixed/uppercased headers
117
123
  (e.g. `X-GTW-AUTH-USERID`) — read them with `@BrokerParam('header', ...)`. Request headers
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rlb-amqp-add-ws-event
3
- description: Add a secure WebSocket event (or HTTP webhook) to the @open-rlb/nestjs-amqp gateway by adding a gateway.events[] entry. Use when the user wants to push broker messages to connected WebSocket clients or to a webhook, with authentication (token in subprotocol), per-event roles/ACL, and per-user scoping to avoid leaking other users' data. Generates the YAML event fragment plus the exchange/queue and ws options, and flags the security wiring.
3
+ description: Add a secure WebSocket event (or HTTP webhook) to the @open-rlb/nestjs-amqp gateway by adding a gateway.events[] entry. Use when the user wants to push broker messages to connected WebSocket clients or to a webhook, with authentication (token in subprotocol), per-event actions/ACL, and per-user scoping to avoid leaking other users' data. Generates the YAML event fragment plus the exchange/queue and ws options, and flags the security wiring.
4
4
  ---
5
5
 
6
6
  # Add a WebSocket / webhook event (gateway.events[])
@@ -27,14 +27,15 @@ each message out to the connected clients of EVERY gateway instance. Secure it b
27
27
  required to subscribe.
28
28
  - `requireAuth: false` → makes `auth` optional (anonymous allowed; claims mapped if a token
29
29
  is present — handy with `scopeClaim`). Defaults to `true` when `auth` is set.
30
- - `roles: [...]` → ACL check (needs `IAclRoleService`); requires `auth` for the identity.
30
+ - `actions: [...]` → ACL action check via `IAclRoleService.checkAction` (needs `IAclRoleService`);
31
+ requires `auth` for the identity. WS events gate **resource-agnostically** (both ids absent).
31
32
  - `scopeClaim` + `payloadKey` → per-user isolation: a client only receives messages where
32
33
  `payload[payloadKey] === claims[scopeClaim]`. `scopeClaim` is the MAPPED claim
33
34
  (with `headerPrefix`, e.g. `X-GTW-AUTH-USERID`). Without `payloadKey` it denies all
34
35
  (gotcha 16). With `auth` but no `scopeClaim`/`payloadKey`, every authorized subscriber
35
36
  gets ALL messages (warned at boot).
36
37
 
37
- > Auth/roles/scope are declared PER-EVENT. `gateway.ws` only holds connection-level limits,
38
+ > Auth/actions/scope are declared PER-EVENT. `gateway.ws` only holds connection-level limits,
38
39
  > heartbeat, origin allowlist and message-size cap (no auth fields). Different events may use
39
40
  > different providers.
40
41
 
@@ -57,7 +58,7 @@ gateway:
57
58
  routingKey: orders.#
58
59
  auth: gateway-jwks # verifies token + maps claims for this event
59
60
  requireAuth: true # default true when auth is set; false → optional
60
- roles: [orders.read] # optional → needs IAclRoleService
61
+ actions: [orders.read] # optional → needs IAclRoleService (checkAction); resource-agnostic for WS
61
62
  scopeClaim: X-GTW-AUTH-USERID # optional per-user scoping (MAPPED claim)
62
63
  payloadKey: userId # message field compared to scopeClaim
63
64
 
@@ -89,8 +90,8 @@ broker:
89
90
  `sample/config-sample/gateway-in-memory/src/main.ts`).
90
91
  - `events[].auth` must reference a `jwt`/`jwks` provider; subscribing without a valid token
91
92
  yields `{ topic:'onError', data:{ event, error:'unauthorized' } }` (unless `requireAuth:false`).
92
- A failed role check yields `error:'forbidden'`.
93
- - `roles` → `IAclRoleService` via `RLB_GTW_ACL_ROLE_SERVICE` in
93
+ A failed action check yields `error:'forbidden'`.
94
+ - `actions` → `IAclRoleService` (`checkAction`) via `RLB_GTW_ACL_ROLE_SERVICE` in
94
95
  `ProxyModule.forRootAsync({ providers: [...] })` (gotcha 15).
95
96
  - Do NOT add a fixed durable queue for the event — the lib creates a per-instance exclusive
96
97
  ephemeral auto-delete queue for fan-out (gotcha 17).
@@ -203,7 +203,7 @@ routes over the same action can publish with different auth — a route with no
203
203
 
204
204
  ```ts
205
205
  @BrokerHTTP('GET', '/admin/bookings/:id', 'params', { name: 'admin-get-booking' })
206
- @BrokerAuth('admin-jwks', undefined, ['admin'], 'admin-get-booking') // pairs by httpName
206
+ @BrokerAuth('admin-jwks', undefined, ['booking.admin'], 'admin-get-booking') // 3rd param = ACL actions; pairs by httpName
207
207
  ```
208
208
 
209
209
  ### Consumer (gateway ← microservice) — `GatewayAdminModule` `routeDiscovery`
@@ -277,10 +277,10 @@ export class AppService {
277
277
  }
278
278
  ```
279
279
 
280
- Add auth with `@BrokerAuth(authName, allowAnonymous?, roles?, httpName?)` — decoupled from
281
- `@BrokerHTTP`. With one `@BrokerHTTP` it auto-pairs (no `httpName` needed); with multiple,
282
- each `@BrokerHTTP` sets a `name` and each `@BrokerAuth` targets it via `httpName`. A route
283
- with no `@BrokerAuth` is public.
280
+ Add auth with `@BrokerAuth(authName, allowAnonymous?, actions?, httpName?)` — decoupled from
281
+ `@BrokerHTTP` (3rd param is ACL action names). With one `@BrokerHTTP` it auto-pairs (no
282
+ `httpName` needed); with multiple, each `@BrokerHTTP` sets a `name` and each `@BrokerAuth`
283
+ targets it via `httpName`. A route with no `@BrokerAuth` is public.
284
284
 
285
285
  ## Verify
286
286
  - topic/queue/exchange names line up across `broker`/`topics`/paths (gotchas 5–7);
@@ -237,7 +237,7 @@ function buildGatewayBlock(sel) {
237
237
  events: []
238
238
  ws:
239
239
  heartbeatIntervalMs: 30000
240
- # Auth is declared per-event (events[].auth / requireAuth / roles / scopeClaim).
240
+ # Auth is declared per-event (events[].auth / requireAuth / actions / scopeClaim).
241
241
  paths:
242
242
  ${paths.join('\n')}`;
243
243
  if (anyAdmin) {
@@ -329,20 +329,16 @@ const ACL_PATHS = ` # --- ACL management: actions (name is the key — PUT up
329
329
  topic: rlb-acl
330
330
  action: acl-revoke
331
331
  mode: rpc
332
- # --- ACL checks (GET → 200 with true/false) ---
333
- - name: acl-check-gtw
332
+ # --- ACL check (GET → 200 with true/false) ---
333
+ # checkAction(userId, {companyId?, resourceId?}, action): true if the user holds the action
334
+ # via any role on the EXACT (companyId, resourceId). companyId/resourceId are optional;
335
+ # when both are absent the check matches resource-less grants only (no wildcard).
336
+ - name: acl-check-action
334
337
  method: GET
335
338
  path: /acl/check
336
339
  dataSource: query
337
340
  topic: rlb-acl
338
- action: acl-can-user-do-gtw
339
- mode: rpc
340
- - name: acl-check-resource
341
- method: GET
342
- path: /acl/check-resource
343
- dataSource: query
344
- topic: rlb-acl
345
- action: acl-can-user-do
341
+ action: acl-check-action
346
342
  mode: rpc
347
343
  # Lists the caller's accessible resources. Add an 'auth: <provider>' line once you declare an auth-provider.
348
344
  - name: acl-list-resources-by-user
@@ -503,7 +499,7 @@ function brokerForRootAsync() {
503
499
  function proxyForRootAsync(sel) {
504
500
  const providers = sel.acl
505
501
  ? `[
506
- // Role-gated paths resolve the caller's roles via AclService (in-process, no broker hop).
502
+ // Action-gated paths resolve the caller's identity via AclService (in-process, no broker hop).
507
503
  { provide: RLB_GTW_ACL_ROLE_SERVICE, useExisting: AclService },
508
504
  ]`
509
505
  : `[]`;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/nest-add/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/nest-add/index.ts"],"names":[],"mappings":"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"}
@@ -290,7 +290,7 @@ function buildGatewayBlock(sel: Resolved): string {
290
290
  events: []
291
291
  ws:
292
292
  heartbeatIntervalMs: 30000
293
- # Auth is declared per-event (events[].auth / requireAuth / roles / scopeClaim).
293
+ # Auth is declared per-event (events[].auth / requireAuth / actions / scopeClaim).
294
294
  paths:
295
295
  ${paths.join('\n')}`;
296
296
 
@@ -384,20 +384,16 @@ const ACL_PATHS = ` # --- ACL management: actions (name is the key — PUT up
384
384
  topic: rlb-acl
385
385
  action: acl-revoke
386
386
  mode: rpc
387
- # --- ACL checks (GET → 200 with true/false) ---
388
- - name: acl-check-gtw
387
+ # --- ACL check (GET → 200 with true/false) ---
388
+ # checkAction(userId, {companyId?, resourceId?}, action): true if the user holds the action
389
+ # via any role on the EXACT (companyId, resourceId). companyId/resourceId are optional;
390
+ # when both are absent the check matches resource-less grants only (no wildcard).
391
+ - name: acl-check-action
389
392
  method: GET
390
393
  path: /acl/check
391
394
  dataSource: query
392
395
  topic: rlb-acl
393
- action: acl-can-user-do-gtw
394
- mode: rpc
395
- - name: acl-check-resource
396
- method: GET
397
- path: /acl/check-resource
398
- dataSource: query
399
- topic: rlb-acl
400
- action: acl-can-user-do
396
+ action: acl-check-action
401
397
  mode: rpc
402
398
  # Lists the caller's accessible resources. Add an 'auth: <provider>' line once you declare an auth-provider.
403
399
  - name: acl-list-resources-by-user
@@ -563,7 +559,7 @@ function brokerForRootAsync(): string {
563
559
  function proxyForRootAsync(sel: Resolved): string {
564
560
  const providers = sel.acl
565
561
  ? `[
566
- // Role-gated paths resolve the caller's roles via AclService (in-process, no broker hop).
562
+ // Action-gated paths resolve the caller's identity via AclService (in-process, no broker hop).
567
563
  { provide: RLB_GTW_ACL_ROLE_SERVICE, useExisting: AclService },
568
564
  ]`
569
565
  : `[]`;