@spinajs/rbac-http-user 2.0.349 → 2.0.351

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 (59) hide show
  1. package/lib/cjs/controllers/LoginController.d.ts +2 -1
  2. package/lib/cjs/controllers/LoginController.d.ts.map +1 -1
  3. package/lib/cjs/controllers/LoginController.js +11 -1
  4. package/lib/cjs/controllers/LoginController.js.map +1 -1
  5. package/lib/cjs/controllers/UserController.d.ts +3 -1
  6. package/lib/cjs/controllers/UserController.d.ts.map +1 -1
  7. package/lib/cjs/controllers/UserController.js +23 -3
  8. package/lib/cjs/controllers/UserController.js.map +1 -1
  9. package/lib/cjs/controllers/UserMetadataController.d.ts +12 -0
  10. package/lib/cjs/controllers/UserMetadataController.d.ts.map +1 -0
  11. package/lib/cjs/controllers/UserMetadataController.js +118 -0
  12. package/lib/cjs/controllers/UserMetadataController.js.map +1 -0
  13. package/lib/cjs/dto/metadata-dto.d.ts +27 -0
  14. package/lib/cjs/dto/metadata-dto.d.ts.map +1 -0
  15. package/lib/cjs/dto/metadata-dto.js +35 -0
  16. package/lib/cjs/dto/metadata-dto.js.map +1 -0
  17. package/lib/cjs/index.d.ts +2 -0
  18. package/lib/cjs/index.d.ts.map +1 -1
  19. package/lib/cjs/index.js +2 -1
  20. package/lib/cjs/index.js.map +1 -1
  21. package/lib/cjs/models/FilterableUserMetadata.d.ts +6 -0
  22. package/lib/cjs/models/FilterableUserMetadata.d.ts.map +1 -0
  23. package/lib/cjs/models/FilterableUserMetadata.js +32 -0
  24. package/lib/cjs/models/FilterableUserMetadata.js.map +1 -0
  25. package/lib/mjs/controllers/LoginController.d.ts +2 -1
  26. package/lib/mjs/controllers/LoginController.d.ts.map +1 -1
  27. package/lib/mjs/controllers/LoginController.js +12 -2
  28. package/lib/mjs/controllers/LoginController.js.map +1 -1
  29. package/lib/mjs/controllers/UserController.d.ts +3 -1
  30. package/lib/mjs/controllers/UserController.d.ts.map +1 -1
  31. package/lib/mjs/controllers/UserController.js +26 -6
  32. package/lib/mjs/controllers/UserController.js.map +1 -1
  33. package/lib/mjs/controllers/UserMetadataController.d.ts +12 -0
  34. package/lib/mjs/controllers/UserMetadataController.d.ts.map +1 -0
  35. package/lib/mjs/controllers/UserMetadataController.js +115 -0
  36. package/lib/mjs/controllers/UserMetadataController.js.map +1 -0
  37. package/lib/mjs/dto/metadata-dto.d.ts +27 -0
  38. package/lib/mjs/dto/metadata-dto.d.ts.map +1 -0
  39. package/lib/mjs/dto/metadata-dto.js +32 -0
  40. package/lib/mjs/dto/metadata-dto.js.map +1 -0
  41. package/lib/mjs/index.d.ts +2 -0
  42. package/lib/mjs/index.d.ts.map +1 -1
  43. package/lib/mjs/index.js +2 -1
  44. package/lib/mjs/index.js.map +1 -1
  45. package/lib/mjs/models/FilterableUserMetadata.d.ts +6 -0
  46. package/lib/mjs/models/FilterableUserMetadata.d.ts.map +1 -0
  47. package/lib/mjs/models/FilterableUserMetadata.js +29 -0
  48. package/lib/mjs/models/FilterableUserMetadata.js.map +1 -0
  49. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  50. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  51. package/package.json +11 -11
  52. package/lib/cjs/controllers/UserMetadata.d.ts +0 -1
  53. package/lib/cjs/controllers/UserMetadata.d.ts.map +0 -1
  54. package/lib/cjs/controllers/UserMetadata.js +0 -35
  55. package/lib/cjs/controllers/UserMetadata.js.map +0 -1
  56. package/lib/mjs/controllers/UserMetadata.d.ts +0 -2
  57. package/lib/mjs/controllers/UserMetadata.d.ts.map +0 -1
  58. package/lib/mjs/controllers/UserMetadata.js +0 -36
  59. package/lib/mjs/controllers/UserMetadata.js.map +0 -1
@@ -11,13 +11,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
13
  import { PasswordDto } from '../dto/password-dto.js';
14
- import { User as UserModel, PasswordProvider, SessionProvider, passwordMatch, changePassword } from '@spinajs/rbac';
15
- import { BaseController, BasePath, Get, Ok, Body, Patch, Cookie } from '@spinajs/http';
14
+ import { User as UserModel, PasswordProvider, SessionProvider, passwordMatch, changePassword, _unwindGrants, AccessControl } from '@spinajs/rbac';
15
+ import { BaseController, BasePath, Get, Ok, Body, Patch, Cookie, Policy } from '@spinajs/http';
16
16
  import { InvalidArgument } from '@spinajs/exceptions';
17
17
  import { Autoinject } from '@spinajs/di';
18
18
  import { Config } from '@spinajs/configuration';
19
19
  import * as cs from 'cookie-signature';
20
- import { Permission, Resource, User } from '@spinajs/rbac-http';
20
+ import { LoggedPolicy, Permission, Resource, User } from '@spinajs/rbac-http';
21
21
  import { _chain, _either } from '@spinajs/util';
22
22
  let UserController = class UserController extends BaseController {
23
23
  async refresh(user, ssid) {
@@ -34,6 +34,12 @@ let UserController = class UserController extends BaseController {
34
34
  }
35
35
  return new Ok(user.dehydrate());
36
36
  }
37
+ async getGrants(user) {
38
+ const grants = this.AC.getGrants();
39
+ const userGrants = user.Role.map(r => _unwindGrants(r, grants));
40
+ const combinedGrants = Object.assign({}, ...userGrants);
41
+ return new Ok(combinedGrants);
42
+ }
37
43
  async newPassword(user, pwd) {
38
44
  if (pwd.Password !== pwd.ConfirmPassword) {
39
45
  throw new InvalidArgument('password does not match');
@@ -55,9 +61,13 @@ __decorate([
55
61
  Autoinject(),
56
62
  __metadata("design:type", SessionProvider)
57
63
  ], UserController.prototype, "SessionProvider", void 0);
64
+ __decorate([
65
+ Autoinject(AccessControl),
66
+ __metadata("design:type", AccessControl)
67
+ ], UserController.prototype, "AC", void 0);
58
68
  __decorate([
59
69
  Get(),
60
- Permission('readOwn'),
70
+ Permission(['readOwn']),
61
71
  __param(0, User()),
62
72
  __param(1, Cookie()),
63
73
  __metadata("design:type", Function),
@@ -65,7 +75,16 @@ __decorate([
65
75
  __metadata("design:returntype", Promise)
66
76
  ], UserController.prototype, "refresh", null);
67
77
  __decorate([
68
- Patch('/password'),
78
+ Get("grants"),
79
+ Permission(['readOwn']),
80
+ __param(0, User()),
81
+ __metadata("design:type", Function),
82
+ __metadata("design:paramtypes", [UserModel]),
83
+ __metadata("design:returntype", Promise)
84
+ ], UserController.prototype, "getGrants", null);
85
+ __decorate([
86
+ Patch('password'),
87
+ Permission(["updateOwn"]),
69
88
  __param(0, User()),
70
89
  __param(1, Body()),
71
90
  __metadata("design:type", Function),
@@ -74,7 +93,8 @@ __decorate([
74
93
  ], UserController.prototype, "newPassword", null);
75
94
  UserController = __decorate([
76
95
  BasePath('user'),
77
- Resource('user')
96
+ Resource('user'),
97
+ Policy(LoggedPolicy)
78
98
  ], UserController);
79
99
  export { UserController };
80
100
  //# sourceMappingURL=UserController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.js","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,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIzC,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,cAAc;IAYnC,AAAN,KAAK,CAAC,OAAO,CAAS,IAAe,EAAY,IAAY;QAClE,wBAAwB;QACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAE/B,+BAA+B;QAC/B,MAAM,GAAG,GAAmB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,GAAG,EAAE;YACP,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAC5C;SACF;QAED,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAClC,CAAC;IAGY,AAAN,KAAK,CAAC,WAAW,CAAS,IAAe,EAAU,GAAgB;QACxE,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,eAAe,EAAE;YACxC,MAAM,IAAI,eAAe,CAAC,yBAAyB,CAAC,CAAC;SACtD;QAGD,OAAO,IAAI,EAAE,CACX,MAAM,CACJ,IAAI,EACJ,OAAO,CACH,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAC9B,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAC5B,GAAG,EAAE;YACD,MAAM,IAAI,eAAe,CAAC,2BAA2B,CAAC,CAAC;QAC3D,CAAC,CAAC,CACP,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AA9CW;IADT,UAAU,EAAE;8BACe,gBAAgB;wDAAC;AAGnC;IADT,MAAM,CAAC,oBAAoB,CAAC;;qDACG;AAGtB;IADT,UAAU,EAAE;8BACc,eAAe;uDAAC;AAI9B;IAFZ,GAAG,EAAE;IACL,UAAU,CAAC,SAAS,CAAC;IACA,WAAA,IAAI,EAAE,CAAA;IAAmB,WAAA,MAAM,EAAE,CAAA;;qCAApB,SAAS;;6CAe3C;AAGY;IADZ,KAAK,CAAC,WAAW,CAAC;IACO,WAAA,IAAI,EAAE,CAAA;IAAmB,WAAA,IAAI,EAAE,CAAA;;qCAAlB,SAAS,EAAe,WAAW;;iDAiBzE;AA/CU,cAAc;IAF1B,QAAQ,CAAC,MAAM,CAAC;IAChB,QAAQ,CAAC,MAAM,CAAC;GACJ,cAAc,CAgD1B"}
1
+ {"version":3,"file":"UserController.js","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,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAClJ,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKzC,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,cAAc;IAenC,AAAN,KAAK,CAAC,OAAO,CAAS,IAAe,EAAY,IAAY;QAClE,wBAAwB;QACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAE/B,+BAA+B;QAC/B,MAAM,GAAG,GAAmB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,GAAG,EAAE;YACP,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAC5C;SACF;QAED,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAClC,CAAC;IAIY,AAAN,KAAK,CAAC,SAAS,CAAS,IAAe;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC;QAExD,OAAO,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IAIY,AAAN,KAAK,CAAC,WAAW,CAAS,IAAe,EAAU,GAAgB;QACxE,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,eAAe,EAAE;YACxC,MAAM,IAAI,eAAe,CAAC,yBAAyB,CAAC,CAAC;SACtD;QAGD,OAAO,IAAI,EAAE,CACX,MAAM,CACJ,IAAI,EACJ,OAAO,CACL,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAC9B,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAC5B,GAAG,EAAE;YACH,MAAM,IAAI,eAAe,CAAC,2BAA2B,CAAC,CAAC;QACzD,CAAC,CAAC,CACL,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AA7DW;IADT,UAAU,EAAE;8BACe,gBAAgB;wDAAC;AAGnC;IADT,MAAM,CAAC,oBAAoB,CAAC;;qDACG;AAGtB;IADT,UAAU,EAAE;8BACc,eAAe;uDAAC;AAGjC;IADT,UAAU,CAAC,aAAa,CAAC;8BACZ,aAAa;0CAAC;AAIf;IAFZ,GAAG,EAAE;IACL,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;IACF,WAAA,IAAI,EAAE,CAAA;IAAmB,WAAA,MAAM,EAAE,CAAA;;qCAApB,SAAS;;6CAe3C;AAIY;IAFZ,GAAG,CAAC,QAAQ,CAAC;IACb,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC;IACA,WAAA,IAAI,EAAE,CAAA;;qCAAO,SAAS;;+CAO7C;AAIY;IAFZ,KAAK,CAAC,UAAU,CAAC;IACjB,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC;IACA,WAAA,IAAI,EAAE,CAAA;IAAmB,WAAA,IAAI,EAAE,CAAA;;qCAAlB,SAAS,EAAe,WAAW;;iDAiBzE;AA9DU,cAAc;IAH1B,QAAQ,CAAC,MAAM,CAAC;IAChB,QAAQ,CAAC,MAAM,CAAC;IAChB,MAAM,CAAC,YAAY,CAAC;GACR,cAAc,CA+D1B"}
@@ -0,0 +1,12 @@
1
+ import { Ok, BaseController } from '@spinajs/http';
2
+ import { User as UserModel, UserMetadata } from '@spinajs/rbac';
3
+ import { PaginationDTO, OrderDTO, IFilter } from '@spinajs/orm-http';
4
+ import { UserMetadataDto } from '../dto/metadata-dto.js';
5
+ export declare class UserMetadataController extends BaseController {
6
+ readMeta(user: UserModel, pagination?: PaginationDTO, order?: OrderDTO, filter?: IFilter[]): Promise<Ok>;
7
+ getMeta(user: UserModel, key: string): Promise<Ok>;
8
+ addMetadata(user: UserModel, metadata: UserMetadata): Promise<Ok>;
9
+ updateMetadata(user: UserModel, metadata: UserMetadata, data: UserMetadataDto): Promise<Ok>;
10
+ deleteMetadata(user: UserModel, meta: number): Promise<Ok>;
11
+ }
12
+ //# sourceMappingURL=UserMetadataController.d.ts.map
@@ -0,0 +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,EAAsB,aAAa,EAAE,QAAQ,EAAU,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjG,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,qBAGa,sBAAuB,SAAQ,cAAc;IAIzC,QAAQ,CACT,IAAI,EAAE,SAAS,EACd,UAAU,CAAC,EAAE,aAAa,EAC1B,KAAK,CAAC,EAAE,QAAQ,EAEzB,MAAM,CAAC,EAAE,OAAO,EAAE;IAYT,OAAO,CAAS,IAAI,EAAE,SAAS,EAAW,GAAG,EAAE,MAAM;IASrD,WAAW,CAAS,IAAI,EAAE,SAAS,EAAa,QAAQ,EAAE,YAAY;IAUtE,cAAc,CAAS,IAAI,EAAE,SAAS,EAAe,QAAQ,EAAE,YAAY,EAAU,IAAI,EAAE,eAAe;IAgB1G,cAAc,CAAS,IAAI,EAAE,SAAS,EAAW,IAAI,EAAE,MAAM;CAS7E"}
@@ -0,0 +1,115 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { Post, BasePath, Ok, Del, Body, Get, Query, Param, Policy, BaseController, Patch } from '@spinajs/http';
14
+ import { User as UserModel, UserMetadata } from '@spinajs/rbac';
15
+ import { LoggedPolicy, Permission, Resource, User } from '@spinajs/rbac-http';
16
+ import { FromModel, AsModel, PaginationDTO, OrderDTO, Filter } from '@spinajs/orm-http';
17
+ import { Forbidden } from '@spinajs/exceptions';
18
+ import { UserMetadataDto } from '../dto/metadata-dto.js';
19
+ import { SortOrder } from '@spinajs/orm';
20
+ import { FilterableUserMetadata } from '../models/FilterableUserMetadata.js';
21
+ let UserMetadataController = class UserMetadataController extends BaseController {
22
+ async readMeta(user, pagination, order, filter) {
23
+ return new Ok(FilterableUserMetadata.select().where({
24
+ user_id: user.Id
25
+ }).filter(filter)
26
+ .take(pagination?.limit ?? undefined)
27
+ .skip(pagination?.limit * pagination?.page || 0)
28
+ .order(order?.column ?? 'Id', order?.order ?? SortOrder.DESC));
29
+ }
30
+ async getMeta(user, key) {
31
+ return new Ok(UserMetadata.where({
32
+ Key: key,
33
+ user_id: user.Id
34
+ }).firstOrFail());
35
+ }
36
+ async addMetadata(user, metadata) {
37
+ metadata.User.attach(user);
38
+ await metadata.insert();
39
+ return new Ok(metadata);
40
+ }
41
+ async updateMetadata(user, metadata, data) {
42
+ if (metadata.user_id !== user.Id) {
43
+ throw new Forbidden(`cannot update metadata for given user`);
44
+ }
45
+ metadata.Key = data.Key;
46
+ metadata.Value = data.Value;
47
+ metadata.Type = data.Type;
48
+ await metadata.update();
49
+ return new Ok();
50
+ }
51
+ async deleteMetadata(user, meta) {
52
+ const m = await UserMetadata.where({
53
+ Id: meta,
54
+ user_id: user.Id
55
+ }).firstOrFail();
56
+ await m.destroy();
57
+ return new Ok();
58
+ }
59
+ };
60
+ __decorate([
61
+ Get("/"),
62
+ Permission(['readOwn', 'readAny']),
63
+ __param(0, User()),
64
+ __param(1, Query()),
65
+ __param(2, Query()),
66
+ __param(3, Filter(FilterableUserMetadata)),
67
+ __metadata("design:type", Function),
68
+ __metadata("design:paramtypes", [UserModel,
69
+ PaginationDTO,
70
+ OrderDTO, Array]),
71
+ __metadata("design:returntype", Promise)
72
+ ], UserMetadataController.prototype, "readMeta", null);
73
+ __decorate([
74
+ Get(":key"),
75
+ __param(0, User()),
76
+ __param(1, Param()),
77
+ __metadata("design:type", Function),
78
+ __metadata("design:paramtypes", [UserModel, String]),
79
+ __metadata("design:returntype", Promise)
80
+ ], UserMetadataController.prototype, "getMeta", null);
81
+ __decorate([
82
+ Post("/"),
83
+ Permission(['updateOwn', 'updateAny']),
84
+ __param(0, User()),
85
+ __param(1, AsModel()),
86
+ __metadata("design:type", Function),
87
+ __metadata("design:paramtypes", [UserModel, UserMetadata]),
88
+ __metadata("design:returntype", Promise)
89
+ ], UserMetadataController.prototype, "addMetadata", null);
90
+ __decorate([
91
+ Patch(':metadata'),
92
+ Permission(['updateOwn', 'updateAny']),
93
+ __param(0, User()),
94
+ __param(1, FromModel()),
95
+ __param(2, Body()),
96
+ __metadata("design:type", Function),
97
+ __metadata("design:paramtypes", [UserModel, UserMetadata, UserMetadataDto]),
98
+ __metadata("design:returntype", Promise)
99
+ ], UserMetadataController.prototype, "updateMetadata", null);
100
+ __decorate([
101
+ Del(':meta'),
102
+ Permission(['deleteOwn', 'deleteAny']),
103
+ __param(0, User()),
104
+ __param(1, Param()),
105
+ __metadata("design:type", Function),
106
+ __metadata("design:paramtypes", [UserModel, Number]),
107
+ __metadata("design:returntype", Promise)
108
+ ], UserMetadataController.prototype, "deleteMetadata", null);
109
+ UserMetadataController = __decorate([
110
+ BasePath('user/metadata'),
111
+ Resource('user.metadata'),
112
+ Policy(LoggedPolicy)
113
+ ], UserMetadataController);
114
+ export { UserMetadataController };
115
+ //# sourceMappingURL=UserMetadataController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserMetadataController.js","sourceRoot":"","sources":["../../../src/controllers/UserMetadataController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export declare const MetadataDtoSchema: {
2
+ $schema: string;
3
+ title: string;
4
+ type: string;
5
+ properties: {
6
+ Key: {
7
+ type: string;
8
+ maxLength: number;
9
+ minLength: number;
10
+ };
11
+ Value: {
12
+ type: string;
13
+ };
14
+ Type: {
15
+ type: string;
16
+ enum: string[];
17
+ };
18
+ };
19
+ required: string[];
20
+ };
21
+ export declare class UserMetadataDto {
22
+ Key: string;
23
+ Value: string;
24
+ Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
25
+ constructor(data: any);
26
+ }
27
+ //# sourceMappingURL=metadata-dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-dto.d.ts","sourceRoot":"","sources":["../../../src/dto/metadata-dto.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;CAU7B,CAAC;AAEF,qBACa,eAAe;IACjB,GAAG,EAAG,MAAM,CAAC;IACb,KAAK,EAAG,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;gBACjE,IAAI,EAAE,GAAG;CAGxB"}
@@ -0,0 +1,32 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Schema } from '@spinajs/validation';
11
+ export const MetadataDtoSchema = {
12
+ $schema: 'http://json-schema.org/draft-07/schema#',
13
+ title: 'User metadata DTO',
14
+ type: 'object',
15
+ properties: {
16
+ Key: { type: 'string', maxLength: 255, minLength: 6 },
17
+ Value: { type: 'string' },
18
+ Type: { type: "string", enum: ['number', 'float', 'string', 'json', 'boolean', 'datetime'] }
19
+ },
20
+ required: ['Key', 'Type'],
21
+ };
22
+ let UserMetadataDto = class UserMetadataDto {
23
+ constructor(data) {
24
+ Object.assign(this, data);
25
+ }
26
+ };
27
+ UserMetadataDto = __decorate([
28
+ Schema(MetadataDtoSchema),
29
+ __metadata("design:paramtypes", [Object])
30
+ ], UserMetadataDto);
31
+ export { UserMetadataDto };
32
+ //# sourceMappingURL=metadata-dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-dto.js","sourceRoot":"","sources":["../../../src/dto/metadata-dto.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE;QACrD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE;KAC/F;IACD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;CAC5B,CAAC;AAGK,IAAM,eAAe,GAArB,MAAM,eAAe;IAIxB,YAAY,IAAS;QACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAA;AAPY,eAAe;IAD3B,MAAM,CAAC,iBAAiB,CAAC;;GACb,eAAe,CAO3B"}
@@ -1,2 +1,4 @@
1
1
  export * from './controllers/LoginController.js';
2
+ export * from './controllers/UserController.js';
3
+ export * from './controllers/UserMetadataController.js';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC"}
package/lib/mjs/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './controllers/LoginController.js';
2
- // export * from './controllers/UserController.js';
2
+ export * from './controllers/UserController.js';
3
+ export * from './controllers/UserMetadataController.js';
3
4
  // export * from './2fa/SpeakEasy2FaToken.js';
4
5
  // export * from "./fingerprint/FingerprintJs.js";
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,mDAAmD;AACnD,8CAA8C;AAC9C,kDAAkD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,8CAA8C;AAC9C,kDAAkD"}
@@ -0,0 +1,6 @@
1
+ import { UserMetadata } from '@spinajs/rbac';
2
+ export declare class FilterableUserMetadata extends UserMetadata {
3
+ Key: string;
4
+ Type: 'number' | 'float' | 'string' | 'json' | 'boolean' | 'datetime';
5
+ }
6
+ //# sourceMappingURL=FilterableUserMetadata.d.ts.map
@@ -0,0 +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;IAG7C,GAAG,EAAE,MAAM,CAAC;IAGZ,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CAEhF"}
@@ -0,0 +1,29 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Connection, Model } from '@spinajs/orm';
11
+ import { OrmResource, UserMetadata } from '@spinajs/rbac';
12
+ import { Filterable } from '@spinajs/orm-http';
13
+ let FilterableUserMetadata = class FilterableUserMetadata extends UserMetadata {
14
+ };
15
+ __decorate([
16
+ Filterable(['eq', 'like', 'b-like', 'e-like']),
17
+ __metadata("design:type", String)
18
+ ], FilterableUserMetadata.prototype, "Key", void 0);
19
+ __decorate([
20
+ Filterable(['eq']),
21
+ __metadata("design:type", String)
22
+ ], FilterableUserMetadata.prototype, "Type", void 0);
23
+ FilterableUserMetadata = __decorate([
24
+ Connection('default'),
25
+ Model('users_metadata'),
26
+ OrmResource('user.metadata')
27
+ ], FilterableUserMetadata);
28
+ export { FilterableUserMetadata };
29
+ //# sourceMappingURL=FilterableUserMetadata.js.map
@@ -0,0 +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;CAQvD,CAAA;AALU;IADN,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,QAAQ,CAAC,CAAC;;mDAC3B;AAGZ;IADN,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;;oDAC0D;AANpE,sBAAsB;IAHlC,UAAU,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,gBAAgB,CAAC;IACvB,WAAW,CAAC,eAAe,CAAC;GAChB,sBAAsB,CAQlC"}