@venizia/ignis 0.4.6 → 0.4.7-1

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 (203) hide show
  1. package/LICENSE.md +1 -4
  2. package/README.md +2 -2
  3. package/dist/esm/base/applications/base.d.ts.map +1 -1
  4. package/dist/esm/base/applications/base.js +19 -15
  5. package/dist/esm/base/applications/base.js.map +1 -1
  6. package/dist/esm/base/applications/server.d.ts +14 -9
  7. package/dist/esm/base/applications/server.d.ts.map +1 -1
  8. package/dist/esm/base/applications/server.js +36 -29
  9. package/dist/esm/base/applications/server.js.map +1 -1
  10. package/dist/esm/base/controllers/grpc/adapter.d.ts.map +1 -1
  11. package/dist/esm/base/controllers/grpc/adapter.js +5 -1
  12. package/dist/esm/base/controllers/grpc/adapter.js.map +1 -1
  13. package/dist/esm/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
  14. package/dist/esm/base/middlewares/request-spy/request-spy.middleware.js +9 -3
  15. package/dist/esm/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
  16. package/dist/esm/common/constants.d.ts.map +1 -1
  17. package/dist/esm/common/constants.js +2 -2
  18. package/dist/esm/common/constants.js.map +1 -1
  19. package/dist/esm/components/api-reference/ui/scalar.d.ts.map +1 -1
  20. package/dist/esm/components/api-reference/ui/scalar.js +2 -1
  21. package/dist/esm/components/api-reference/ui/scalar.js.map +1 -1
  22. package/dist/esm/components/api-reference/ui/swagger.d.ts.map +1 -1
  23. package/dist/esm/components/api-reference/ui/swagger.js +2 -1
  24. package/dist/esm/components/api-reference/ui/swagger.js.map +1 -1
  25. package/dist/esm/components/auth/authenticate/component.js +2 -2
  26. package/dist/esm/components/auth/authenticate/component.js.map +1 -1
  27. package/dist/esm/components/auth/authenticate/controllers/factory.d.ts +139 -136
  28. package/dist/esm/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
  29. package/dist/esm/components/auth/authenticate/controllers/factory.js +175 -172
  30. package/dist/esm/components/auth/authenticate/controllers/factory.js.map +1 -1
  31. package/dist/esm/components/auth/authenticate/controllers/jwks/definitions.js +2 -2
  32. package/dist/esm/components/auth/authenticate/controllers/jwks/definitions.js.map +1 -1
  33. package/dist/esm/components/auth/authenticate/controllers/service-certs/definitions.js +2 -2
  34. package/dist/esm/components/auth/authenticate/controllers/service-certs/definitions.js.map +1 -1
  35. package/dist/esm/components/auth/authenticate/services/bearer/abstract.service.d.ts.map +1 -1
  36. package/dist/esm/components/auth/authenticate/services/bearer/abstract.service.js +4 -2
  37. package/dist/esm/components/auth/authenticate/services/bearer/abstract.service.js.map +1 -1
  38. package/dist/esm/components/auth/authenticate/services/service/signer.service.d.ts.map +1 -1
  39. package/dist/esm/components/auth/authenticate/services/service/signer.service.js +6 -4
  40. package/dist/esm/components/auth/authenticate/services/service/signer.service.js.map +1 -1
  41. package/dist/esm/components/auth/authorize/adapters/base-filtered.js +2 -2
  42. package/dist/esm/components/auth/authorize/adapters/base-filtered.js.map +1 -1
  43. package/dist/esm/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -1
  44. package/dist/esm/components/auth/authorize/adapters/custom-grant-expander.js +2 -2
  45. package/dist/esm/components/auth/authorize/adapters/custom-grant-expander.js.map +1 -1
  46. package/dist/esm/components/auth/authorize/adapters/scoped-casbin/adapter.d.ts.map +1 -1
  47. package/dist/esm/components/auth/authorize/adapters/scoped-casbin/adapter.js +6 -3
  48. package/dist/esm/components/auth/authorize/adapters/scoped-casbin/adapter.js.map +1 -1
  49. package/dist/esm/components/auth/authorize/enforcers/casbin-module.d.ts.map +1 -1
  50. package/dist/esm/components/auth/authorize/enforcers/casbin-module.js +2 -1
  51. package/dist/esm/components/auth/authorize/enforcers/casbin-module.js.map +1 -1
  52. package/dist/esm/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
  53. package/dist/esm/components/auth/authorize/enforcers/casbin.enforcer.js +9 -3
  54. package/dist/esm/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
  55. package/dist/esm/components/auth/models/entities/columns.d.ts +99 -0
  56. package/dist/esm/components/auth/models/entities/columns.d.ts.map +1 -0
  57. package/dist/esm/components/auth/models/entities/columns.js +133 -0
  58. package/dist/esm/components/auth/models/entities/columns.js.map +1 -0
  59. package/dist/esm/components/auth/models/entities/index.d.ts +1 -2
  60. package/dist/esm/components/auth/models/entities/index.d.ts.map +1 -1
  61. package/dist/esm/components/auth/models/entities/index.js +1 -2
  62. package/dist/esm/components/auth/models/entities/index.js.map +1 -1
  63. package/dist/esm/components/auth/models/entities/permission.model.d.ts +1 -12
  64. package/dist/esm/components/auth/models/entities/permission.model.d.ts.map +1 -1
  65. package/dist/esm/components/auth/models/entities/permission.model.js +1 -36
  66. package/dist/esm/components/auth/models/entities/permission.model.js.map +1 -1
  67. package/dist/esm/components/auth/models/entities/policy-definition.model.d.ts +1 -49
  68. package/dist/esm/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
  69. package/dist/esm/components/auth/models/entities/policy-definition.model.js +1 -69
  70. package/dist/esm/components/auth/models/entities/policy-definition.model.js.map +1 -1
  71. package/dist/esm/components/controller/grpc/grpc.component.js +2 -2
  72. package/dist/esm/components/controller/grpc/grpc.component.js.map +1 -1
  73. package/dist/esm/components/health-check/component.d.ts.map +1 -1
  74. package/dist/esm/components/health-check/component.js +5 -3
  75. package/dist/esm/components/health-check/component.js.map +1 -1
  76. package/dist/esm/components/health-check/controller.js +5 -5
  77. package/dist/esm/components/health-check/controller.js.map +1 -1
  78. package/dist/esm/components/index.d.ts +0 -1
  79. package/dist/esm/components/index.d.ts.map +1 -1
  80. package/dist/esm/components/index.js +0 -1
  81. package/dist/esm/components/index.js.map +1 -1
  82. package/dist/esm/components/mail/helpers/executors/bull-mq-executor.helper.d.ts.map +1 -1
  83. package/dist/esm/components/mail/helpers/executors/bull-mq-executor.helper.js +2 -1
  84. package/dist/esm/components/mail/helpers/executors/bull-mq-executor.helper.js.map +1 -1
  85. package/dist/esm/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts.map +1 -1
  86. package/dist/esm/components/mail/helpers/transporters/amazon-ses-transporter.helper.js +13 -9
  87. package/dist/esm/components/mail/helpers/transporters/amazon-ses-transporter.helper.js.map +1 -1
  88. package/dist/esm/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts.map +1 -1
  89. package/dist/esm/components/mail/helpers/transporters/mailgun-transporter.helper.js +5 -3
  90. package/dist/esm/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
  91. package/dist/esm/components/mail/helpers/transporters/nodemail-transporter.helper.d.ts.map +1 -1
  92. package/dist/esm/components/mail/helpers/transporters/nodemail-transporter.helper.js +9 -7
  93. package/dist/esm/components/mail/helpers/transporters/nodemail-transporter.helper.js.map +1 -1
  94. package/dist/esm/components/mail/services/generators/verification-data.d.ts.map +1 -1
  95. package/dist/esm/components/mail/services/generators/verification-data.js +7 -3
  96. package/dist/esm/components/mail/services/generators/verification-data.js.map +1 -1
  97. package/dist/esm/components/mail/services/mail.service.d.ts.map +1 -1
  98. package/dist/esm/components/mail/services/mail.service.js +12 -9
  99. package/dist/esm/components/mail/services/mail.service.js.map +1 -1
  100. package/dist/esm/components/mail/utilities/address.utility.d.ts +12 -8
  101. package/dist/esm/components/mail/utilities/address.utility.d.ts.map +1 -1
  102. package/dist/esm/components/mail/utilities/address.utility.js +30 -27
  103. package/dist/esm/components/mail/utilities/address.utility.js.map +1 -1
  104. package/dist/esm/components/mail/utilities/attachment.utility.d.ts +31 -29
  105. package/dist/esm/components/mail/utilities/attachment.utility.d.ts.map +1 -1
  106. package/dist/esm/components/mail/utilities/attachment.utility.js +94 -86
  107. package/dist/esm/components/mail/utilities/attachment.utility.js.map +1 -1
  108. package/dist/esm/components/mail/utilities/body.utility.d.ts +6 -4
  109. package/dist/esm/components/mail/utilities/body.utility.d.ts.map +1 -1
  110. package/dist/esm/components/mail/utilities/body.utility.js +14 -12
  111. package/dist/esm/components/mail/utilities/body.utility.js.map +1 -1
  112. package/dist/esm/components/mail/utilities/mime.utility.d.ts +23 -17
  113. package/dist/esm/components/mail/utilities/mime.utility.d.ts.map +1 -1
  114. package/dist/esm/components/mail/utilities/mime.utility.js +109 -98
  115. package/dist/esm/components/mail/utilities/mime.utility.js.map +1 -1
  116. package/dist/esm/components/mail/utilities/verification.utility.d.ts +8 -2
  117. package/dist/esm/components/mail/utilities/verification.utility.d.ts.map +1 -1
  118. package/dist/esm/components/mail/utilities/verification.utility.js +7 -5
  119. package/dist/esm/components/mail/utilities/verification.utility.js.map +1 -1
  120. package/dist/esm/components/socket-io/component.js +3 -3
  121. package/dist/esm/components/socket-io/component.js.map +1 -1
  122. package/dist/esm/components/socket-io/handlers/bun.handler.d.ts +13 -11
  123. package/dist/esm/components/socket-io/handlers/bun.handler.d.ts.map +1 -1
  124. package/dist/esm/components/socket-io/handlers/bun.handler.js +32 -30
  125. package/dist/esm/components/socket-io/handlers/bun.handler.js.map +1 -1
  126. package/dist/esm/components/static-asset/common/commit-token.d.ts +21 -16
  127. package/dist/esm/components/static-asset/common/commit-token.d.ts.map +1 -1
  128. package/dist/esm/components/static-asset/common/commit-token.js +35 -28
  129. package/dist/esm/components/static-asset/common/commit-token.js.map +1 -1
  130. package/dist/esm/components/static-asset/common/constants.d.ts +0 -2
  131. package/dist/esm/components/static-asset/common/constants.d.ts.map +1 -1
  132. package/dist/esm/components/static-asset/common/constants.js +1 -3
  133. package/dist/esm/components/static-asset/common/constants.js.map +1 -1
  134. package/dist/esm/components/static-asset/common/types.d.ts +0 -4
  135. package/dist/esm/components/static-asset/common/types.d.ts.map +1 -1
  136. package/dist/esm/components/static-asset/common/types.js.map +1 -1
  137. package/dist/esm/components/static-asset/component.js +2 -2
  138. package/dist/esm/components/static-asset/component.js.map +1 -1
  139. package/dist/esm/components/static-asset/controller/base.definition.d.ts +6 -6
  140. package/dist/esm/components/static-asset/controller/base.definition.d.ts.map +1 -1
  141. package/dist/esm/components/static-asset/controller/base.definition.js +224 -224
  142. package/dist/esm/components/static-asset/controller/base.definition.js.map +1 -1
  143. package/dist/esm/components/static-asset/controller/factory.d.ts +23 -23
  144. package/dist/esm/components/static-asset/controller/factory.d.ts.map +1 -1
  145. package/dist/esm/components/static-asset/controller/factory.js +104 -74
  146. package/dist/esm/components/static-asset/controller/factory.js.map +1 -1
  147. package/dist/esm/components/static-asset/controller/key-scope.d.ts +28 -26
  148. package/dist/esm/components/static-asset/controller/key-scope.d.ts.map +1 -1
  149. package/dist/esm/components/static-asset/controller/key-scope.js +34 -30
  150. package/dist/esm/components/static-asset/controller/key-scope.js.map +1 -1
  151. package/dist/esm/components/static-asset/controller/meta-link.d.ts +37 -33
  152. package/dist/esm/components/static-asset/controller/meta-link.d.ts.map +1 -1
  153. package/dist/esm/components/static-asset/controller/meta-link.js +86 -84
  154. package/dist/esm/components/static-asset/controller/meta-link.js.map +1 -1
  155. package/dist/esm/components/static-asset/controller/route-options.d.ts +18 -16
  156. package/dist/esm/components/static-asset/controller/route-options.d.ts.map +1 -1
  157. package/dist/esm/components/static-asset/controller/route-options.js +28 -26
  158. package/dist/esm/components/static-asset/controller/route-options.js.map +1 -1
  159. package/dist/esm/components/static-asset/models/base.model.js +3 -3
  160. package/dist/esm/components/static-asset/models/base.model.js.map +1 -1
  161. package/dist/esm/components/websocket/component.js +2 -2
  162. package/dist/esm/components/websocket/component.js.map +1 -1
  163. package/dist/esm/components/websocket/handlers/bun.handler.d.ts +6 -4
  164. package/dist/esm/components/websocket/handlers/bun.handler.d.ts.map +1 -1
  165. package/dist/esm/components/websocket/handlers/bun.handler.js +21 -19
  166. package/dist/esm/components/websocket/handlers/bun.handler.js.map +1 -1
  167. package/dist/esm/testing/assert-application-boots.d.ts +6 -1
  168. package/dist/esm/testing/assert-application-boots.d.ts.map +1 -1
  169. package/dist/esm/testing/assert-application-boots.js +139 -129
  170. package/dist/esm/testing/assert-application-boots.js.map +1 -1
  171. package/dist/esm/utilities/drizzle-result.utility.d.ts +6 -8
  172. package/dist/esm/utilities/drizzle-result.utility.d.ts.map +1 -1
  173. package/dist/esm/utilities/drizzle-result.utility.js +23 -49
  174. package/dist/esm/utilities/drizzle-result.utility.js.map +1 -1
  175. package/dist/esm/utilities/network.utility.d.ts.map +1 -1
  176. package/dist/esm/utilities/network.utility.js +1 -1
  177. package/dist/esm/utilities/network.utility.js.map +1 -1
  178. package/dist/presets/app/files/src/boot.test.ts +2 -2
  179. package/dist/presets/app/files/src/controllers/hello.controller.ts +2 -2
  180. package/dist/presets/app/preset.json +4 -4
  181. package/dist/presets/lib/preset.json +4 -4
  182. package/dist/presets/shared/files/.configs/formatters/.ignore +4 -0
  183. package/dist/presets/shared/files/.configs/lints/.ignore +4 -0
  184. package/dist/presets/shared/files/.configs/lints/eslint.config.mjs +4 -0
  185. package/dist/presets/shared/files/.configs/lints/oxlint.config.mts +4 -0
  186. package/dist/presets/shared/files/README.md +15 -0
  187. package/dist/presets/shared/files/src/index.test.ts +8 -0
  188. package/dist/presets/shared/files/src/index.ts +8 -0
  189. package/dist/presets/shared/files/tsconfig.json +20 -0
  190. package/dist/presets/shared/preset.json +35 -0
  191. package/package.json +11 -11
  192. package/dist/esm/components/auth/models/entities/role.model.d.ts +0 -10
  193. package/dist/esm/components/auth/models/entities/role.model.d.ts.map +0 -1
  194. package/dist/esm/components/auth/models/entities/role.model.js +0 -15
  195. package/dist/esm/components/auth/models/entities/role.model.js.map +0 -1
  196. package/dist/esm/components/auth/models/entities/user.model.d.ts +0 -28
  197. package/dist/esm/components/auth/models/entities/user.model.d.ts.map +0 -1
  198. package/dist/esm/components/auth/models/entities/user.model.js +0 -17
  199. package/dist/esm/components/auth/models/entities/user.model.js.map +0 -1
  200. package/dist/esm/components/controller/index.d.ts +0 -2
  201. package/dist/esm/components/controller/index.d.ts.map +0 -1
  202. package/dist/esm/components/controller/index.js +0 -7
  203. package/dist/esm/components/controller/index.js.map +0 -1
@@ -7,11 +7,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ var AuthController_1;
10
11
  import { BaseRestController } from '@venizia/ignis-kernel';
11
12
  import { inject } from '@venizia/ignis-kernel';
12
13
  import { controller } from '@venizia/ignis-kernel';
13
- import { jsonContent, jsonResponse } from '@venizia/ignis-kernel';
14
- import { throwNotSupported } from '../../../../utilities/index.js';
14
+ import { OpenApiResponses } from '@venizia/ignis-kernel';
15
+ import { NotSupportedUtility } from '@venizia/ignis-kernel';
15
16
  import { AnyObjectSchema } from '@venizia/ignis-kernel';
16
17
  import { z } from '@hono/zod-openapi';
17
18
  import { getError } from '@venizia/ignis-helpers/core';
@@ -29,198 +30,200 @@ export const JWTTokenPayloadSchema = z.object({
29
30
  provider: z.string().optional(),
30
31
  email: z.email().optional(),
31
32
  });
32
- export const defineAuthController = (opts) => {
33
- var AuthController_1;
34
- const { restPath = '/auth', serviceKey, requireAuthenticatedSignUp = false, payload = {} } = opts;
35
- let AuthController = AuthController_1 = class AuthController extends BaseRestController {
36
- constructor(authService) {
37
- super({
38
- scope: AuthController_1.name,
39
- path: restPath,
40
- isStrict: true,
41
- });
42
- if (!authService) {
43
- throw getError({
44
- message: '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',
33
+ /** Builds the decorated REST controller of the authentication routes (sign-in, sign-up, change-password, who-am-i). */
34
+ export class AuthControllerFactory {
35
+ static define(opts) {
36
+ const { restPath = '/auth', serviceKey, requireAuthenticatedSignUp = false, payload = {}, } = opts;
37
+ let AuthController = AuthController_1 = class AuthController extends BaseRestController {
38
+ constructor(authService) {
39
+ super({
40
+ scope: AuthController_1.name,
41
+ path: restPath,
42
+ isStrict: true,
45
43
  });
44
+ if (!authService) {
45
+ throw getError({
46
+ message: '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',
47
+ });
48
+ }
49
+ this.service = authService;
46
50
  }
47
- this.service = authService;
48
- }
49
- binding() {
50
- this.defineRoute({
51
- configs: {
52
- description: 'Sign In',
53
- path: '/sign-in',
54
- method: HTTP.Methods.POST,
55
- request: {
56
- body: jsonContent({
57
- description: 'Sign-in request body',
58
- required: true,
59
- schema: payload?.signIn?.request?.schema ?? SignInRequestSchema,
51
+ binding() {
52
+ this.defineRoute({
53
+ configs: {
54
+ description: 'Sign In',
55
+ path: '/sign-in',
56
+ method: HTTP.Methods.POST,
57
+ request: {
58
+ body: OpenApiResponses.jsonContent({
59
+ description: 'Sign-in request body',
60
+ required: true,
61
+ schema: payload?.signIn?.request?.schema ?? SignInRequestSchema,
62
+ }),
63
+ },
64
+ responses: OpenApiResponses.jsonResponse({
65
+ schema: payload?.signIn?.response?.schema ?? AnyObjectSchema,
66
+ description: 'Success Response',
60
67
  }),
61
68
  },
62
- responses: jsonResponse({
63
- schema: payload?.signIn?.response?.schema ?? AnyObjectSchema,
64
- description: 'Success Response',
65
- }),
66
- },
67
- handler: async (context) => {
68
- const body = await context.req.json();
69
- const rs = await this.service.signIn(context, body);
70
- return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
71
- },
72
- });
73
- this.defineRoute({
74
- configs: {
75
- description: 'Sign Up',
76
- path: '/sign-up',
77
- method: HTTP.Methods.POST,
78
- authenticate: {
79
- strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],
69
+ handler: async (context) => {
70
+ const body = await context.req.json();
71
+ const rs = await this.service.signIn(context, body);
72
+ return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
80
73
  },
81
- request: {
82
- body: jsonContent({
83
- description: 'Sign-up request body',
84
- required: true,
85
- schema: payload?.signUp?.request?.schema ?? SignUpRequestSchema,
74
+ });
75
+ this.defineRoute({
76
+ configs: {
77
+ description: 'Sign Up',
78
+ path: '/sign-up',
79
+ method: HTTP.Methods.POST,
80
+ authenticate: {
81
+ strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],
82
+ },
83
+ request: {
84
+ body: OpenApiResponses.jsonContent({
85
+ description: 'Sign-up request body',
86
+ required: true,
87
+ schema: payload?.signUp?.request?.schema ?? SignUpRequestSchema,
88
+ }),
89
+ },
90
+ responses: OpenApiResponses.jsonResponse({
91
+ schema: payload?.signUp?.response?.schema ?? AnyObjectSchema,
92
+ description: 'Success Response',
86
93
  }),
87
94
  },
88
- responses: jsonResponse({
89
- schema: payload?.signUp?.response?.schema ?? AnyObjectSchema,
90
- description: 'Success Response',
91
- }),
92
- },
93
- handler: async (context) => {
94
- const body = await context.req.json();
95
- const rs = await this.service.signUp(context, body);
96
- return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
97
- },
98
- });
99
- this.defineRoute({
100
- configs: {
101
- description: 'Change password',
102
- path: '/change-password',
103
- method: HTTP.Methods.POST,
104
- request: {
105
- body: jsonContent({
106
- description: 'Change password request body',
107
- required: true,
108
- schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,
109
- }),
95
+ handler: async (context) => {
96
+ const body = await context.req.json();
97
+ const rs = await this.service.signUp(context, body);
98
+ return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
110
99
  },
111
- responses: jsonResponse({
112
- schema: payload?.changePassword?.response?.schema ?? AnyObjectSchema,
113
- description: 'Success Response',
114
- }),
115
- authenticate: { strategies: [Authentication.STRATEGY_JWT] },
116
- },
117
- handler: async (context) => {
118
- const body = await context.req.json();
119
- const rs = await this.service.changePassword(context, body);
120
- return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
121
- },
122
- });
123
- // Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.
124
- this.defineRoute({
125
- configs: {
126
- description: 'Refresh access token',
127
- path: '/token/refresh',
128
- method: HTTP.Methods.POST,
129
- responses: jsonResponse({
130
- schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,
131
- description: 'Success Response',
132
- }),
133
- authenticate: { strategies: [Authentication.STRATEGY_JWT] },
134
- },
135
- handler: async (context) => {
136
- if (!this.service.refreshToken) {
137
- return throwNotSupported({
138
- scope: AuthController_1.name,
139
- feature: 'refreshToken',
140
- logger: this.logger,
141
- });
142
- }
143
- const rs = await this.service.refreshToken(context);
144
- return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
145
- },
146
- });
147
- this.defineRoute({
148
- configs: {
149
- path: '/who-am-i',
150
- method: HTTP.Methods.GET,
151
- request: {
152
- query: z.object({
153
- withUserInformation: z
154
- .enum(['true', 'false', '1', '0'])
155
- .transform((value) => value === 'true' || value === '1')
156
- .optional()
157
- .openapi({
158
- description: 'Whether to attach user information to currentUser',
100
+ });
101
+ this.defineRoute({
102
+ configs: {
103
+ description: 'Change password',
104
+ path: '/change-password',
105
+ method: HTTP.Methods.POST,
106
+ request: {
107
+ body: OpenApiResponses.jsonContent({
108
+ description: 'Change password request body',
109
+ required: true,
110
+ schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,
159
111
  }),
112
+ },
113
+ responses: OpenApiResponses.jsonResponse({
114
+ schema: payload?.changePassword?.response?.schema ?? AnyObjectSchema,
115
+ description: 'Success Response',
160
116
  }),
117
+ authenticate: { strategies: [Authentication.STRATEGY_JWT] },
161
118
  },
162
- responses: {
163
- [HTTP.ResultCodes.RS_2.Ok]: jsonContent({
119
+ handler: async (context) => {
120
+ const body = await context.req.json();
121
+ const rs = await this.service.changePassword(context, body);
122
+ return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
123
+ },
124
+ });
125
+ // Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.
126
+ this.defineRoute({
127
+ configs: {
128
+ description: 'Refresh access token',
129
+ path: '/token/refresh',
130
+ method: HTTP.Methods.POST,
131
+ responses: OpenApiResponses.jsonResponse({
132
+ schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,
164
133
  description: 'Success Response',
165
- schema: JWTTokenPayloadSchema.extend({
166
- userInformation: (payload?.getUserInformation?.response?.schema ?? AnyObjectSchema)
134
+ }),
135
+ authenticate: { strategies: [Authentication.STRATEGY_JWT] },
136
+ },
137
+ handler: async (context) => {
138
+ if (!this.service.refreshToken) {
139
+ return NotSupportedUtility.throwNotSupported({
140
+ scope: AuthController_1.name,
141
+ feature: 'refreshToken',
142
+ logger: this.logger,
143
+ });
144
+ }
145
+ const rs = await this.service.refreshToken(context);
146
+ return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
147
+ },
148
+ });
149
+ this.defineRoute({
150
+ configs: {
151
+ path: '/who-am-i',
152
+ method: HTTP.Methods.GET,
153
+ request: {
154
+ query: z.object({
155
+ withUserInformation: z
156
+ .enum(['true', 'false', '1', '0'])
157
+ .transform((value) => value === 'true' || value === '1')
167
158
  .optional()
168
159
  .openapi({
169
- description: 'Attached when withUserInformation is truthy',
160
+ description: 'Whether to attach user information to currentUser',
170
161
  }),
171
162
  }),
163
+ },
164
+ responses: {
165
+ [HTTP.ResultCodes.RS_2.Ok]: OpenApiResponses.jsonContent({
166
+ description: 'Success Response',
167
+ schema: JWTTokenPayloadSchema.extend({
168
+ userInformation: (payload?.getUserInformation?.response?.schema ?? AnyObjectSchema)
169
+ .optional()
170
+ .openapi({
171
+ description: 'Attached when withUserInformation is truthy',
172
+ }),
173
+ }),
174
+ }),
175
+ },
176
+ authenticate: { strategies: [Authentication.STRATEGY_JWT] },
177
+ },
178
+ handler: async (context) => {
179
+ const { withUserInformation = false } = context.req.valid('query');
180
+ const currentUser = context.get(Authentication.CURRENT_USER);
181
+ let rs = currentUser;
182
+ if (withUserInformation) {
183
+ if (!this.service.getUserInformation) {
184
+ return NotSupportedUtility.throwNotSupported({
185
+ scope: AuthController_1.name,
186
+ feature: 'getUserInformation',
187
+ logger: this.logger,
188
+ });
189
+ }
190
+ const userInformation = await this.service.getUserInformation(context, {});
191
+ rs = Object.assign({}, currentUser, { userInformation });
192
+ }
193
+ return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
194
+ },
195
+ });
196
+ this.defineRoute({
197
+ configs: {
198
+ description: 'Get current user information',
199
+ path: '/me',
200
+ method: HTTP.Methods.GET,
201
+ responses: OpenApiResponses.jsonResponse({
202
+ schema: payload?.getUserInformation?.response?.schema ?? AnyObjectSchema,
203
+ description: 'Success Response',
172
204
  }),
205
+ authenticate: { strategies: [Authentication.STRATEGY_JWT] },
173
206
  },
174
- authenticate: { strategies: [Authentication.STRATEGY_JWT] },
175
- },
176
- handler: async (context) => {
177
- const { withUserInformation = false } = context.req.valid('query');
178
- const currentUser = context.get(Authentication.CURRENT_USER);
179
- let rs = currentUser;
180
- if (withUserInformation) {
207
+ handler: async (context) => {
181
208
  if (!this.service.getUserInformation) {
182
- return throwNotSupported({
209
+ return NotSupportedUtility.throwNotSupported({
183
210
  scope: AuthController_1.name,
184
211
  feature: 'getUserInformation',
185
212
  logger: this.logger,
186
213
  });
187
214
  }
188
- const userInformation = await this.service.getUserInformation(context, {});
189
- rs = Object.assign({}, currentUser, { userInformation });
190
- }
191
- return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
192
- },
193
- });
194
- this.defineRoute({
195
- configs: {
196
- description: 'Get current user information',
197
- path: '/me',
198
- method: HTTP.Methods.GET,
199
- responses: jsonResponse({
200
- schema: payload?.getUserInformation?.response?.schema ?? AnyObjectSchema,
201
- description: 'Success Response',
202
- }),
203
- authenticate: { strategies: [Authentication.STRATEGY_JWT] },
204
- },
205
- handler: async (context) => {
206
- if (!this.service.getUserInformation) {
207
- return throwNotSupported({
208
- scope: AuthController_1.name,
209
- feature: 'getUserInformation',
210
- logger: this.logger,
211
- });
212
- }
213
- const rs = await this.service.getUserInformation(context, {});
214
- return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
215
- },
216
- });
217
- }
218
- };
219
- AuthController = AuthController_1 = __decorate([
220
- controller({ path: restPath }),
221
- __metadata("design:paramtypes", [Object])
222
- ], AuthController);
223
- inject({ key: serviceKey })(AuthController, undefined, 0);
224
- return AuthController;
225
- };
215
+ const rs = await this.service.getUserInformation(context, {});
216
+ return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
217
+ },
218
+ });
219
+ }
220
+ };
221
+ AuthController = AuthController_1 = __decorate([
222
+ controller({ path: restPath }),
223
+ __metadata("design:paramtypes", [Object])
224
+ ], AuthController);
225
+ inject({ key: serviceKey })(AuthController, undefined, 0);
226
+ return AuthController;
227
+ }
228
+ }
226
229
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/factory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAuB,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KAC3B,CAAC,CACH;IACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAA+B,EAAE,EAAE;;IACtE,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,UAAU,EAAE,0BAA0B,GAAG,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAElG,IACM,cAAc,sBADpB,MACM,cAAe,SAAQ,kBAAkB;QAG7C,YAAY,WAAyB;YACnC,KAAK,CAAC;gBACJ,KAAK,EAAE,gBAAc,CAAC,IAAI;gBAC1B,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,QAAQ,CAAC;oBACb,OAAO,EACL,8FAA8F;iBACjG,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;QAC7B,CAAC;QAEQ,OAAO;YACd,IAAI,CAAC,WAAW,CAAC;gBACf,OAAO,EAAE;oBACP,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBACzB,OAAO,EAAE;wBACP,IAAI,EAAE,WAAW,CAAC;4BAChB,WAAW,EAAE,sBAAsB;4BACnC,QAAQ,EAAE,IAAI;4BACd,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,mBAAmB;yBAChE,CAAC;qBACH;oBACD,SAAS,EAAE,YAAY,CAAC;wBACtB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,eAAe;wBAC5D,WAAW,EAAE,kBAAkB;qBAChC,CAAC;iBACH;gBACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACzB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACpD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC;gBACf,OAAO,EAAE;oBACP,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBACzB,YAAY,EAAE;wBACZ,UAAU,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC;qBAC7E;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,WAAW,CAAC;4BAChB,WAAW,EAAE,sBAAsB;4BACnC,QAAQ,EAAE,IAAI;4BACd,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,mBAAmB;yBAChE,CAAC;qBACH;oBACD,SAAS,EAAE,YAAY,CAAC;wBACtB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,eAAe;wBAC5D,WAAW,EAAE,kBAAkB;qBAChC,CAAC;iBACH;gBACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACzB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACpD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC;gBACf,OAAO,EAAE;oBACP,WAAW,EAAE,iBAAiB;oBAC9B,IAAI,EAAE,kBAAkB;oBACxB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBACzB,OAAO,EAAE;wBACP,IAAI,EAAE,WAAW,CAAC;4BAChB,WAAW,EAAE,8BAA8B;4BAC3C,QAAQ,EAAE,IAAI;4BACd,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,IAAI,2BAA2B;yBAChF,CAAC;qBACH;oBACD,SAAS,EAAE,YAAY,CAAC;wBACtB,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,IAAI,eAAe;wBACpE,WAAW,EAAE,kBAAkB;qBAChC,CAAC;oBACF,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;iBAC5D;gBACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACzB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBACtC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;aACF,CAAC,CAAC;YAEH,0KAA0K;YAC1K,IAAI,CAAC,WAAW,CAAC;gBACf,OAAO,EAAE;oBACP,WAAW,EAAE,sBAAsB;oBACnC,IAAI,EAAE,gBAAgB;oBACtB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBACzB,SAAS,EAAE,YAAY,CAAC;wBACtB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,eAAe;wBAClE,WAAW,EAAE,kBAAkB;qBAChC,CAAC;oBACF,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;iBAC5D;gBACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;wBAC/B,OAAO,iBAAiB,CAAC;4BACvB,KAAK,EAAE,gBAAc,CAAC,IAAI;4BAC1B,OAAO,EAAE,cAAc;4BACvB,MAAM,EAAE,IAAI,CAAC,MAAM;yBACpB,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACpD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC;gBACf,OAAO,EAAE;oBACP,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;oBACxB,OAAO,EAAE;wBACP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;4BACd,mBAAmB,EAAE,CAAC;iCACnB,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;iCACjC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC;iCACvD,QAAQ,EAAE;iCACV,OAAO,CAAC;gCACP,WAAW,EAAE,mDAAmD;6BACjE,CAAC;yBACL,CAAC;qBACH;oBACD,SAAS,EAAE;wBACT,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC;4BACtC,WAAW,EAAE,kBAAkB;4BAC/B,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC;gCACnC,eAAe,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,IAAI,eAAe,CAAC;qCAChF,QAAQ,EAAE;qCACV,OAAO,CAAC;oCACP,WAAW,EAAE,6CAA6C;iCAC3D,CAAC;6BACL,CAAC;yBACH,CAAC;qBACH;oBACD,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;iBAC5D;gBACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACzB,MAAM,EAAE,mBAAmB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAEtD,OAAO,CAAC,CAAC;oBAEZ,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;oBAC7D,IAAI,EAAE,GAAG,WAAW,CAAC;oBAErB,IAAI,mBAAmB,EAAE,CAAC;wBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;4BACrC,OAAO,iBAAiB,CAAC;gCACvB,KAAK,EAAE,gBAAc,CAAC,IAAI;gCAC1B,OAAO,EAAE,oBAAoB;gCAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;6BACpB,CAAC,CAAC;wBACL,CAAC;wBAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;wBAC3E,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;oBAC3D,CAAC;oBAED,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,CAAC;gBACf,OAAO,EAAE;oBACP,WAAW,EAAE,8BAA8B;oBAC3C,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;oBACxB,SAAS,EAAE,YAAY,CAAC;wBACtB,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,IAAI,eAAe;wBACxE,WAAW,EAAE,kBAAkB;qBAChC,CAAC;oBACF,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;iBAC5D;gBACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBACrC,OAAO,iBAAiB,CAAC;4BACvB,KAAK,EAAE,gBAAc,CAAC,IAAI;4BAC1B,OAAO,EAAE,oBAAoB;4BAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;yBACpB,CAAC,CAAC;oBACL,CAAC;oBAED,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC9D,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAA;IA1MK,cAAc;QADnB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;OACzB,cAAc,CA0MnB;IAED,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAE1D,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC","sourcesContent":["import { BaseRestController } from '@venizia/ignis-kernel';\nimport { inject } from '@venizia/ignis-kernel';\nimport { controller } from '@venizia/ignis-kernel';\nimport { jsonContent, jsonResponse } from '@venizia/ignis-kernel';\nimport { throwNotSupported } from '@/utilities';\nimport { AnyObjectSchema } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\nimport { getError } from '@venizia/ignis-helpers/core';\nimport { HTTP, type ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport {\n ChangePasswordRequestSchema,\n SignInRequestSchema,\n SignUpRequestSchema,\n} from '@venizia/ignis-kernel';\nimport {\n Authentication,\n type IAuthService,\n type TDefineAuthControllerOpts,\n} from '@venizia/ignis-kernel';\n\nexport const JWTTokenPayloadSchema = z.object({\n userId: z.string().or(z.number()),\n roles: z.array(\n z.object({\n id: z.string().or(z.number()),\n identifier: z.string(),\n priority: z.number().int(),\n }),\n ),\n clientId: z.string().optional(),\n provider: z.string().optional(),\n email: z.email().optional(),\n});\n\nexport const defineAuthController = (opts: TDefineAuthControllerOpts) => {\n const { restPath = '/auth', serviceKey, requireAuthenticatedSignUp = false, payload = {} } = opts;\n\n @controller({ path: restPath })\n class AuthController extends BaseRestController {\n service: IAuthService;\n\n constructor(authService: IAuthService) {\n super({\n scope: AuthController.name,\n path: restPath,\n isStrict: true,\n });\n\n if (!authService) {\n throw getError({\n message:\n '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',\n });\n }\n\n this.service = authService;\n }\n\n override binding(): ValueOrPromise<void> {\n this.defineRoute({\n configs: {\n description: 'Sign In',\n path: '/sign-in',\n method: HTTP.Methods.POST,\n request: {\n body: jsonContent({\n description: 'Sign-in request body',\n required: true,\n schema: payload?.signIn?.request?.schema ?? SignInRequestSchema,\n }),\n },\n responses: jsonResponse({\n schema: payload?.signIn?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signIn(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Sign Up',\n path: '/sign-up',\n method: HTTP.Methods.POST,\n authenticate: {\n strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],\n },\n request: {\n body: jsonContent({\n description: 'Sign-up request body',\n required: true,\n schema: payload?.signUp?.request?.schema ?? SignUpRequestSchema,\n }),\n },\n responses: jsonResponse({\n schema: payload?.signUp?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signUp(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Change password',\n path: '/change-password',\n method: HTTP.Methods.POST,\n request: {\n body: jsonContent({\n description: 'Change password request body',\n required: true,\n schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,\n }),\n },\n responses: jsonResponse({\n schema: payload?.changePassword?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.changePassword(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n // Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.\n this.defineRoute({\n configs: {\n description: 'Refresh access token',\n path: '/token/refresh',\n method: HTTP.Methods.POST,\n responses: jsonResponse({\n schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.refreshToken) {\n return throwNotSupported({\n scope: AuthController.name,\n feature: 'refreshToken',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.refreshToken(context);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n path: '/who-am-i',\n method: HTTP.Methods.GET,\n request: {\n query: z.object({\n withUserInformation: z\n .enum(['true', 'false', '1', '0'])\n .transform((value) => value === 'true' || value === '1')\n .optional()\n .openapi({\n description: 'Whether to attach user information to currentUser',\n }),\n }),\n },\n responses: {\n [HTTP.ResultCodes.RS_2.Ok]: jsonContent({\n description: 'Success Response',\n schema: JWTTokenPayloadSchema.extend({\n userInformation: (payload?.getUserInformation?.response?.schema ?? AnyObjectSchema)\n .optional()\n .openapi({\n description: 'Attached when withUserInformation is truthy',\n }),\n }),\n }),\n },\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const { withUserInformation = false } = context.req.valid<{\n withUserInformation?: boolean;\n }>('query');\n\n const currentUser = context.get(Authentication.CURRENT_USER);\n let rs = currentUser;\n\n if (withUserInformation) {\n if (!this.service.getUserInformation) {\n return throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const userInformation = await this.service.getUserInformation(context, {});\n rs = Object.assign({}, currentUser, { userInformation });\n }\n\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Get current user information',\n path: '/me',\n method: HTTP.Methods.GET,\n responses: jsonResponse({\n schema: payload?.getUserInformation?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.getUserInformation) {\n return throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.getUserInformation(context, {});\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n }\n\n inject({ key: serviceKey })(AuthController, undefined, 0);\n\n return AuthController;\n};\n"]}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseRestController } from '@venizia/ignis-kernel';\nimport { inject } from '@venizia/ignis-kernel';\nimport { controller } from '@venizia/ignis-kernel';\nimport { OpenApiResponses } from '@venizia/ignis-kernel';\nimport { NotSupportedUtility } from '@venizia/ignis-kernel';\nimport { AnyObjectSchema } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\nimport { getError } from '@venizia/ignis-helpers/core';\nimport { HTTP, type ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport {\n ChangePasswordRequestSchema,\n SignInRequestSchema,\n SignUpRequestSchema,\n} from '@venizia/ignis-kernel';\nimport {\n Authentication,\n type IAuthService,\n type TDefineAuthControllerOpts,\n} from '@venizia/ignis-kernel';\n\nexport const JWTTokenPayloadSchema = z.object({\n userId: z.string().or(z.number()),\n roles: z.array(\n z.object({\n id: z.string().or(z.number()),\n identifier: z.string(),\n priority: z.number().int(),\n }),\n ),\n clientId: z.string().optional(),\n provider: z.string().optional(),\n email: z.email().optional(),\n});\n\n/** Builds the decorated REST controller of the authentication routes (sign-in, sign-up, change-password, who-am-i). */\nexport class AuthControllerFactory {\n static define(opts: TDefineAuthControllerOpts) {\n const {\n restPath = '/auth',\n serviceKey,\n requireAuthenticatedSignUp = false,\n payload = {},\n } = opts;\n\n @controller({ path: restPath })\n class AuthController extends BaseRestController {\n service: IAuthService;\n\n constructor(authService: IAuthService) {\n super({\n scope: AuthController.name,\n path: restPath,\n isStrict: true,\n });\n\n if (!authService) {\n throw getError({\n message:\n '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',\n });\n }\n\n this.service = authService;\n }\n\n override binding(): ValueOrPromise<void> {\n this.defineRoute({\n configs: {\n description: 'Sign In',\n path: '/sign-in',\n method: HTTP.Methods.POST,\n request: {\n body: OpenApiResponses.jsonContent({\n description: 'Sign-in request body',\n required: true,\n schema: payload?.signIn?.request?.schema ?? SignInRequestSchema,\n }),\n },\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.signIn?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signIn(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Sign Up',\n path: '/sign-up',\n method: HTTP.Methods.POST,\n authenticate: {\n strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],\n },\n request: {\n body: OpenApiResponses.jsonContent({\n description: 'Sign-up request body',\n required: true,\n schema: payload?.signUp?.request?.schema ?? SignUpRequestSchema,\n }),\n },\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.signUp?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signUp(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Change password',\n path: '/change-password',\n method: HTTP.Methods.POST,\n request: {\n body: OpenApiResponses.jsonContent({\n description: 'Change password request body',\n required: true,\n schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,\n }),\n },\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.changePassword?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.changePassword(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n // Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.\n this.defineRoute({\n configs: {\n description: 'Refresh access token',\n path: '/token/refresh',\n method: HTTP.Methods.POST,\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.refreshToken) {\n return NotSupportedUtility.throwNotSupported({\n scope: AuthController.name,\n feature: 'refreshToken',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.refreshToken(context);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n path: '/who-am-i',\n method: HTTP.Methods.GET,\n request: {\n query: z.object({\n withUserInformation: z\n .enum(['true', 'false', '1', '0'])\n .transform((value) => value === 'true' || value === '1')\n .optional()\n .openapi({\n description: 'Whether to attach user information to currentUser',\n }),\n }),\n },\n responses: {\n [HTTP.ResultCodes.RS_2.Ok]: OpenApiResponses.jsonContent({\n description: 'Success Response',\n schema: JWTTokenPayloadSchema.extend({\n userInformation: (\n payload?.getUserInformation?.response?.schema ?? AnyObjectSchema\n )\n .optional()\n .openapi({\n description: 'Attached when withUserInformation is truthy',\n }),\n }),\n }),\n },\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const { withUserInformation = false } = context.req.valid<{\n withUserInformation?: boolean;\n }>('query');\n\n const currentUser = context.get(Authentication.CURRENT_USER);\n let rs = currentUser;\n\n if (withUserInformation) {\n if (!this.service.getUserInformation) {\n return NotSupportedUtility.throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const userInformation = await this.service.getUserInformation(context, {});\n rs = Object.assign({}, currentUser, { userInformation });\n }\n\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Get current user information',\n path: '/me',\n method: HTTP.Methods.GET,\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.getUserInformation?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.getUserInformation) {\n return NotSupportedUtility.throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.getUserInformation(context, {});\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n }\n\n inject({ key: serviceKey })(AuthController, undefined, 0);\n\n return AuthController;\n }\n}\n"]}
@@ -1,11 +1,11 @@
1
- import { jsonResponse } from '@venizia/ignis-kernel';
1
+ import { OpenApiResponses } from '@venizia/ignis-kernel';
2
2
  import { z } from '@hono/zod-openapi';
3
3
  // The /certs endpoint is intentionally unauthenticated - it serves the public JWKS external verifiers need to validate tokens issued by this service.
4
4
  export const RouteConfigs = {
5
5
  GET_JWKS_CERTS: {
6
6
  path: '/',
7
7
  method: 'get',
8
- responses: jsonResponse({
8
+ responses: OpenApiResponses.jsonResponse({
9
9
  schema: z
10
10
  .object({
11
11
  keys: z.array(z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/jwks/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,sJAAsJ;AACtJ,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc,EAAE;QACd,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,YAAY,CAAC;YACtB,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;oBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,CAAC,CACH;aACF,CAAC;iBACD,OAAO,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;YAE/C,WAAW,EAAE,kBAAkB;SAChC,CAAC;KACH;CACO,CAAC","sourcesContent":["import { jsonResponse } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\n\n// The /certs endpoint is intentionally unauthenticated - it serves the public JWKS external verifiers need to validate tokens issued by this service.\nexport const RouteConfigs = {\n GET_JWKS_CERTS: {\n path: '/',\n method: 'get',\n responses: jsonResponse({\n schema: z\n .object({\n keys: z.array(\n z.object({\n kty: z.string(),\n kid: z.string().optional(),\n use: z.string().optional(),\n alg: z.string().optional(),\n crv: z.string().optional(),\n x: z.string().optional(),\n y: z.string().optional(),\n n: z.string().optional(),\n e: z.string().optional(),\n }),\n ),\n })\n .openapi({ description: 'JSON Web Key Set' }),\n\n description: 'JSON Web Key Set',\n }),\n },\n} as const;\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/jwks/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,sJAAsJ;AACtJ,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc,EAAE;QACd,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC;YACvC,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;oBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,CAAC,CACH;aACF,CAAC;iBACD,OAAO,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;YAE/C,WAAW,EAAE,kBAAkB;SAChC,CAAC;KACH;CACO,CAAC","sourcesContent":["import { OpenApiResponses } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\n\n// The /certs endpoint is intentionally unauthenticated - it serves the public JWKS external verifiers need to validate tokens issued by this service.\nexport const RouteConfigs = {\n GET_JWKS_CERTS: {\n path: '/',\n method: 'get',\n responses: OpenApiResponses.jsonResponse({\n schema: z\n .object({\n keys: z.array(\n z.object({\n kty: z.string(),\n kid: z.string().optional(),\n use: z.string().optional(),\n alg: z.string().optional(),\n crv: z.string().optional(),\n x: z.string().optional(),\n y: z.string().optional(),\n n: z.string().optional(),\n e: z.string().optional(),\n }),\n ),\n })\n .openapi({ description: 'JSON Web Key Set' }),\n\n description: 'JSON Web Key Set',\n }),\n },\n} as const;\n"]}
@@ -1,4 +1,4 @@
1
- import { jsonResponse } from '@venizia/ignis-kernel';
1
+ import { OpenApiResponses } from '@venizia/ignis-kernel';
2
2
  import { z } from '@hono/zod-openapi';
3
3
  /**
4
4
  * Unauthenticated by design: it serves the PUBLIC key a callee needs to verify this service's
@@ -11,7 +11,7 @@ export const ServiceCertsRouteConfigs = {
11
11
  GET_SERVICE_CERTS: {
12
12
  path: '/',
13
13
  method: 'get',
14
- responses: jsonResponse({
14
+ responses: OpenApiResponses.jsonResponse({
15
15
  schema: z
16
16
  .object({
17
17
  keys: z.array(z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/service-certs/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,iBAAiB,EAAE;QACjB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,YAAY,CAAC;YACtB,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;oBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,CAAC,CACH;aACF,CAAC;iBACD,OAAO,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;YACjE,WAAW,EAAE,oCAAoC;SAClD,CAAC;KACH;CACO,CAAC","sourcesContent":["import { jsonResponse } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\n\n/**\n * Unauthenticated by design: it serves the PUBLIC key a callee needs to verify this service's\n * assertions. Whoever can reach it learns only which key signs, which is what verification requires.\n *\n * The schema names public members only. That is documentation, not a filter - a zod response schema\n * does not strip anything - so the guard that private material never gets here lives in the signer.\n */\nexport const ServiceCertsRouteConfigs = {\n GET_SERVICE_CERTS: {\n path: '/',\n method: 'get',\n responses: jsonResponse({\n schema: z\n .object({\n keys: z.array(\n z.object({\n kty: z.string(),\n kid: z.string().optional(),\n use: z.string().optional(),\n alg: z.string().optional(),\n crv: z.string().optional(),\n x: z.string().optional(),\n }),\n ),\n })\n .openapi({ description: 'Service assertion JSON Web Key Set' }),\n description: 'Service assertion JSON Web Key Set',\n }),\n },\n} as const;\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/service-certs/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,iBAAiB,EAAE;QACjB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC;YACvC,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;oBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,CAAC,CACH;aACF,CAAC;iBACD,OAAO,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;YACjE,WAAW,EAAE,oCAAoC;SAClD,CAAC;KACH;CACO,CAAC","sourcesContent":["import { OpenApiResponses } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\n\n/**\n * Unauthenticated by design: it serves the PUBLIC key a callee needs to verify this service's\n * assertions. Whoever can reach it learns only which key signs, which is what verification requires.\n *\n * The schema names public members only. That is documentation, not a filter - a zod response schema\n * does not strip anything - so the guard that private material never gets here lives in the signer.\n */\nexport const ServiceCertsRouteConfigs = {\n GET_SERVICE_CERTS: {\n path: '/',\n method: 'get',\n responses: OpenApiResponses.jsonResponse({\n schema: z\n .object({\n keys: z.array(\n z.object({\n kty: z.string(),\n kid: z.string().optional(),\n use: z.string().optional(),\n alg: z.string().optional(),\n crv: z.string().optional(),\n x: z.string().optional(),\n }),\n ),\n })\n .openapi({ description: 'Service assertion JSON Web Key Set' }),\n description: 'Service assertion JSON Web Key Set',\n }),\n },\n} as const;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/services/bearer/abstract.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAGpE,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAwC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEjE,gGAAgG;AAChG,8BAAsB,0BAA0B,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,CAAE,SAAQ,WAAW;IACvF,oDAAoD;IACpD,MAAM,CAAC,QAAQ,CAAC,iBAAiB,wBAQ9B;IAEH,SAAS,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAAQ;IAC5C,SAAS,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAa;IAEnE,iFAAiF;IACjF,SAAS,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI,CAAQ;IAErD,mIAAmI;IACnI,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE;QACzC,YAAY,CAAC,EAAE,gBAAgB,CAAC;QAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACnC,4KAA4K;QAC5K,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,IAAI,CAAC,EAAE,eAAe,CAAC;KACxB,GAAG,IAAI;IAmBR,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IA8B3E,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBxE,QAAQ,CAAC,IAAI,EAAE;QACnB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;QACvC,gGAAgG;QAChG,MAAM,CAAC,EAAE,eAAe,CAAC;KAC1B,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBnB,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,GAAG,MAAM;IAWnE,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAqC9D,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAW/D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE;QAC9B,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,eAAe,CAAC;KAC1B,GAAG,OAAO;IAwCX,cAAc,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAA;KAAE,GAAG,gBAAgB;IAiCrF,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAErE,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;QACvB,OAAO,EAAE,gBAAgB,CAAC;QAC1B,iBAAiB,EAAE,kBAAkB,CAAC;QACtC,MAAM,CAAC,EAAE,eAAe,CAAC;KAC1B,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpB,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,cAAc,CAAC,UAAU,GAAG,SAAS,CAAC;IAE1E,SAAS,CAAC,QAAQ,CAAC,wBAAwB,IAAI,kBAAkB;CAClE"}
1
+ {"version":3,"file":"abstract.service.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/services/bearer/abstract.service.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,8 @@ export class AbstractBearerTokenService extends BaseService {
72
72
  });
73
73
  }
74
74
  try {
75
- return await this.doVerify(token);
75
+ const result = await this.doVerify(token);
76
+ return result;
76
77
  }
77
78
  catch (error) {
78
79
  // No log here - `cause` carries the reason (JWTExpired, signature mismatch) to the error handler, which logs the request once. An expired token is the caller's problem, hence `warn`.
@@ -94,7 +95,8 @@ export class AbstractBearerTokenService extends BaseService {
94
95
  }
95
96
  const signer = await this.getSigner({ payload, getTokenExpiresFn, claims });
96
97
  try {
97
- const rs = await signer.sign(await this.getSigningKey());
98
+ const result = await this.getSigningKey();
99
+ const rs = await signer.sign(result);
98
100
  return rs;
99
101
  }
100
102
  catch (error) {