@spinajs/rbac-http-user 2.0.481 → 2.0.484

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 (57) hide show
  1. package/lib/cjs/actions/2fa.d.ts +6 -0
  2. package/lib/cjs/actions/2fa.d.ts.map +1 -1
  3. package/lib/cjs/actions/2fa.js +18 -4
  4. package/lib/cjs/actions/2fa.js.map +1 -1
  5. package/lib/cjs/controllers/ActiveRoleController.d.ts +1 -0
  6. package/lib/cjs/controllers/ActiveRoleController.d.ts.map +1 -1
  7. package/lib/cjs/controllers/ActiveRoleController.js +21 -2
  8. package/lib/cjs/controllers/ActiveRoleController.js.map +1 -1
  9. package/lib/cjs/controllers/LoginController.d.ts +1 -1
  10. package/lib/cjs/controllers/LoginController.d.ts.map +1 -1
  11. package/lib/cjs/controllers/LoginController.js +32 -24
  12. package/lib/cjs/controllers/LoginController.js.map +1 -1
  13. package/lib/cjs/controllers/TwoFactorAuthController.d.ts +7 -0
  14. package/lib/cjs/controllers/TwoFactorAuthController.d.ts.map +1 -1
  15. package/lib/cjs/controllers/TwoFactorAuthController.js +36 -5
  16. package/lib/cjs/controllers/TwoFactorAuthController.js.map +1 -1
  17. package/lib/cjs/controllers/UserController.d.ts.map +1 -1
  18. package/lib/cjs/controllers/UserController.js +5 -1
  19. package/lib/cjs/controllers/UserController.js.map +1 -1
  20. package/lib/cjs/controllers/UserMetadataController.d.ts +5 -5
  21. package/lib/cjs/controllers/UserMetadataController.d.ts.map +1 -1
  22. package/lib/cjs/controllers/UserMetadataController.js +59 -30
  23. package/lib/cjs/controllers/UserMetadataController.js.map +1 -1
  24. package/lib/cjs/models/FilterableUserMetadata.d.ts +1 -0
  25. package/lib/cjs/models/FilterableUserMetadata.d.ts.map +1 -1
  26. package/lib/cjs/models/FilterableUserMetadata.js +8 -1
  27. package/lib/cjs/models/FilterableUserMetadata.js.map +1 -1
  28. package/lib/mjs/actions/2fa.d.ts +6 -0
  29. package/lib/mjs/actions/2fa.d.ts.map +1 -1
  30. package/lib/mjs/actions/2fa.js +18 -4
  31. package/lib/mjs/actions/2fa.js.map +1 -1
  32. package/lib/mjs/controllers/ActiveRoleController.d.ts +1 -0
  33. package/lib/mjs/controllers/ActiveRoleController.d.ts.map +1 -1
  34. package/lib/mjs/controllers/ActiveRoleController.js +22 -3
  35. package/lib/mjs/controllers/ActiveRoleController.js.map +1 -1
  36. package/lib/mjs/controllers/LoginController.d.ts +1 -1
  37. package/lib/mjs/controllers/LoginController.d.ts.map +1 -1
  38. package/lib/mjs/controllers/LoginController.js +33 -25
  39. package/lib/mjs/controllers/LoginController.js.map +1 -1
  40. package/lib/mjs/controllers/TwoFactorAuthController.d.ts +7 -0
  41. package/lib/mjs/controllers/TwoFactorAuthController.d.ts.map +1 -1
  42. package/lib/mjs/controllers/TwoFactorAuthController.js +38 -7
  43. package/lib/mjs/controllers/TwoFactorAuthController.js.map +1 -1
  44. package/lib/mjs/controllers/UserController.d.ts.map +1 -1
  45. package/lib/mjs/controllers/UserController.js +5 -1
  46. package/lib/mjs/controllers/UserController.js.map +1 -1
  47. package/lib/mjs/controllers/UserMetadataController.d.ts +5 -5
  48. package/lib/mjs/controllers/UserMetadataController.d.ts.map +1 -1
  49. package/lib/mjs/controllers/UserMetadataController.js +60 -31
  50. package/lib/mjs/controllers/UserMetadataController.js.map +1 -1
  51. package/lib/mjs/models/FilterableUserMetadata.d.ts +1 -0
  52. package/lib/mjs/models/FilterableUserMetadata.d.ts.map +1 -1
  53. package/lib/mjs/models/FilterableUserMetadata.js +8 -1
  54. package/lib/mjs/models/FilterableUserMetadata.js.map +1 -1
  55. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  56. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  57. package/package.json +19 -20
@@ -12,11 +12,11 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  };
13
13
  import { TokenDto } from './../dto/token-dto.js';
14
14
  import { BaseController, BasePath, Ok, Post, Get, ForbiddenResponse } from '@spinajs/http';
15
- import { SessionProvider, User as UserModel, _unwindGrants, AccessControl } from '@spinajs/rbac';
15
+ import { SessionProvider, User as UserModel, _unwindGrants, AccessControl, regenerateSession, sessionCookieMaxAge } from '@spinajs/rbac';
16
16
  import { Session } from "@spinajs/rbac-http";
17
17
  import { Body, Policy } from '@spinajs/http';
18
18
  import { TwoFacRouteEnabled } from '../policies/2FaPolicy.js';
19
- import { AutoinjectService } from '@spinajs/configuration';
19
+ import { AutoinjectService, Config } from '@spinajs/configuration';
20
20
  import { Autoinject } from '@spinajs/di';
21
21
  import { QueueService } from '@spinajs/queue';
22
22
  import { User, NotAuthorizedPolicy } from "@spinajs/rbac-http";
@@ -77,23 +77,42 @@ let TwoFactorAuthController = class TwoFactorAuthController extends BaseControll
77
77
  */
78
78
  async verifyToken(logged, token, session) {
79
79
  try {
80
- await auth2Fa(logged, token.Token);
80
+ await this.verifyTwoFactorToken(logged, token.Token);
81
81
  // 2fa complete, mark as authorized
82
82
  // fron now on user is considered authorized
83
83
  session.Data.set('Authorized', true);
84
84
  session.Data.delete('TwoFactorAuth');
85
- await this.SessionProvider.save(session);
85
+ // Privilege elevation (login -> authorized) — regenerate the session
86
+ // id to defend against session fixation and reset the ssid cookie.
87
+ const regenerated = await regenerateSession(this.SessionProvider, session);
86
88
  this._log.trace('User logged in, 2fa authorized', {
87
89
  Uuid: logged.Uuid
88
90
  });
89
- const grants = this.AC.getGrants();
90
- const userGrants = logged.Role.map(r => _unwindGrants(r, grants));
91
- const combinedGrants = Object.assign({}, ...userGrants);
91
+ // Mirror the login response shape: resolve grants for the session's
92
+ // active role (falling back to the first role) and include ActiveRole,
93
+ // instead of flattening every role with no ActiveRole reported.
94
+ const activeRole = session.Data.get('ActiveRole') ?? logged.Role?.[0];
95
+ const combinedGrants = activeRole ? _unwindGrants(activeRole, this.AC.getGrants()) : {};
92
96
  return new Ok({
93
97
  ...logged.dehydrateWithRelations({
94
98
  dateTimeFormat: "iso"
95
99
  }),
100
+ Role: logged.Role,
101
+ ActiveRole: activeRole,
96
102
  Grants: combinedGrants,
103
+ }, {
104
+ Coockies: [
105
+ {
106
+ Name: 'ssid',
107
+ Value: regenerated.SessionId,
108
+ Options: {
109
+ signed: true,
110
+ httpOnly: true,
111
+ maxAge: sessionCookieMaxAge(regenerated),
112
+ ...this.SessionCookieConfig,
113
+ },
114
+ },
115
+ ],
97
116
  });
98
117
  }
99
118
  catch (err) {
@@ -111,6 +130,14 @@ let TwoFactorAuthController = class TwoFactorAuthController extends BaseControll
111
130
  });
112
131
  }
113
132
  }
133
+ /**
134
+ * Verifies the supplied TOTP token against the user's 2FA secret. Wraps the
135
+ * module-level `auth2Fa` action in a protected method so tests can stub the
136
+ * verification without a TOTP/DB setup.
137
+ */
138
+ verifyTwoFactorToken(user, token) {
139
+ return auth2Fa(user, token);
140
+ }
114
141
  };
115
142
  __decorate([
116
143
  Autoinject(QueueService),
@@ -120,6 +147,10 @@ __decorate([
120
147
  AutoinjectService('rbac.session'),
121
148
  __metadata("design:type", SessionProvider)
122
149
  ], TwoFactorAuthController.prototype, "SessionProvider", void 0);
150
+ __decorate([
151
+ Config('rbac.session.cookie', {}),
152
+ __metadata("design:type", Object)
153
+ ], TwoFactorAuthController.prototype, "SessionCookieConfig", void 0);
123
154
  __decorate([
124
155
  Autoinject(AccessControl),
125
156
  __metadata("design:type", AccessControl)
@@ -1 +1 @@
1
- {"version":3,"file":"TwoFactorAuthController.js","sourceRoot":"","sources":["../../../src/controllers/TwoFactorAuthController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TwoFactorAuthController.js","sourceRoot":"","sources":["../../../src/controllers/TwoFactorAuthController.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../../src/controllers/UserController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAgD,aAAa,EAAE,MAAM,eAAe,CAAC;AAClJ,OAAO,EAAE,cAAc,EAAiB,EAAE,EAA+B,MAAM,eAAe,CAAC;AAM/F,OAAO,EAAgD,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK9F;;;;;GAKG;AACH,qBAGa,cAAe,SAAQ,cAAc;IAEhD,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAG7C,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAGhC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAG3C,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC;IAE5B;;;;;;;;OAQG;IAGU,OAAO,CAAS,IAAI,EAAE,SAAS,EAAY,IAAI,EAAE,MAAM;IAiBpE;;;;;;;;OAQG;IAGU,SAAS,CAAS,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAUxE;;;;;;;;OAQG;IAGU,WAAW,CAAS,IAAI,EAAE,SAAS,EAAU,GAAG,EAAE,WAAW;CAkB3E"}
1
+ {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../../src/controllers/UserController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAgD,aAAa,EAAE,MAAM,eAAe,CAAC;AAClJ,OAAO,EAAE,cAAc,EAAiB,EAAE,EAA+B,MAAM,eAAe,CAAC;AAM/F,OAAO,EAAgD,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK9F;;;;;GAKG;AACH,qBAGa,cAAe,SAAQ,cAAc;IAEhD,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAG7C,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAGhC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAG3C,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC;IAE5B;;;;;;;;OAQG;IAGU,OAAO,CAAS,IAAI,EAAE,SAAS,EAAY,IAAI,EAAE,MAAM;IAqBpE;;;;;;;;OAQG;IAGU,SAAS,CAAS,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAUxE;;;;;;;;OAQG;IAGU,WAAW,CAAS,IAAI,EAAE,SAAS,EAAU,GAAG,EAAE,WAAW;CAkB3E"}
@@ -44,7 +44,11 @@ let UserController = class UserController extends BaseController {
44
44
  if (sId) {
45
45
  const session = await this.SessionProvider.restore(sId);
46
46
  if (session) {
47
- session.Data.set('User', user.dehydrate());
47
+ // Session stores the user UUID (see LoginController) — RbacUserFactory
48
+ // resolves the user from it on each request. Storing a dehydrated object
49
+ // here would break that lookup and log the user out on the next request.
50
+ session.Data.set('User', user.Uuid);
51
+ await this.SessionProvider.save(session);
48
52
  }
49
53
  }
50
54
  return new Ok(user.dehydrate());
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../src/controllers/UserController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../src/controllers/UserController.ts"],"names":[],"mappings":"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"}
@@ -98,7 +98,7 @@ export declare class UserMetadataController extends BaseController {
98
98
  * @response 401 Unauthorized — valid session required
99
99
  * @response 403 Forbidden — readOwn permission required
100
100
  */
101
- readMeta(pagination?: PaginationDTO, order?: OrderDTO, filter?: IFilterRequest): Promise<Ok<import("@spinajs/orm").ISelectQueryBuilder<FilterableUserMetadata[]> & import("@spinajs/orm").QueryScope>>;
101
+ readMeta(user: UserModel, pagination?: PaginationDTO, order?: OrderDTO, filter?: IFilterRequest): Promise<Ok<import("@spinajs/orm").ISelectQueryBuilder<FilterableUserMetadata[]> & import("@spinajs/orm").QueryScope>>;
102
102
  /**
103
103
  * Get own metadata entry by key
104
104
  * Retrieves a single metadata entry by key for the authenticated user.
@@ -109,7 +109,7 @@ export declare class UserMetadataController extends BaseController {
109
109
  * @response 403 Forbidden — readOwn permission required
110
110
  * @response 404 Metadata key not found
111
111
  */
112
- getMeta(key: string): Promise<Ok<UserMetadata>>;
112
+ getMeta(user: UserModel, key: string): Promise<Ok<UserMetadata>>;
113
113
  /**
114
114
  * Add or update own metadata
115
115
  * Inserts a new metadata entry for the authenticated user, or updates it if the key already exists.
@@ -118,7 +118,7 @@ export declare class UserMetadataController extends BaseController {
118
118
  * @response 401 Unauthorized — valid session required
119
119
  * @response 403 Forbidden — updateOwn permission required
120
120
  */
121
- addMetadata(metadata: UserMetadata): Promise<void>;
121
+ addMetadata(user: UserModel, metadata: UserMetadata): Promise<Ok<any>>;
122
122
  /**
123
123
  * Update own metadata entry
124
124
  * Updates Key, Value, and Type of an existing metadata entry identified by Id or Key.
@@ -130,7 +130,7 @@ export declare class UserMetadataController extends BaseController {
130
130
  * @response 403 Forbidden — updateOwn permission required
131
131
  * @response 404 Metadata entry not found
132
132
  */
133
- updateMetadata(meta: string, data: UserMetadataDto): Promise<Ok<any>>;
133
+ updateMetadata(user: UserModel, meta: string, data: UserMetadataDto): Promise<Ok<any>>;
134
134
  /**
135
135
  * Delete own metadata entry
136
136
  * Permanently removes a metadata entry by Id from the authenticated user's metadata.
@@ -141,6 +141,6 @@ export declare class UserMetadataController extends BaseController {
141
141
  * @response 403 Forbidden — deleteOwn permission required
142
142
  * @response 404 Metadata entry not found
143
143
  */
144
- deleteMetadata(meta: number): Promise<Ok<any>>;
144
+ deleteMetadata(user: UserModel, meta: number): Promise<Ok<any>>;
145
145
  }
146
146
  //# sourceMappingURL=UserMetadataController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserMetadataController.d.ts","sourceRoot":"","sources":["../../../src/controllers/UserMetadataController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,EAAE,EAAwC,cAAc,EAAS,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAW,aAAa,EAAE,QAAQ,EAAU,cAAc,EAAa,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E;;;;;;GAMG;AACH,qBAGa,sBAAuB,SAAQ,cAAc;IAEtD;;;;;;;;;;;;;OAaG;IAGU,YAAY,CACc,IAAI,EAAE,SAAS,EACzC,UAAU,CAAC,EAAE,aAAa,EAC1B,KAAK,CAAC,EAAE,QAAQ,EAEzB,MAAM,CAAC,EAAE,cAAc;IAY3B;;;;;;;;;;OAUG;IAGU,WAAW,CACe,IAAI,EAAE,SAAS,EACzC,GAAG,EAAE,MAAM;IAOxB;;;;;;;;;OASG;IAGU,eAAe,CACW,IAAI,EAAE,SAAS,EACvC,QAAQ,EAAE,YAAY;IAOrC;;;;;;;;;;;OAWG;IAGU,kBAAkB,CAOxB,IAAI,EAAE,YAAY,EACc,KAAK,EAAE,SAAS,EAC3C,IAAI,EAAE,eAAe;IAUjC;;;;;;;;;;OAUG;IAGU,kBAAkB,CACQ,IAAI,EAAE,SAAS,EACzC,IAAI,EAAE,MAAM;IASzB;;;;;;;;;;;OAWG;IAIH;;;;;;;;;;;OAWG;IAGU,QAAQ,CACR,UAAU,CAAC,EAAE,aAAa,EAC1B,KAAK,CAAC,EAAE,QAAQ,EAEzB,MAAM,CAAC,EAAE,cAAc;IAS3B;;;;;;;;;OASG;IAGU,OAAO,CAAU,GAAG,EAAE,MAAM;IAMzC;;;;;;;OAOG;IAGU,WAAW,CAAY,QAAQ,EAAE,YAAY;IAI1D;;;;;;;;;;OAUG;IAGU,cAAc,CAAU,IAAI,EAAE,MAAM,EAAU,IAAI,EAAE,eAAe;IAUhF;;;;;;;;;OASG;IAGU,cAAc,CAAU,IAAI,EAAE,MAAM;CAOpD"}
1
+ {"version":3,"file":"UserMetadataController.d.ts","sourceRoot":"","sources":["../../../src/controllers/UserMetadataController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,EAAE,EAAwC,cAAc,EAAS,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAW,aAAa,EAAE,QAAQ,EAAU,cAAc,EAAa,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAS7E;;;;;;GAMG;AACH,qBAGa,sBAAuB,SAAQ,cAAc;IAEtD;;;;;;;;;;;;;OAaG;IAGU,YAAY,CACc,IAAI,EAAE,SAAS,EACzC,UAAU,CAAC,EAAE,aAAa,EAC1B,KAAK,CAAC,EAAE,QAAQ,EAEzB,MAAM,CAAC,EAAE,cAAc;IAc3B;;;;;;;;;;OAUG;IAGU,WAAW,CACe,IAAI,EAAE,SAAS,EACzC,GAAG,EAAE,MAAM;IAOxB;;;;;;;;;OASG;IAGU,eAAe,CACW,IAAI,EAAE,SAAS,EACvC,QAAQ,EAAE,YAAY;IAOrC;;;;;;;;;;;OAWG;IAGU,kBAAkB,CAOxB,IAAI,EAAE,YAAY,EACc,KAAK,EAAE,SAAS,EAC3C,IAAI,EAAE,eAAe;IAUjC;;;;;;;;;;OAUG;IAGU,kBAAkB,CACQ,IAAI,EAAE,SAAS,EACzC,IAAI,EAAE,MAAM;IASzB;;;;;;;;;;;OAWG;IAIH;;;;;;;;;;;OAWG;IAGU,QAAQ,CACT,IAAI,EAAE,SAAS,EACd,UAAU,CAAC,EAAE,aAAa,EAC1B,KAAK,CAAC,EAAE,QAAQ,EAEzB,MAAM,CAAC,EAAE,cAAc;IAe3B;;;;;;;;;OASG;IAGU,OAAO,CAAS,IAAI,EAAE,SAAS,EAAW,GAAG,EAAE,MAAM;IAOlE;;;;;;;OAOG;IAGU,WAAW,CAAS,IAAI,EAAE,SAAS,EAAa,QAAQ,EAAE,YAAY;IAQnF;;;;;;;;;;OAUG;IAGU,cAAc,CAAS,IAAI,EAAE,SAAS,EAAW,IAAI,EAAE,MAAM,EAAU,IAAI,EAAE,eAAe;IAkBzG;;;;;;;;;OASG;IAGU,cAAc,CAAS,IAAI,EAAE,SAAS,EAAW,IAAI,EAAE,MAAM;CAK7E"}
@@ -12,11 +12,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  };
13
13
  import { Post, BasePath, Ok, Del, Body, Get, Query, Param, Policy, BaseController, Patch } from '@spinajs/http';
14
14
  import { User as UserModel, UserMetadata } from '@spinajs/rbac';
15
- import { AuthorizedPolicy, Permission, Resource } from '@spinajs/rbac-http';
15
+ import { AuthorizedPolicy, Permission, Resource, User } from '@spinajs/rbac-http';
16
16
  import { AsModel, PaginationDTO, OrderDTO, Filter, FromModel } from '@spinajs/orm-http';
17
17
  import { UserMetadataDto } from '../dto/metadata-dto.js';
18
18
  import { InsertBehaviour, SortOrder } from '@spinajs/orm';
19
19
  import { FilterableUserMetadata } from '../models/FilterableUserMetadata.js';
20
+ /**
21
+ * Fallback page size. A request without a `limit` used to reach `take(0)`,
22
+ * which the query builder rejects ( "take count should be a positive number" ),
23
+ * so plain listing requests failed instead of returning the first page.
24
+ */
25
+ const DEFAULT_PAGE_SIZE = 10;
20
26
  /**
21
27
  * User metadata management.
22
28
  * Provides CRUD operations for key-value metadata entries attached to user accounts.
@@ -40,11 +46,12 @@ let UserMetadataController = class UserMetadataController extends BaseController
40
46
  * @response 404 User not found
41
47
  */
42
48
  async readUserMeta(user, pagination, order, filter) {
49
+ const limit = pagination?.limit || DEFAULT_PAGE_SIZE;
43
50
  return new Ok(FilterableUserMetadata.select().where({
44
51
  user_id: user.Id
45
52
  }).filter(filter?.filters ?? [], filter?.op)
46
- .take(pagination?.limit ?? 0)
47
- .skip((pagination?.limit ?? 0) * (pagination?.page ?? 0))
53
+ .take(limit)
54
+ .skip(limit * (pagination?.page ?? 0))
48
55
  .order(order?.column ?? 'Id', order?.order ?? SortOrder.DESC));
49
56
  }
50
57
  /**
@@ -111,10 +118,10 @@ let UserMetadataController = class UserMetadataController extends BaseController
111
118
  * @response 404 User or metadata entry not found
112
119
  */
113
120
  async deleteUserMetadata(user, meta) {
114
- await UserMetadata.destroy().where({
115
- Id: meta,
116
- user_id: user.Id
117
- });
121
+ // NOTE: destroy() refuses to build an unbounded DELETE, so the entry id
122
+ // goes in as the primary key and ownership is AND-ed on top of it —
123
+ // deleting by id alone would let any user id delete anybody's entry.
124
+ await UserMetadata.destroy(meta).andWhere('user_id', user.Id);
118
125
  return new Ok();
119
126
  }
120
127
  /**
@@ -141,10 +148,15 @@ let UserMetadataController = class UserMetadataController extends BaseController
141
148
  * @response 401 Unauthorized — valid session required
142
149
  * @response 403 Forbidden — readOwn permission required
143
150
  */
144
- async readMeta(pagination, order, filter) {
145
- return new Ok(FilterableUserMetadata.select().filter(filter?.filters ?? [], filter?.op)
146
- .take(pagination?.limit ?? 0)
147
- .skip((pagination?.limit ?? 0) * (pagination?.page ?? 0))
151
+ async readMeta(user, pagination, order, filter) {
152
+ // Explicit owner scoping: the rbac query middleware does not enforce
153
+ // ownership for the metadata model (queries resolve to the unsafe base
154
+ // model without an @OrmResource), so every own-route filters by the
155
+ // authenticated user's id directly.
156
+ const limit = pagination?.limit || DEFAULT_PAGE_SIZE;
157
+ return new Ok(FilterableUserMetadata.select().where('user_id', user.Id).filter(filter?.filters ?? [], filter?.op)
158
+ .take(limit)
159
+ .skip(limit * (pagination?.page ?? 0))
148
160
  .order(order?.column ?? 'Id', order?.order ?? SortOrder.DESC));
149
161
  }
150
162
  /**
@@ -157,9 +169,10 @@ let UserMetadataController = class UserMetadataController extends BaseController
157
169
  * @response 403 Forbidden — readOwn permission required
158
170
  * @response 404 Metadata key not found
159
171
  */
160
- async getMeta(key) {
172
+ async getMeta(user, key) {
161
173
  return new Ok(UserMetadata.where({
162
174
  Key: key,
175
+ user_id: user.Id,
163
176
  }).firstOrFail());
164
177
  }
165
178
  /**
@@ -170,8 +183,12 @@ let UserMetadataController = class UserMetadataController extends BaseController
170
183
  * @response 401 Unauthorized — valid session required
171
184
  * @response 403 Forbidden — updateOwn permission required
172
185
  */
173
- async addMetadata(metadata) {
186
+ async addMetadata(user, metadata) {
187
+ // force ownership to the authenticated user — never trust a user_id
188
+ // supplied in the request body
189
+ metadata.user_id = user.Id;
174
190
  await metadata.insert(InsertBehaviour.InsertOrUpdate);
191
+ return new Ok();
175
192
  }
176
193
  /**
177
194
  * Update own metadata entry
@@ -184,12 +201,20 @@ let UserMetadataController = class UserMetadataController extends BaseController
184
201
  * @response 403 Forbidden — updateOwn permission required
185
202
  * @response 404 Metadata entry not found
186
203
  */
187
- async updateMetadata(meta, data) {
204
+ async updateMetadata(user, meta, data) {
205
+ // The Key/Id lookup is grouped and AND-ed with an explicit ownership
206
+ // filter. Without the grouping the flat "Key = ? OR Id = ? AND user_id = ?"
207
+ // binds as "Key = ? OR (Id = ? AND user_id = ?)", letting any user update
208
+ // another user's metadata by its Key. Scoping by user_id explicitly (not
209
+ // relying on the query middleware, which does not fire for this model)
210
+ // keeps the update owner-bound.
188
211
  await UserMetadata.update({
189
212
  Key: data.Key,
190
213
  Value: data.Value,
191
214
  Type: data.Type
192
- }).where("Key", meta).orWhere("Id", meta);
215
+ }).where(function () {
216
+ this.where("Key", meta).orWhere("Id", meta);
217
+ }).andWhere('user_id', user.Id);
193
218
  return new Ok();
194
219
  }
195
220
  /**
@@ -202,10 +227,8 @@ let UserMetadataController = class UserMetadataController extends BaseController
202
227
  * @response 403 Forbidden — deleteOwn permission required
203
228
  * @response 404 Metadata entry not found
204
229
  */
205
- async deleteMetadata(meta) {
206
- await UserMetadata.destroy().where({
207
- Id: meta
208
- });
230
+ async deleteMetadata(user, meta) {
231
+ await UserMetadata.destroy(meta).andWhere('user_id', user.Id);
209
232
  return new Ok();
210
233
  }
211
234
  };
@@ -271,45 +294,51 @@ __decorate([
271
294
  __decorate([
272
295
  Get("metadata"),
273
296
  Permission(['readOwn']),
274
- __param(0, Query()),
297
+ __param(0, User()),
275
298
  __param(1, Query()),
276
- __param(2, Filter(FilterableUserMetadata)),
299
+ __param(2, Query()),
300
+ __param(3, Filter(FilterableUserMetadata)),
277
301
  __metadata("design:type", Function),
278
- __metadata("design:paramtypes", [PaginationDTO,
302
+ __metadata("design:paramtypes", [UserModel,
303
+ PaginationDTO,
279
304
  OrderDTO, Object]),
280
305
  __metadata("design:returntype", Promise)
281
306
  ], UserMetadataController.prototype, "readMeta", null);
282
307
  __decorate([
283
308
  Get("metadata/:key"),
284
309
  Permission(['readOwn']),
285
- __param(0, Param()),
310
+ __param(0, User()),
311
+ __param(1, Param()),
286
312
  __metadata("design:type", Function),
287
- __metadata("design:paramtypes", [String]),
313
+ __metadata("design:paramtypes", [UserModel, String]),
288
314
  __metadata("design:returntype", Promise)
289
315
  ], UserMetadataController.prototype, "getMeta", null);
290
316
  __decorate([
291
317
  Post("metadata"),
292
318
  Permission(['updateOwn']),
293
- __param(0, AsModel()),
319
+ __param(0, User()),
320
+ __param(1, AsModel()),
294
321
  __metadata("design:type", Function),
295
- __metadata("design:paramtypes", [UserMetadata]),
322
+ __metadata("design:paramtypes", [UserModel, UserMetadata]),
296
323
  __metadata("design:returntype", Promise)
297
324
  ], UserMetadataController.prototype, "addMetadata", null);
298
325
  __decorate([
299
326
  Patch('metadata/:meta'),
300
327
  Permission(['updateOwn']),
301
- __param(0, Param()),
302
- __param(1, Body()),
328
+ __param(0, User()),
329
+ __param(1, Param()),
330
+ __param(2, Body()),
303
331
  __metadata("design:type", Function),
304
- __metadata("design:paramtypes", [String, UserMetadataDto]),
332
+ __metadata("design:paramtypes", [UserModel, String, UserMetadataDto]),
305
333
  __metadata("design:returntype", Promise)
306
334
  ], UserMetadataController.prototype, "updateMetadata", null);
307
335
  __decorate([
308
336
  Del('metadata/:meta'),
309
337
  Permission(['deleteOwn']),
310
- __param(0, Param()),
338
+ __param(0, User()),
339
+ __param(1, Param()),
311
340
  __metadata("design:type", Function),
312
- __metadata("design:paramtypes", [Number]),
341
+ __metadata("design:paramtypes", [UserModel, Number]),
313
342
  __metadata("design:returntype", Promise)
314
343
  ], UserMetadataController.prototype, "deleteMetadata", null);
315
344
  UserMetadataController = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"UserMetadataController.js","sourceRoot":"","sources":["../../../src/controllers/UserMetadataController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserMetadataController.js","sourceRoot":"","sources":["../../../src/controllers/UserMetadataController.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { UserMetadata } from '@spinajs/rbac';
2
2
  export declare class FilterableUserMetadata extends UserMetadata {
3
3
  get Key(): string;
4
+ set Key(value: string);
4
5
  Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
5
6
  }
6
7
  //# sourceMappingURL=FilterableUserMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterableUserMetadata.d.ts","sourceRoot":"","sources":["../../../src/models/FilterableUserMetadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,YAAY,EAAE,MAAM,eAAe,CAAC;AAG1D,qBAGa,sBAAuB,SAAQ,YAAY;IAEpD,IACW,GAAG,IAAI,MAAM,CAEvB;IAGM,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CAEhF"}
1
+ {"version":3,"file":"FilterableUserMetadata.d.ts","sourceRoot":"","sources":["../../../src/models/FilterableUserMetadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,YAAY,EAAE,MAAM,eAAe,CAAC;AAG1D,qBAGa,sBAAuB,SAAQ,YAAY;IAEpD,IACW,GAAG,IAAI,MAAM,CAEvB;IAMD,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAGM,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CAEhF"}
@@ -14,11 +14,18 @@ let FilterableUserMetadata = class FilterableUserMetadata extends UserMetadata {
14
14
  get Key() {
15
15
  return super.Key;
16
16
  }
17
+ // NOTE: overriding only the getter drops the setter MetadataModel defines
18
+ // for the same property — the accessor pair on this prototype shadows the
19
+ // inherited one. Hydration assigns `Key`, so every row read through this
20
+ // model died with "Cannot set property Key ... which has only a getter".
21
+ set Key(value) {
22
+ super.Key = value;
23
+ }
17
24
  };
18
25
  __decorate([
19
26
  Filterable(['eq', 'like', 'b-like', 'e-like']),
20
27
  __metadata("design:type", String),
21
- __metadata("design:paramtypes", [])
28
+ __metadata("design:paramtypes", [String])
22
29
  ], FilterableUserMetadata.prototype, "Key", null);
23
30
  __decorate([
24
31
  Filterable(['eq']),
@@ -1 +1 @@
1
- {"version":3,"file":"FilterableUserMetadata.js","sourceRoot":"","sources":["../../../src/models/FilterableUserMetadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKxC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,YAAY;IAEpD,IACW,GAAG;QACV,OAAO,KAAK,CAAC,GAAG,CAAC;IACrB,CAAC;CAKJ,CAAA;AARG;IAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,QAAQ,CAAC,CAAC;;;iDAG7C;AAGM;IADN,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;;oDAC0D;AARpE,sBAAsB;IAHlC,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,gBAAgB,CAAC;IACvB,WAAW,CAAC,eAAe,CAAC;GAChB,sBAAsB,CAUlC"}
1
+ {"version":3,"file":"FilterableUserMetadata.js","sourceRoot":"","sources":["../../../src/models/FilterableUserMetadata.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKxC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,YAAY;IAEpD,IACW,GAAG;QACV,OAAO,KAAK,CAAC,GAAG,CAAC;IACrB,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,IAAW,GAAG,CAAC,KAAa;QACxB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;IACtB,CAAC;CAKJ,CAAA;AAhBG;IAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,QAAQ,CAAC,CAAC;;;iDAG7C;AAWM;IADN,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;;oDAC0D;AAhBpE,sBAAsB;IAHlC,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,gBAAgB,CAAC;IACvB,WAAW,CAAC,eAAe,CAAC;GAChB,sBAAsB,CAkBlC"}