@rhino-dev/rhino-nestjs 4.7.2 → 4.8.0

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.
package/README.md CHANGED
@@ -158,7 +158,7 @@ That's it. You now have a full REST API for posts:
158
158
  | 2 | **Authentication** | Login, logout, password recovery/reset, invitation-based registration via JWT. |
159
159
  | 3 | **Authorization & Policies** | Convention-based permission checks (`{slug}.{action}`), wildcard support. |
160
160
  | 4 | **Role-Based Access Control** | Per-org roles via `user_roles` pivot table. |
161
- | 5 | **Attribute-Level Permissions** | Control which fields each role can read and write. |
161
+ | 5 | **Attribute-Level Permissions** | Control which fields each role can read and write. A field a role cannot read is also refused as a `?filter[]` or a `?sort`, and skipped by `?search=`. |
162
162
  | 6 | **Validation** | Zod schemas with role-keyed rules. Store and update schemas are independent. |
163
163
  | 7 | **Cross-Tenant FK Validation** | Organization-id is automatically stripped from user input; org always comes from middleware. |
164
164
  | 8 | **Filtering** | `?filter[field]=value` with comma-separated OR values. |
@@ -184,7 +184,7 @@ That's it. You now have a full REST API for posts:
184
184
  | 28 | **Blueprint System** | YAML-to-code generation for models, migrations, policies, tests, and seeders. |
185
185
  | 29 | **Group Membership** | Opt-in `auth.enforceGroupMembership` makes a route group an access boundary. Memberships are keyed by `(user, route_group, organization, role)` on `user_roles`; a NULL `route_group` is a wildcard. No match → 403, enforced both at `/auth/login` (non-members can't sign in) and on every resource request. Permissions then resolve from the matched membership row. |
186
186
  | 30 | **Group-Aware Auth & Lifecycle Hooks** | Per-group `auth: true` registers the auth route set under the group; per-group `hooks` (a provider implementing `AuthLifecycleHooks`) run `afterLogin/afterLogout/afterRegister/afterPasswordRecover/afterPasswordReset` and may reject (revoking the issued token). Invitations carry the `route_group`; accept populates the membership. See [Group-auth hooks & token revocation](#group-auth-hooks--token-revocation). |
187
- | 31 | **Named Scopes** | Client-selectable `?scope=<key>` on index/trashed. Only keys declared in `namedScopes` are callable (own-property check — prototype keys like `constructor` are rejected with 403); each scope returns a Prisma where-fragment that Rhino **ANDs** into the query, so it can never drop the org/filter/search/soft-delete constraints. `defaultScope` (validated at boot to be a declared key) applies when no `?scope` is sent. `show`/`update`/`destroy` prefetch stay unscoped. Fails closed (403) on an unknown name or a missing `ScopeService`. |
187
+ | 31 | **Named Scopes** | Client-selectable `?scope=<key>` on index/trashed. Only keys declared in `namedScopes` are callable (own-property check — prototype keys like `constructor` are rejected with 403); each scope returns a Prisma where-fragment that Rhino **ANDs** into the query, so it can never drop the org/filter/search/soft-delete constraints. A scope class may declare `static params` so the client can fill them in with `?scope[key][param]=value`, and up to three scopes may be combined, applied in URL order. The policy's `permittedScopes()` narrows which keys this user may pick. `defaultScope` (validated at boot to be a declared key) applies when no `?scope` is sent. `show`/`update`/`destroy` prefetch stay unscoped. Fails closed (403) on an unknown name or a missing `ScopeService`. |
188
188
  | 32 | **Configurable Route Key** | Choose which column matches the `:id` URL segment on member endpoints (show/update/destroy/restore/force-delete), e.g. `routeKey: 'hashId'` → `GET /api/jobs/{hash_id}`. Per-model `routeKey` beats the root config's `routeKey`; default is the primary key `id` (unchanged behavior). With a custom key the param is always treated as a string (a digit-only hash is never numified), whitelisted/`?fields` responses always keep the route-key column, and lookups stay tenant-scoped. Nested operations, FK validation, and org resolution remain primary-key based. Also available as `@RouteKey('hashId')` and blueprint `options.route_key`. |
189
189
 
190
190
  ### Group-auth hooks & token revocation
@@ -95,6 +95,23 @@ export interface ModelRegistration {
95
95
  * Client-selectable named scopes for ?scope=<key>. Only declared keys are
96
96
  * callable. Each scope returns a Prisma where-fragment that Rhino ANDs into
97
97
  * the query for index/trashed only.
98
+ *
99
+ * A scope may declare parameters the client fills in, as statics on the class:
100
+ *
101
+ * class WindowScope implements RhinoNamedScope {
102
+ * static params = ['from', 'to'];
103
+ * static optionalParams = ['to'];
104
+ * apply(ctx: ScopeContext) { ... ctx.args.from ... }
105
+ * }
106
+ *
107
+ * Queries:
108
+ * GET /api/routes?scope=archived
109
+ * GET /api/routes?scope[since]=2026-01-01
110
+ * GET /api/routes?scope[window][from]=a&scope[window][to]=b
111
+ *
112
+ * Up to three scopes may be combined in the bracket form, applied in the
113
+ * order the URL lists them. A scope that declares no parameters never
114
+ * receives client input: sending any is a 403.
98
115
  */
99
116
  namedScopes?: Record<string, Type<RhinoNamedScope>>;
100
117
  /** Key of namedScopes applied when no ?scope param is sent. */
@@ -18,6 +18,15 @@ export declare class ResourcePolicy {
18
18
  forceDelete(user: any, _model: any, organization?: any): boolean;
19
19
  permittedAttributesForShow(_user: any, _org?: any): string[];
20
20
  hiddenAttributesForShow(_user: any, _org?: any): string[];
21
+ /**
22
+ * Named scopes this user may select with `?scope=`. Return `['*']` to allow
23
+ * every scope the model declares in `namedScopes` (default). The model's
24
+ * declaration still applies: this can only narrow it.
25
+ *
26
+ * The model's `defaultScope` is applied by the server when the client sends
27
+ * no scope at all, so it is not subject to this list. Requesting it by name is.
28
+ */
29
+ permittedScopes(_user: any, _org?: any): string[];
21
30
  permittedAttributesForCreate(_user: any, _org?: any): string[];
22
31
  permittedAttributesForUpdate(_user: any, _org?: any): string[];
23
32
  protected checkPermission(user: any, action: string, organization?: any): boolean;
@@ -49,6 +49,18 @@ class ResourcePolicy {
49
49
  hiddenAttributesForShow(_user, _org) {
50
50
  return [];
51
51
  }
52
+ // ---------------- Scope permissions ----------------
53
+ /**
54
+ * Named scopes this user may select with `?scope=`. Return `['*']` to allow
55
+ * every scope the model declares in `namedScopes` (default). The model's
56
+ * declaration still applies: this can only narrow it.
57
+ *
58
+ * The model's `defaultScope` is applied by the server when the client sends
59
+ * no scope at all, so it is not subject to this list. Requesting it by name is.
60
+ */
61
+ permittedScopes(_user, _org) {
62
+ return ['*'];
63
+ }
52
64
  permittedAttributesForCreate(_user, _org) {
53
65
  return ['*'];
54
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resource-policy.js","sourceRoot":"","sources":["../../src/policies/resource-policy.ts"],"names":[],"mappings":";;;AAAA,oEAAqF;AAErF;;;GAGG;AACH,MAAa,cAAc;IACzB;;;OAGG;IACH,YAAY,CAAU;IAEtB,yCAAyC;IACzC,OAAO,CAAC,IAAS,EAAE,YAAkB;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,IAAS,EAAE,MAAW,EAAE,YAAkB;QAC7C,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,CAAC,IAAS,EAAE,YAAkB;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,CAAC,IAAS,EAAE,MAAW,EAAE,YAAkB;QAC/C,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,CAAC,IAAS,EAAE,MAAW,EAAE,YAAkB;QAC/C,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IAED,gDAAgD;IAChD,WAAW,CAAC,IAAS,EAAE,YAAkB;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,IAAS,EAAE,MAAW,EAAE,YAAkB;QAChD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;IACD,WAAW,CAAC,IAAS,EAAE,MAAW,EAAE,YAAkB;QACpD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,0DAA0D;IAC1D,4EAA4E;IAC5E,8EAA8E;IAC9E,8EAA8E;IAC9E,2BAA2B;IAC3B,0BAA0B,CAAC,KAAU,EAAE,IAAU;QAC/C,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,uBAAuB,CAAC,KAAU,EAAE,IAAU;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,4BAA4B,CAAC,KAAU,EAAE,IAAU;QACjD,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,4BAA4B,CAAC,KAAU,EAAE,IAAU;QACjD,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,4CAA4C;IAClC,eAAe,CAAC,IAAS,EAAE,MAAc,EAAE,YAAkB;QACrE,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,IAAA,sCAAiB,EAAC,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,EAAE,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC;IAC5E,CAAC;IAES,OAAO,CAAC,IAAS,EAAE,IAAY,EAAE,YAAkB;QAC3D,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,KAAK,GAAG,YAAY,EAAE,EAAE,CAAC;QAC/B,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,IAAA,wCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC;IACnD,CAAC;CACF;AAnED,wCAmEC"}
1
+ {"version":3,"file":"resource-policy.js","sourceRoot":"","sources":["../../src/policies/resource-policy.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,22 @@ export interface ParsedQuery {
9
9
  perPage?: number;
10
10
  /** Validated named-scope key to apply (index/trashed only). */
11
11
  scopeName?: string;
12
+ /**
13
+ * Validated named scopes to apply, in the order the URL listed them, each
14
+ * with its bound arguments (index/trashed only).
15
+ */
16
+ scopes?: Array<{
17
+ name: string;
18
+ args: Record<string, any>;
19
+ }>;
12
20
  }
21
+ /** Who is asking, so the policy can gate scopes and attributes. */
22
+ export interface QueryContext {
23
+ user?: any;
24
+ organization?: any;
25
+ }
26
+ /** How many named scopes one request may combine. */
27
+ export declare const MAX_SCOPES_PER_REQUEST = 3;
13
28
  /**
14
29
  * Parses query string parameters into Prisma-compatible `findMany` args.
15
30
  *
@@ -31,11 +46,56 @@ export declare class QueryBuilderService {
31
46
  constructor(config?: RhinoConfigService);
32
47
  build(query: Record<string, any>, reg: ModelRegistration, opts?: {
33
48
  namedScopes?: boolean;
49
+ ctx?: QueryContext;
34
50
  }): ParsedQuery;
35
- buildWhere(query: Record<string, any>, reg: ModelRegistration): Record<string, any>;
51
+ /**
52
+ * Parse, authorize and bind `?scope=` / `?scope[name][param]=value`.
53
+ *
54
+ * Two wire forms, which cannot be mixed in one request because they share the
55
+ * same query key:
56
+ *
57
+ * ?scope=archived legacy, one scope, no arguments
58
+ * ?scope[archived]= same thing in the bracket form
59
+ * ?scope[since]=2026-01-01 one argument, bound to the single
60
+ * declared parameter
61
+ * ?scope[window][from]=a&scope[window][to]=b named arguments
62
+ *
63
+ * A scope declares its parameters as `static params` (and `static
64
+ * optionalParams`) on the scope class; the bound arguments reach `apply()` as
65
+ * `context.args`. A scope that declares none never receives any.
66
+ */
67
+ buildNamedScopes(query: Record<string, any>, reg: ModelRegistration, ctx?: QueryContext): Array<{
68
+ name: string;
69
+ args: Record<string, any>;
70
+ }>;
71
+ /** Own-key check: a prototype key such as `constructor` is never a scope. */
72
+ private assertScopeDeclared;
73
+ /**
74
+ * Bind the raw value sent for one scope to the parameters its class declares.
75
+ * Every argument is named: a positional list is not accepted.
76
+ */
77
+ private bindScopeArguments;
78
+ /**
79
+ * Query-string values always arrive as strings; hand scope bodies real
80
+ * booleans so a check cannot be fooled by the string "false".
81
+ */
82
+ private coerceScopeArgument;
83
+ /**
84
+ * Scope names this user may select, or `['*']` when the policy does not
85
+ * restrict them (the default, and the behavior of every policy written before
86
+ * `permittedScopes()` existed).
87
+ */
88
+ private permittedScopeNames;
89
+ /**
90
+ * Whether this user may use an attribute as a query predicate: the same gate
91
+ * the serializer applies to the response body. A dotted relation field is
92
+ * left alone — the related model's own policy is not reachable from here.
93
+ */
94
+ private attributeQueryable;
95
+ buildWhere(query: Record<string, any>, reg: ModelRegistration, ctx?: QueryContext): Record<string, any>;
36
96
  private parseFilterValue;
37
97
  private buildRelationContains;
38
- buildOrderBy(query: Record<string, any>, reg: ModelRegistration): any;
98
+ buildOrderBy(query: Record<string, any>, reg: ModelRegistration, ctx?: QueryContext): any;
39
99
  buildInclude(query: Record<string, any>, reg: ModelRegistration): Record<string, any> | undefined;
40
100
  private assignInclude;
41
101
  buildSelect(query: Record<string, any>, reg: ModelRegistration): Record<string, any> | undefined;
@@ -12,10 +12,12 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.QueryBuilderService = void 0;
15
+ exports.QueryBuilderService = exports.MAX_SCOPES_PER_REQUEST = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const rhino_config_1 = require("../rhino.config");
18
18
  const rhino_exception_1 = require("../errors/rhino-exception");
19
+ /** How many named scopes one request may combine. */
20
+ exports.MAX_SCOPES_PER_REQUEST = 3;
19
21
  /**
20
22
  * Parses query string parameters into Prisma-compatible `findMany` args.
21
23
  *
@@ -38,34 +40,186 @@ let QueryBuilderService = class QueryBuilderService {
38
40
  this.config = config;
39
41
  }
40
42
  build(query, reg, opts = {}) {
43
+ const ctx = opts.ctx ?? {};
41
44
  const parsed = {
42
- where: this.buildWhere(query, reg),
43
- orderBy: this.buildOrderBy(query, reg),
45
+ where: this.buildWhere(query, reg, ctx),
46
+ orderBy: this.buildOrderBy(query, reg, ctx),
44
47
  include: this.buildInclude(query, reg),
45
48
  select: this.buildSelect(query, reg),
46
49
  page: this.parseInt(query.page),
47
50
  perPage: this.parseInt(query.per_page ?? query.perPage),
48
51
  };
49
52
  if (opts.namedScopes) {
50
- // A non-string (e.g. repeated/array ?scope=a&scope=b) is never a valid
51
- // scope name reject it before any prototype-key lookups.
52
- if (query.scope != null && typeof query.scope !== 'string') {
53
+ parsed.scopes = this.buildNamedScopes(query, reg, ctx);
54
+ // Kept for consumers that read a single scope name.
55
+ parsed.scopeName = parsed.scopes[0]?.name;
56
+ }
57
+ return parsed;
58
+ }
59
+ /**
60
+ * Parse, authorize and bind `?scope=` / `?scope[name][param]=value`.
61
+ *
62
+ * Two wire forms, which cannot be mixed in one request because they share the
63
+ * same query key:
64
+ *
65
+ * ?scope=archived legacy, one scope, no arguments
66
+ * ?scope[archived]= same thing in the bracket form
67
+ * ?scope[since]=2026-01-01 one argument, bound to the single
68
+ * declared parameter
69
+ * ?scope[window][from]=a&scope[window][to]=b named arguments
70
+ *
71
+ * A scope declares its parameters as `static params` (and `static
72
+ * optionalParams`) on the scope class; the bound arguments reach `apply()` as
73
+ * `context.args`. A scope that declares none never receives any.
74
+ */
75
+ buildNamedScopes(query, reg, ctx = {}) {
76
+ const raw = query.scope;
77
+ // Nothing requested: the model's default scope, which takes no arguments.
78
+ if (raw == null || raw === '' || (typeof raw === 'object' && Object.keys(raw).length === 0)) {
79
+ if (reg.defaultScope === undefined)
80
+ return [];
81
+ this.assertScopeDeclared(reg.defaultScope, reg);
82
+ return [{ name: reg.defaultScope, args: {} }];
83
+ }
84
+ let requested;
85
+ if (typeof raw === 'string') {
86
+ // Legacy form — one scope, no arguments.
87
+ requested = [[raw, '']];
88
+ }
89
+ else if (Array.isArray(raw) || typeof raw !== 'object') {
90
+ // A repeated ?scope=a&scope=b or ?scope[]=a names nothing.
91
+ throw rhino_exception_1.RhinoException.forbidden(`Scope is not allowed`);
92
+ }
93
+ else {
94
+ requested = Object.entries(raw);
95
+ }
96
+ if (requested.length > exports.MAX_SCOPES_PER_REQUEST) {
97
+ throw rhino_exception_1.RhinoException.forbidden('Too many scopes requested');
98
+ }
99
+ const permitted = this.permittedScopeNames(reg, ctx);
100
+ return requested.map(([name, rawArgs]) => {
101
+ if (typeof name !== 'string' || name === '') {
53
102
  throw rhino_exception_1.RhinoException.forbidden(`Scope is not allowed`);
54
103
  }
55
- const requested = typeof query.scope === 'string' && query.scope !== '' ? query.scope : undefined;
56
- const scopeName = requested ?? reg.defaultScope;
57
- if (scopeName !== undefined) {
58
- if (!reg.namedScopes ||
59
- !Object.prototype.hasOwnProperty.call(reg.namedScopes, scopeName) ||
60
- typeof reg.namedScopes[scopeName] !== 'function') {
61
- throw rhino_exception_1.RhinoException.forbidden(`Scope '${scopeName}' is not allowed`);
62
- }
63
- parsed.scopeName = scopeName;
104
+ this.assertScopeDeclared(name, reg);
105
+ if (!(permitted.length === 1 && permitted[0] === '*') && !permitted.includes(name)) {
106
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' is not allowed`);
64
107
  }
108
+ return { name, args: this.bindScopeArguments(name, reg, rawArgs) };
109
+ });
110
+ }
111
+ /** Own-key check: a prototype key such as `constructor` is never a scope. */
112
+ assertScopeDeclared(name, reg) {
113
+ if (!reg.namedScopes ||
114
+ !Object.prototype.hasOwnProperty.call(reg.namedScopes, name) ||
115
+ typeof reg.namedScopes[name] !== 'function') {
116
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' is not allowed`);
65
117
  }
66
- return parsed;
67
118
  }
68
- buildWhere(query, reg) {
119
+ /**
120
+ * Bind the raw value sent for one scope to the parameters its class declares.
121
+ * Every argument is named: a positional list is not accepted.
122
+ */
123
+ bindScopeArguments(name, reg, raw) {
124
+ const ScopeClass = reg.namedScopes[name];
125
+ const params = Array.isArray(ScopeClass.params) ? ScopeClass.params : [];
126
+ const optional = Array.isArray(ScopeClass.optionalParams)
127
+ ? ScopeClass.optionalParams
128
+ : [];
129
+ let given;
130
+ if (raw == null || raw === '') {
131
+ // ?scope[archived]= — no arguments. A scope with required parameters
132
+ // still fails below, naming them.
133
+ given = {};
134
+ }
135
+ else if (Array.isArray(raw)) {
136
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' requires named parameters`);
137
+ }
138
+ else if (typeof raw !== 'object') {
139
+ if (params.length === 0) {
140
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' does not accept arguments`);
141
+ }
142
+ // A bare value binds to the single declared parameter. Two parameters can
143
+ // never be guessed at from one value.
144
+ if (params.length > 1) {
145
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' requires named parameters`);
146
+ }
147
+ given = { [params[0]]: raw };
148
+ }
149
+ else {
150
+ if (params.length === 0) {
151
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' does not accept arguments`);
152
+ }
153
+ given = { ...raw };
154
+ }
155
+ for (const key of Object.keys(given)) {
156
+ if (!params.includes(key)) {
157
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' does not accept parameter '${key}'`);
158
+ }
159
+ if (given[key] !== null && typeof given[key] === 'object') {
160
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' requires named parameters`);
161
+ }
162
+ }
163
+ const args = {};
164
+ for (const param of params) {
165
+ if (Object.prototype.hasOwnProperty.call(given, param)) {
166
+ args[param] = this.coerceScopeArgument(given[param]);
167
+ continue;
168
+ }
169
+ if (!optional.includes(param)) {
170
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${name}' requires parameter '${param}'`);
171
+ }
172
+ }
173
+ return args;
174
+ }
175
+ /**
176
+ * Query-string values always arrive as strings; hand scope bodies real
177
+ * booleans so a check cannot be fooled by the string "false".
178
+ */
179
+ coerceScopeArgument(value) {
180
+ if (typeof value !== 'string')
181
+ return value;
182
+ const lowered = value.toLowerCase();
183
+ if (lowered === 'true')
184
+ return true;
185
+ if (lowered === 'false')
186
+ return false;
187
+ return value;
188
+ }
189
+ /**
190
+ * Scope names this user may select, or `['*']` when the policy does not
191
+ * restrict them (the default, and the behavior of every policy written before
192
+ * `permittedScopes()` existed).
193
+ */
194
+ permittedScopeNames(reg, ctx) {
195
+ if (!reg.policy)
196
+ return ['*'];
197
+ const policy = new reg.policy();
198
+ if (typeof policy.permittedScopes !== 'function')
199
+ return ['*'];
200
+ const permitted = policy.permittedScopes(ctx.user, ctx.organization);
201
+ return Array.isArray(permitted) ? permitted.map((name) => String(name)) : ['*'];
202
+ }
203
+ /**
204
+ * Whether this user may use an attribute as a query predicate: the same gate
205
+ * the serializer applies to the response body. A dotted relation field is
206
+ * left alone — the related model's own policy is not reachable from here.
207
+ */
208
+ attributeQueryable(name, reg, ctx) {
209
+ if (!reg.policy || name.includes('.'))
210
+ return true;
211
+ const policy = new reg.policy();
212
+ const hidden = policy.hiddenAttributesForShow?.(ctx.user, ctx.organization) ?? [];
213
+ if (hidden.includes(name))
214
+ return false;
215
+ const permitted = policy.permittedAttributesForShow?.(ctx.user, ctx.organization) ?? [
216
+ '*',
217
+ ];
218
+ if (permitted.length === 1 && permitted[0] === '*')
219
+ return true;
220
+ return permitted.includes(name);
221
+ }
222
+ buildWhere(query, reg, ctx = {}) {
69
223
  const where = {};
70
224
  const filter = query.filter ?? {};
71
225
  const allowed = new Set(reg.allowedFilters ?? []);
@@ -73,12 +227,26 @@ let QueryBuilderService = class QueryBuilderService {
73
227
  for (const [key, rawVal] of Object.entries(filter)) {
74
228
  if (!allowed.has(key))
75
229
  continue;
230
+ // Attribute permissions used to apply only when serializing, so a
231
+ // hidden column stayed usable as a predicate: ?filter[salary]=300000
232
+ // never printed a salary but told the caller whose salary it was.
233
+ if (!this.attributeQueryable(key, reg, ctx)) {
234
+ throw rhino_exception_1.RhinoException.forbidden(`Filter '${key}' is not allowed`);
235
+ }
76
236
  where[key] = this.parseFilterValue(rawVal);
77
237
  }
78
238
  }
79
239
  const search = query.search;
80
240
  if (search && reg.allowedSearch && reg.allowedSearch.length > 0) {
81
- const fragments = reg.allowedSearch.map((field) => {
241
+ const searchable = reg.allowedSearch.filter((field) => this.attributeQueryable(field, reg, ctx));
242
+ if (searchable.length === 0) {
243
+ // Every searchable column is hidden from this user. Searching a hidden
244
+ // column tells the caller what is in it, so match nothing rather than
245
+ // silently returning the whole list the client asked to narrow.
246
+ where.OR = [];
247
+ return where;
248
+ }
249
+ const fragments = searchable.map((field) => {
82
250
  if (field.includes('.')) {
83
251
  return this.buildRelationContains(field, String(search));
84
252
  }
@@ -106,7 +274,8 @@ let QueryBuilderService = class QueryBuilderService {
106
274
  }
107
275
  return inner;
108
276
  }
109
- buildOrderBy(query, reg) {
277
+ buildOrderBy(query, reg, ctx = {}) {
278
+ const clientSupplied = query.sort != null && query.sort !== '';
110
279
  const raw = query.sort ?? reg.defaultSort;
111
280
  if (!raw)
112
281
  return undefined;
@@ -119,6 +288,10 @@ let QueryBuilderService = class QueryBuilderService {
119
288
  if (allowed.size > 0 && !allowed.has(field)) {
120
289
  throw new common_1.BadRequestException(`Sort not allowed: ${field}`);
121
290
  }
291
+ // The model's own defaultSort is the server's choice, not the client's.
292
+ if (clientSupplied && !this.attributeQueryable(field, reg, ctx)) {
293
+ throw rhino_exception_1.RhinoException.forbidden(`Sort '${field}' is not allowed`);
294
+ }
122
295
  orderings.push({ [field]: desc ? 'desc' : 'asc' });
123
296
  }
124
297
  return orderings;
@@ -1 +1 @@
1
- {"version":3,"file":"query-builder.service.js","sourceRoot":"","sources":["../../src/services/query-builder.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-builder.service.js","sourceRoot":"","sources":["../../src/services/query-builder.service.ts"],"names":[],"mappings":"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"}
@@ -113,19 +113,24 @@ let ResourceService = class ResourceService {
113
113
  if (!reg)
114
114
  throw new Error(`Unknown model: ${modelSlug}`);
115
115
  const delegate = this.delegate(modelSlug);
116
- const parsed = this.queryBuilder.build(rawQuery, reg, { namedScopes: true });
116
+ const parsed = this.queryBuilder.build(rawQuery, reg, {
117
+ namedScopes: true,
118
+ ctx: { user: ctx.user, organization: ctx.organization },
119
+ });
117
120
  let where = this.withOrgScope(this.mergeWhere(parsed.where), this.orgFilter(modelSlug, ctx.organization));
118
121
  where = this.applyScopes(where, modelSlug, ctx);
119
- // Apply the validated client-selectable named scope (index/trashed only).
122
+ // Apply the validated client-selectable named scopes, in the order the URL
123
+ // listed them (index/trashed only).
120
124
  // ScopeService is @Optional() — fail CLOSED if it was never wired in.
121
- if (parsed.scopeName) {
125
+ for (const requested of parsed.scopes ?? []) {
122
126
  if (!this.scopes) {
123
- throw rhino_exception_1.RhinoException.forbidden(`Scope '${parsed.scopeName}' is not allowed`);
127
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${requested.name}' is not allowed`);
124
128
  }
125
- where = this.scopes.applyNamed(parsed.scopeName, where, reg, {
129
+ where = this.scopes.applyNamed(requested.name, where, reg, {
126
130
  user: ctx.user,
127
131
  organization: ctx.organization,
128
132
  userRole: (0, permission_matcher_1.resolveUserRoleSlug)(ctx.user, ctx.organization?.id),
133
+ args: requested.args,
129
134
  });
130
135
  }
131
136
  // soft delete visibility
@@ -186,19 +191,23 @@ let ResourceService = class ResourceService {
186
191
  throw new Error(`Unknown model: ${modelSlug}`);
187
192
  const delegate = this.delegate(modelSlug);
188
193
  const declared = reg.collectionComputedAttributes ?? {};
189
- const parsed = this.queryBuilder.build(rawQuery, reg, { namedScopes: true });
194
+ const parsed = this.queryBuilder.build(rawQuery, reg, {
195
+ namedScopes: true,
196
+ ctx: { user: ctx.user, organization: ctx.organization },
197
+ });
190
198
  let where = this.withOrgScope(this.mergeWhere(parsed.where), this.orgFilter(modelSlug, ctx.organization));
191
199
  where = this.applyScopes(where, modelSlug, ctx);
192
- // Apply the validated client-selectable named scope, exactly as findAll does.
200
+ // Apply the validated client-selectable named scopes, exactly as findAll does.
193
201
  // ScopeService is @Optional() — fail CLOSED if it was never wired in.
194
- if (parsed.scopeName) {
202
+ for (const requested of parsed.scopes ?? []) {
195
203
  if (!this.scopes) {
196
- throw rhino_exception_1.RhinoException.forbidden(`Scope '${parsed.scopeName}' is not allowed`);
204
+ throw rhino_exception_1.RhinoException.forbidden(`Scope '${requested.name}' is not allowed`);
197
205
  }
198
- where = this.scopes.applyNamed(parsed.scopeName, where, reg, {
206
+ where = this.scopes.applyNamed(requested.name, where, reg, {
199
207
  user: ctx.user,
200
208
  organization: ctx.organization,
201
209
  userRole: (0, permission_matcher_1.resolveUserRoleSlug)(ctx.user, ctx.organization?.id),
210
+ args: requested.args,
202
211
  });
203
212
  }
204
213
  if (reg.softDeletes && !ctx.includeTrashed) {
@@ -1 +1 @@
1
- {"version":3,"file":"resource.service.js","sourceRoot":"","sources":["../../src/services/resource.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.service.js","sourceRoot":"","sources":["../../src/services/resource.service.ts"],"names":[],"mappings":"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"}