@nauth-toolkit/core 0.3.0 → 0.3.2

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 (87) hide show
  1. package/dist/bootstrap.d.ts.map +1 -1
  2. package/dist/bootstrap.js +53 -0
  3. package/dist/bootstrap.js.map +1 -1
  4. package/dist/dto/admin-api-key.dto.d.ts +69 -0
  5. package/dist/dto/admin-api-key.dto.d.ts.map +1 -0
  6. package/dist/dto/admin-api-key.dto.js +144 -0
  7. package/dist/dto/admin-api-key.dto.js.map +1 -0
  8. package/dist/dto/admin-signup-social.dto.d.ts +1 -1
  9. package/dist/dto/admin-signup-social.dto.js +1 -1
  10. package/dist/dto/admin-signup.dto.d.ts +1 -1
  11. package/dist/dto/admin-signup.dto.js +1 -1
  12. package/dist/dto/api-key.dto.d.ts +153 -0
  13. package/dist/dto/api-key.dto.d.ts.map +1 -0
  14. package/dist/dto/api-key.dto.js +222 -0
  15. package/dist/dto/api-key.dto.js.map +1 -0
  16. package/dist/dto/change-password.dto.d.ts +2 -2
  17. package/dist/dto/change-password.dto.js +2 -2
  18. package/dist/dto/index.d.ts +2 -0
  19. package/dist/dto/index.d.ts.map +1 -1
  20. package/dist/dto/index.js +3 -0
  21. package/dist/dto/index.js.map +1 -1
  22. package/dist/dto/reset-password.dto.d.ts +1 -1
  23. package/dist/dto/reset-password.dto.js +1 -1
  24. package/dist/dto/respond-challenge.dto.d.ts +1 -1
  25. package/dist/dto/respond-challenge.dto.js +1 -1
  26. package/dist/dto/signup.dto.d.ts +1 -1
  27. package/dist/dto/signup.dto.js +1 -1
  28. package/dist/entities/api-key.entity.d.ts +129 -0
  29. package/dist/entities/api-key.entity.d.ts.map +1 -0
  30. package/dist/entities/api-key.entity.js +143 -0
  31. package/dist/entities/api-key.entity.js.map +1 -0
  32. package/dist/entities/index.d.ts +1 -0
  33. package/dist/entities/index.d.ts.map +1 -1
  34. package/dist/entities/index.js +3 -1
  35. package/dist/entities/index.js.map +1 -1
  36. package/dist/enums/auth-audit-event-type.enum.d.ts +25 -1
  37. package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -1
  38. package/dist/enums/auth-audit-event-type.enum.js +27 -0
  39. package/dist/enums/auth-audit-event-type.enum.js.map +1 -1
  40. package/dist/enums/error-codes.enum.d.ts +56 -1
  41. package/dist/enums/error-codes.enum.d.ts.map +1 -1
  42. package/dist/enums/error-codes.enum.js +58 -0
  43. package/dist/enums/error-codes.enum.js.map +1 -1
  44. package/dist/exceptions/nauth.exception.d.ts.map +1 -1
  45. package/dist/exceptions/nauth.exception.js +13 -0
  46. package/dist/exceptions/nauth.exception.js.map +1 -1
  47. package/dist/handlers/api-key.handler.d.ts +45 -0
  48. package/dist/handlers/api-key.handler.d.ts.map +1 -0
  49. package/dist/handlers/api-key.handler.js +99 -0
  50. package/dist/handlers/api-key.handler.js.map +1 -0
  51. package/dist/handlers/auth.handler.d.ts.map +1 -1
  52. package/dist/handlers/auth.handler.js +6 -0
  53. package/dist/handlers/auth.handler.js.map +1 -1
  54. package/dist/index.d.ts +7 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +8 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/interfaces/config.interface.d.ts +118 -0
  59. package/dist/interfaces/config.interface.d.ts.map +1 -1
  60. package/dist/openapi/components.schemas.json +329 -7
  61. package/dist/platform/interfaces.d.ts +8 -0
  62. package/dist/platform/interfaces.d.ts.map +1 -1
  63. package/dist/schemas/auth-config.schema.d.ts +175 -0
  64. package/dist/schemas/auth-config.schema.d.ts.map +1 -1
  65. package/dist/schemas/auth-config.schema.js +26 -1
  66. package/dist/schemas/auth-config.schema.js.map +1 -1
  67. package/dist/services/api-key.service.d.ts +178 -0
  68. package/dist/services/api-key.service.d.ts.map +1 -0
  69. package/dist/services/api-key.service.js +475 -0
  70. package/dist/services/api-key.service.js.map +1 -0
  71. package/dist/utils/index.d.ts +1 -0
  72. package/dist/utils/index.d.ts.map +1 -1
  73. package/dist/utils/index.js +1 -0
  74. package/dist/utils/index.js.map +1 -1
  75. package/dist/utils/ip-match.d.ts +44 -0
  76. package/dist/utils/ip-match.d.ts.map +1 -0
  77. package/dist/utils/ip-match.js +135 -0
  78. package/dist/utils/ip-match.js.map +1 -0
  79. package/dist/utils/setup/get-repositories.d.ts +2 -1
  80. package/dist/utils/setup/get-repositories.d.ts.map +1 -1
  81. package/dist/utils/setup/get-repositories.js +2 -0
  82. package/dist/utils/setup/get-repositories.js.map +1 -1
  83. package/dist/utils/setup/init-services.d.ts +4 -2
  84. package/dist/utils/setup/init-services.d.ts.map +1 -1
  85. package/dist/utils/setup/init-services.js +7 -0
  86. package/dist/utils/setup/init-services.js.map +1 -1
  87. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAA+B,MAAM,uBAAuB,CAAC;AASlF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE,OAAO,EAAgB,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAkB,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAM3E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC;IAEpB,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,WAAW,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CACrE,SAAQ,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,4BAA4B,CAAC,EAAE,oBAAoB;IACpG,0CAA0C;IAC1C,UAAU,EAAE;QACV,6CAA6C;QAC7C,UAAU,EAAE,WAAW,CAAC;QACxB,yBAAyB;QACzB,IAAI,EAAE,WAAW,CAAC;QAClB,sBAAsB;QACtB,IAAI,EAAE,WAAW,CAAC;QAClB,4CAA4C;QAC5C,aAAa,EAAE,WAAW,CAAC;KAC5B,CAAC;IAEF,oBAAoB;IACpB,OAAO,EAAE;QACP,2CAA2C;QAC3C,MAAM,EAAE,MAAM,OAAO,CAAC;QACtB,yDAAyD;QACzD,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC;QACvD,qCAAqC;QACrC,YAAY,EAAE,MAAM,OAAO,CAAC;QAC5B,mCAAmC;QACnC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;QACrD,+CAA+C;QAC/C,aAAa,EAAE,MAAM,OAAO,CAAC;QAC7B,kDAAkD;QAClD,gBAAgB,EAAE,MAAM,OAAO,CAAC;QAChC,qCAAqC;QACrC,cAAc,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;QACxC,6BAA6B;QAC7B,iBAAiB,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACrD,sBAAsB;QACtB,aAAa,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;KAC7C,CAAC;IAEF,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IAEtB,oBAAoB;IACpB,MAAM,EAAE,WAAW,CAAC;IAEpB,sBAAsB;IACtB,MAAM,EAAE,WAAW,CAAC;IAEpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAEvC,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAMD;;;;GAIG;AACH,qBAAa,KAAK;IAChB;;;;;;;;;;;;;;OAcG;WACU,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAyVnE"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAA+B,MAAM,uBAAuB,CAAC;AAUlF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE,OAAO,EAAgB,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E,OAAO,EAAkB,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAM3E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC;IAEpB,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa,CAAC,WAAW,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CACrE,SAAQ,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,4BAA4B,CAAC,EAAE,oBAAoB;IACpG,0CAA0C;IAC1C,UAAU,EAAE;QACV,6CAA6C;QAC7C,UAAU,EAAE,WAAW,CAAC;QACxB,yBAAyB;QACzB,IAAI,EAAE,WAAW,CAAC;QAClB,sBAAsB;QACtB,IAAI,EAAE,WAAW,CAAC;QAClB,4CAA4C;QAC5C,aAAa,EAAE,WAAW,CAAC;KAC5B,CAAC;IAEF,oBAAoB;IACpB,OAAO,EAAE;QACP,2CAA2C;QAC3C,MAAM,EAAE,MAAM,OAAO,CAAC;QACtB,yDAAyD;QACzD,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,OAAO,CAAC;QACvD,qCAAqC;QACrC,YAAY,EAAE,MAAM,OAAO,CAAC;QAC5B,mCAAmC;QACnC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;QACrD,+CAA+C;QAC/C,aAAa,EAAE,MAAM,OAAO,CAAC;QAC7B,kDAAkD;QAClD,gBAAgB,EAAE,MAAM,OAAO,CAAC;QAChC,qCAAqC;QACrC,cAAc,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC;QACxC,6BAA6B;QAC7B,iBAAiB,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACrD,sBAAsB;QACtB,aAAa,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;KAC7C,CAAC;IAEF,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IAEtB,oBAAoB;IACpB,MAAM,EAAE,WAAW,CAAC;IAEpB,sBAAsB;IACtB,MAAM,EAAE,WAAW,CAAC;IAEpB,gCAAgC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAEvC,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAMD;;;;GAIG;AACH,qBAAa,KAAK;IAChB;;;;;;;;;;;;;;OAcG;WACU,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;CAsZnE"}
package/dist/bootstrap.js CHANGED
@@ -37,6 +37,7 @@ const context_storage_1 = require("./utils/context-storage");
37
37
  // Handlers
38
38
  const client_info_handler_1 = require("./handlers/client-info.handler");
39
39
  const auth_handler_1 = require("./handlers/auth.handler");
40
+ const api_key_handler_1 = require("./handlers/api-key.handler");
40
41
  const token_delivery_handler_1 = require("./handlers/token-delivery.handler");
41
42
  const csrf_handler_1 = require("./handlers/csrf.handler");
42
43
  const csrf_service_1 = require("./services/csrf.service");
@@ -159,6 +160,10 @@ class NAuth {
159
160
  // ========================================================================
160
161
  const clientInfoHandler = new client_info_handler_1.ClientInfoHandler(services.clientInfoService, config, services.geoLocationService, logger);
161
162
  const authHandler = new auth_handler_1.AuthHandler(services.jwtService, services.sessionService, services.authService, config, logger);
163
+ // API key handler (only when the feature is enabled and the service is available)
164
+ const apiKeyHandler = config.apiKeys?.enabled && services.apiKeyService
165
+ ? new api_key_handler_1.ApiKeyHandler(services.apiKeyService, services.authService, config, logger)
166
+ : null;
162
167
  const tokenDeliveryHandler = new token_delivery_handler_1.TokenDeliveryHandler(config, logger);
163
168
  // CSRF service (only for cookies/hybrid delivery)
164
169
  const csrfService = config.tokenDelivery?.method === 'cookies' || config.tokenDelivery?.method === 'hybrid'
@@ -173,6 +178,13 @@ class NAuth {
173
178
  clientInfo: adapter.registerMiddleware('clientInfo', clientInfoHandler.handle.bind(clientInfoHandler), {
174
179
  initializesContext: true,
175
180
  }),
181
+ // API key handler - MUST run before the JWT auth handler. When an API key is present it
182
+ // is the only credential considered; a valid key makes the auth handler skip cookie/bearer.
183
+ apiKey: apiKeyHandler
184
+ ? adapter.registerMiddleware('apiKey', apiKeyHandler.handle.bind(apiKeyHandler))
185
+ : adapter.registerMiddleware('noop', async (_req, _res, next) => {
186
+ await next();
187
+ }),
176
188
  // Auth handler
177
189
  auth: adapter.registerMiddleware('auth', authHandler.handle.bind(authHandler)),
178
190
  // CSRF handler (no-op if disabled)
@@ -215,6 +227,22 @@ class NAuth {
215
227
  });
216
228
  return;
217
229
  }
230
+ // API-key route opt-in enforcement (deny-wins, least privilege):
231
+ // a key-authenticated request is only allowed on routes explicitly opted-in via
232
+ // allowApiKey() (or globalAllowlist), and never on routes opted-out via denyApiKey().
233
+ if (req.attributes.nauthApiKeyAuth) {
234
+ const allowed = req.attributes.nauthDenyApiKey !== true &&
235
+ (req.attributes.nauthAllowApiKey === true || config.apiKeys?.globalAllowlist === true);
236
+ if (!allowed) {
237
+ res.status(403).json({
238
+ statusCode: 403,
239
+ error: 'Forbidden',
240
+ message: 'API key authentication is not allowed for this route',
241
+ code: error_codes_enum_1.AuthErrorCode.FORBIDDEN,
242
+ });
243
+ return;
244
+ }
245
+ }
218
246
  return next();
219
247
  }),
220
248
  /**
@@ -283,6 +311,31 @@ class NAuth {
283
311
  req.attributes.nauthRequireRecaptcha = true;
284
312
  return next();
285
313
  }),
314
+ /**
315
+ * Allow API-key authentication for this route (opt-in).
316
+ *
317
+ * With the default opt-in policy, API keys only authenticate on routes marked with this
318
+ * helper. Enforced by `requireAuth()`.
319
+ *
320
+ * @example
321
+ * ```typescript
322
+ * app.get('/api/data', nauth.helpers.allowApiKey(), nauth.helpers.requireAuth(), handler);
323
+ * ```
324
+ */
325
+ allowApiKey: () => adapter.registerMiddleware('allowApiKey', (req, _res, next) => {
326
+ req.attributes.nauthAllowApiKey = true;
327
+ return next();
328
+ }),
329
+ /**
330
+ * Deny API-key authentication for this route (takes precedence over allow / globalAllowlist).
331
+ *
332
+ * Use to exclude a sensitive route even when keys are enabled globally or on a controller.
333
+ * Enforced by `requireAuth()`.
334
+ */
335
+ denyApiKey: () => adapter.registerMiddleware('denyApiKey', (req, _res, next) => {
336
+ req.attributes.nauthDenyApiKey = true;
337
+ return next();
338
+ }),
286
339
  // Context helpers (read from ContextStorage)
287
340
  getCurrentUser: () => context_storage_1.ContextStorage.get('CURRENT_USER'),
288
341
  getCurrentSession: () => context_storage_1.ContextStorage.get('CURRENT_SESSION'),
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAIH,uDAAmD;AACnD,kEAA8D;AAC9D,+DAAyD;AAEzD,gEAA4D;AAC5D,6DAAyD;AAEzD,WAAW;AACX,wEAAmE;AACnE,0DAAsD;AACtD,gEAA2D;AAC3D,8EAAyE;AACzE,0DAAsD;AACtD,0DAAsD;AACtD,oEAAgE;AAEhE,gBAAgB;AAChB,qEAAiE;AACjE,6DAAyD;AACzD,+DAA0E;AAC1E,6DAAkE;AAClE,2DAAiF;AACjF,6EAAiF;AACjF,yCAAiF;AAGjF,gGAAkF;AAClF,gFAA2E;AAsF3E,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAa,KAAK;IAChB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAqB;QACvC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,gCAAc,EAAE,CAAC;QAExD,MAAM,MAAM,GAAG,IAAI,0BAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,2BAA2B,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;QAEzD,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,MAAM,IAAA,kDAA2B,EAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAE9D,2EAA2E;QAC3E,uCAAuC;QACvC,2EAA2E;QAC3E,MAAM,KAAK,GAAG,IAAA,kCAAe,EAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,OAAO,GAAG,MAAM,IAAA,0BAAW,EAAC,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAE1G,2EAA2E;QAC3E,yBAAyB;QACzB,2EAA2E;QAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,MAAM,QAAQ,GAAkB,IAAA,4BAAY,EAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;QAEzG,2EAA2E;QAC3E,wCAAwC;QACxC,2EAA2E;QAC3E,MAAM,cAAc,GAAG,IAAI,iCAAsB,CAC/C,QAAQ,CAAC,oBAAoB,EAC7B,QAAQ,CAAC,0BAA0B,EACnC,QAAQ,CAAC,iBAAiB,EAC1B,MAAM,CACP,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,sCAA2B,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAE7E,IAAI,QAAQ,CAAC,0BAA0B,EAAE,CAAC;YACvC,QAAQ,CAAC,0BAAiE,CAAC,YAAY,GAAG,YAAY,CAAC;YACvG,QAAQ,CAAC,0BAAiE,CAAC,cAAc,GAAG,cAAc,CAAC;QAC9G,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,gCAAc,CAAC,gCAAa,CAAC,cAAc,EAAE,6CAA6C,CAAC,CAAC;QACxG,CAAC;QAED,2EAA2E;QAC3E,qCAAqC;QACrC,2EAA2E;QAC3E,MAAM,oBAAoB,GAAG,IAAI,sDAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEvE,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC/C,MAAM,IAAA,mCAAoB,EACxB,MAAM,EACN,QAAQ,CAAC,UAAU,EACnB,KAAK,CAAC,mBAAoB,EAC1B,KAAK,CAAC,cAAc,EACpB,MAAM,EACN,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,wBAAwB,EACjC,QAAQ,CAAC,wBAAwB,EACjC,QAAQ,CAAC,gBAAgB,EACzB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,iBAAiB,CAC3B,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAyB,MAAM,IAAA,4BAAc,EAChE,MAAM,EACN,QAAQ,CAAC,sBAAsB,EAC/B,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,iBAAiB,EAC1B,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,cAAc,EACvB,QAAQ,CAAC,0BAA0B,EACnC,QAAQ,CAAC,iBAAiB,EAC1B,MAAM,EACN,oBAAoB,EACpB,KAAK,CAAC,cAAc,EACpB,QAAQ,CAAC,wBAAwB,EACjC,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,oBAAoB,EAC7B,KAAK,CAAC,8BAA8B,EACpC,QAAQ,CAAC,YAAY,CACtB,CAAC;QAEF,kEAAkE;QAClE,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;QACtG,MAAM,qBAAqB,GAAG,SAAS;YACrC,CAAC,CAAC,IAAI,+CAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC;YAC3G,CAAC,CAAC,SAAS,CAAC;QAEd,2EAA2E;QAC3E,+CAA+C;QAC/C,2EAA2E;QAC3E,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,iBAAiB,IAAI,MAAM,CAAC;YAClE,gFAAgF;YAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAEjC,CAAC;YAEF,IAAI,YAAY,KAAK,KAAK,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;gBAC5E,IAAI,CAAC;oBACH,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;oBAEzD,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;wBAC3B,MAAM,CAAC,GAAG,CAAC,cAAc,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvD,CAAC;yBAAM,CAAC;wBACN,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI;4BACvC,CAAC,CAAC,GAAG,gBAAgB,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE;4BACxD,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;wBAE7B,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;4BAC7B,MAAM,IAAI,gCAAc,CACtB,gCAAa,CAAC,0BAA0B,EACxC,wCAAwC,WAAW,EAAE,CACtD,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,IAAI,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAC;wBACrE,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,IAAI,KAAK,YAAY,gCAAc,EAAE,CAAC;wBACpC,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;oBACzF,MAAM,CAAC,IAAI,CAAC,oDAAoD,YAAY,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,qBAAqB;QACrB,2EAA2E;QAC3E,MAAM,iBAAiB,GAAG,IAAI,uCAAiB,CAC7C,QAAQ,CAAC,iBAAiB,EAC1B,MAAM,EACN,QAAQ,CAAC,kBAAkB,EAC3B,MAAM,CACP,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,0BAAW,CACjC,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,cAAc,EACvB,QAAQ,CAAC,WAAW,EACpB,MAAM,EACN,MAAM,CACP,CAAC;QAEF,kFAAkF;QAClF,MAAM,aAAa,GACjB,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,aAAa;YAC/C,CAAC,CAAC,IAAI,+BAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC;YACjF,CAAC,CAAC,IAAI,CAAC;QAEX,MAAM,oBAAoB,GAAG,IAAI,6CAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEtE,kDAAkD;QAClD,MAAM,WAAW,GACf,MAAM,CAAC,aAAa,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,EAAE,MAAM,KAAK,QAAQ;YACrF,CAAC,CAAC,IAAI,0BAAW,CAAC,MAAM,CAAC;YACzB,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,0BAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtF,2EAA2E;QAC3E,sCAAsC;QACtC,2EAA2E;QAC3E,MAAM,UAAU,GAAG;YACjB,iDAAiD;YACjD,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBACrG,kBAAkB,EAAE,IAAI;aACzB,CAAC;YAEF,wFAAwF;YACxF,4FAA4F;YAC5F,MAAM,EAAE,aAAa;gBACnB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChF,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAkB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;oBACrG,MAAM,IAAI,EAAE,CAAC;gBACf,CAAC,CAAC;YAEN,eAAe;YACf,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE9E,mCAAmC;YACnC,IAAI,EAAE,WAAW;gBACf,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC1E,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAkB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;oBACrG,MAAM,IAAI,EAAE,CAAC;gBACf,CAAC,CAAC;YAEN,wCAAwC;YACxC,aAAa,EAAE,OAAO,CAAC,2BAA2B,CAChD,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAC/D;SACF,CAAC;QAEF,2EAA2E;QAC3E,oBAAoB;QACpB,2EAA2E;QAC3E,MAAM,OAAO,GAAG;YACd;;eAEG;YACH,MAAM,EAAE,GAAG,EAAE,CACX,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,GAAiB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;gBAChG,GAAG,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;gBAClC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEJ;;;;eAIG;YACH,WAAW,EAAE,CAAC,OAA4B,EAAE,EAAE,CAC5C,OAAO,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,GAAiB,EAAE,GAAkB,EAAE,IAAgB,EAAE,EAAE;gBACpG,gDAAgD;gBAChD,IAAI,OAAO,EAAE,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;oBAC7D,MAAM,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;gBACtC,CAAC;gBAED,yBAAyB;gBACzB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;oBACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,UAAU,EAAE,GAAG;wBACf,KAAK,EAAE,cAAc;wBACrB,OAAO,EAAE,yBAAyB;wBAClC,IAAI,EAAE,eAAe;qBACtB,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,iEAAiE;gBACjE,gFAAgF;gBAChF,sFAAsF;gBACtF,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;oBACnC,MAAM,OAAO,GACX,GAAG,CAAC,UAAU,CAAC,eAAe,KAAK,IAAI;wBACvC,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC;oBACzF,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;4BACnB,UAAU,EAAE,GAAG;4BACf,KAAK,EAAE,WAAW;4BAClB,OAAO,EAAE,sDAAsD;4BAC/D,IAAI,EAAE,gCAAa,CAAC,SAAS;yBAC9B,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEJ;;;;;eAKG;YACH,YAAY,EAAE,GAAG,EAAE,CACjB,OAAO,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC,IAAkB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;gBACvG,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEJ;;eAEG;YACH,aAAa,EAAE,CAAC,IAAwB,EAAE,EAAE,CAC1C,OAAO,CAAC,kBAAkB,CACxB,qBAAqB,EACrB,CAAC,GAAiB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;gBAC3D,GAAG,CAAC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBACzC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CACF;YAEH;;;;;;;;;;;;;;;;;;;;eAoBG;YACH,aAAa,EAAE,GAAG,EAAE,CAClB,OAAO,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC,GAAiB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;gBACvG,GAAG,CAAC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBACzC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEJ;;;;;;;;;;;;;;;;;;;;eAoBG;YACH,gBAAgB,EAAE,GAAG,EAAE,CACrB,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,GAAiB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;gBAC1G,GAAG,CAAC,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAC5C,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEJ;;;;;;;;;;eAUG;YACH,WAAW,EAAE,GAAG,EAAE,CAChB,OAAO,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,GAAiB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;gBACrG,GAAG,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBACvC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEJ;;;;;eAKG;YACH,UAAU,EAAE,GAAG,EAAE,CACf,OAAO,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC,GAAiB,EAAE,IAAmB,EAAE,IAAgB,EAAE,EAAE;gBACpG,GAAG,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;gBACtC,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEJ,6CAA6C;YAC7C,cAAc,EAAE,GAAG,EAAE,CAAC,gCAAc,CAAC,GAAG,CAAQ,cAAc,CAAC;YAC/D,iBAAiB,EAAE,GAAG,EAAE,CAAC,gCAAc,CAAC,GAAG,CAAkB,iBAAiB,CAAC;YAC/E,aAAa,EAAE,GAAG,EAAE,CAAC,gCAAc,CAAC,GAAG,CAAa,aAAa,CAAC;SACnE,CAAC;QAEF,2EAA2E;QAC3E,+BAA+B;QAC/B,2EAA2E;QAE3E,4CAA4C;QAC5C,MAAM,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC;QAErF,MAAM,CAAC,GAAG,CAAC,uCAAuC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,oEAAoE;QACpE,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,gBAAgB,GAAG,IAAI,oCAAgB,CAC3C,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,EACnD,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,sBAAsB,CAChC,CAAC;QACF,YAAY,CAAC,GAAG,EAAE;YAChB,gBAAgB,CAAC,YAAY,EAAE,CAAC;YAChC,gBAAgB,CAAC,cAAc,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,cAAc;YACjB,GAAG,eAAe;YAClB,UAAU;YACV,OAAO;YACP,OAAO;YACP,MAAM;YACN,MAAM;YACN,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;YAC7C,WAAW;YACX,cAAc,EAAE,qBAAqB;YACrC,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF;AAtaD,sBAsaC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * DTO for administrative API key creation on behalf of a user
3
+ *
4
+ * Warning: This endpoint should be protected by admin authentication.
5
+ * The service does not enforce authorization - it is the responsibility of the
6
+ * framework adapter (NestJS/Express/Fastify) to protect the endpoint.
7
+ *
8
+ * Admin-created keys bypass the `allowUserCreation` restriction but still obey
9
+ * `maxKeysPerUser`, expiry, and IP-restriction rules.
10
+ */
11
+ export declare class AdminCreateApiKeyDTO {
12
+ /**
13
+ * Target user sub (UUID v4)
14
+ *
15
+ * Sanitization: Trimmed and lowercased.
16
+ */
17
+ sub: string;
18
+ /**
19
+ * User-friendly label for the key (optional)
20
+ */
21
+ name?: string;
22
+ /**
23
+ * Key expiry in days, or `null` for a key that never expires
24
+ *
25
+ * Mandatory at creation (see {@link CreateApiKeyDTO} for the rules the service enforces).
26
+ */
27
+ expiresInDays?: number | null;
28
+ /**
29
+ * Allowed source IPs / CIDR ranges for this key (optional)
30
+ */
31
+ allowedIps?: string[];
32
+ }
33
+ /**
34
+ * DTO for administrative API key update on behalf of a user
35
+ */
36
+ export declare class AdminUpdateApiKeyDTO {
37
+ /**
38
+ * Target user sub (UUID v4)
39
+ */
40
+ sub: string;
41
+ /**
42
+ * External key identifier (UUID v4)
43
+ */
44
+ keyId: string;
45
+ /**
46
+ * New label for the key (optional)
47
+ */
48
+ name?: string;
49
+ /**
50
+ * Replacement IP allowlist (optional). Pass an empty array to clear restrictions.
51
+ */
52
+ allowedIps?: string[];
53
+ }
54
+ /**
55
+ * DTO for administrative API key management (list / revoke / delete) by user sub
56
+ *
57
+ * For list operations, only `sub` is required. For revoke/delete, `keyId` is also required.
58
+ */
59
+ export declare class AdminManageApiKeyDTO {
60
+ /**
61
+ * Target user sub (UUID v4)
62
+ */
63
+ sub: string;
64
+ /**
65
+ * External key identifier (UUID v4). Required for revoke/delete, omitted for list.
66
+ */
67
+ keyId?: string;
68
+ }
69
+ //# sourceMappingURL=admin-api-key.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-api-key.dto.d.ts","sourceRoot":"","sources":["../../src/dto/admin-api-key.dto.ts"],"names":[],"mappings":"AAaA;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B;;;;OAIG;IAGH,GAAG,EAAG,MAAM,CAAC;IAEb;;OAEG;IAKH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IAIH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;IAKH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IAGH,GAAG,EAAG,MAAM,CAAC;IAEb;;OAEG;IAEH,KAAK,EAAG,MAAM,CAAC;IAEf;;OAEG;IAKH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IAKH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IAGH,GAAG,EAAG,MAAM,CAAC;IAEb;;OAEG;IAGH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdminManageApiKeyDTO = exports.AdminUpdateApiKeyDTO = exports.AdminCreateApiKeyDTO = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ /**
16
+ * DTO for administrative API key creation on behalf of a user
17
+ *
18
+ * Warning: This endpoint should be protected by admin authentication.
19
+ * The service does not enforce authorization - it is the responsibility of the
20
+ * framework adapter (NestJS/Express/Fastify) to protect the endpoint.
21
+ *
22
+ * Admin-created keys bypass the `allowUserCreation` restriction but still obey
23
+ * `maxKeysPerUser`, expiry, and IP-restriction rules.
24
+ */
25
+ class AdminCreateApiKeyDTO {
26
+ /**
27
+ * Target user sub (UUID v4)
28
+ *
29
+ * Sanitization: Trimmed and lowercased.
30
+ */
31
+ sub;
32
+ /**
33
+ * User-friendly label for the key (optional)
34
+ */
35
+ name;
36
+ /**
37
+ * Key expiry in days, or `null` for a key that never expires
38
+ *
39
+ * Mandatory at creation (see {@link CreateApiKeyDTO} for the rules the service enforces).
40
+ */
41
+ expiresInDays;
42
+ /**
43
+ * Allowed source IPs / CIDR ranges for this key (optional)
44
+ */
45
+ allowedIps;
46
+ }
47
+ exports.AdminCreateApiKeyDTO = AdminCreateApiKeyDTO;
48
+ __decorate([
49
+ (0, class_validator_1.IsUUID)('4', { message: 'User sub must be a valid UUID v4' }),
50
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'string' ? value.trim().toLowerCase() : value)),
51
+ __metadata("design:type", String)
52
+ ], AdminCreateApiKeyDTO.prototype, "sub", void 0);
53
+ __decorate([
54
+ (0, class_validator_1.IsOptional)(),
55
+ (0, class_validator_1.IsString)({ message: 'Name must be a string' }),
56
+ (0, class_validator_1.MaxLength)(255, { message: 'Name must not exceed 255 characters' }),
57
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'string' ? value.trim() : value)),
58
+ __metadata("design:type", String)
59
+ ], AdminCreateApiKeyDTO.prototype, "name", void 0);
60
+ __decorate([
61
+ (0, class_validator_1.ValidateIf)((o) => o.expiresInDays !== undefined && o.expiresInDays !== null),
62
+ (0, class_validator_1.IsInt)({ message: 'expiresInDays must be an integer number of days or null' }),
63
+ (0, class_validator_1.Min)(1, { message: 'expiresInDays must be at least 1' }),
64
+ __metadata("design:type", Object)
65
+ ], AdminCreateApiKeyDTO.prototype, "expiresInDays", void 0);
66
+ __decorate([
67
+ (0, class_validator_1.IsOptional)(),
68
+ (0, class_validator_1.IsArray)({ message: 'allowedIps must be an array of IP addresses or CIDR ranges' }),
69
+ (0, class_validator_1.ArrayMaxSize)(100, { message: 'allowedIps has too many entries' }),
70
+ (0, class_validator_1.IsString)({ each: true, message: 'Each allowedIps entry must be a string' }),
71
+ __metadata("design:type", Array)
72
+ ], AdminCreateApiKeyDTO.prototype, "allowedIps", void 0);
73
+ /**
74
+ * DTO for administrative API key update on behalf of a user
75
+ */
76
+ class AdminUpdateApiKeyDTO {
77
+ /**
78
+ * Target user sub (UUID v4)
79
+ */
80
+ sub;
81
+ /**
82
+ * External key identifier (UUID v4)
83
+ */
84
+ keyId;
85
+ /**
86
+ * New label for the key (optional)
87
+ */
88
+ name;
89
+ /**
90
+ * Replacement IP allowlist (optional). Pass an empty array to clear restrictions.
91
+ */
92
+ allowedIps;
93
+ }
94
+ exports.AdminUpdateApiKeyDTO = AdminUpdateApiKeyDTO;
95
+ __decorate([
96
+ (0, class_validator_1.IsUUID)('4', { message: 'User sub must be a valid UUID v4' }),
97
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'string' ? value.trim().toLowerCase() : value)),
98
+ __metadata("design:type", String)
99
+ ], AdminUpdateApiKeyDTO.prototype, "sub", void 0);
100
+ __decorate([
101
+ (0, class_validator_1.IsUUID)('4', { message: 'keyId must be a valid UUID v4' }),
102
+ __metadata("design:type", String)
103
+ ], AdminUpdateApiKeyDTO.prototype, "keyId", void 0);
104
+ __decorate([
105
+ (0, class_validator_1.IsOptional)(),
106
+ (0, class_validator_1.IsString)({ message: 'Name must be a string' }),
107
+ (0, class_validator_1.MaxLength)(255, { message: 'Name must not exceed 255 characters' }),
108
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'string' ? value.trim() : value)),
109
+ __metadata("design:type", String)
110
+ ], AdminUpdateApiKeyDTO.prototype, "name", void 0);
111
+ __decorate([
112
+ (0, class_validator_1.IsOptional)(),
113
+ (0, class_validator_1.IsArray)({ message: 'allowedIps must be an array of IP addresses or CIDR ranges' }),
114
+ (0, class_validator_1.ArrayMaxSize)(100, { message: 'allowedIps has too many entries' }),
115
+ (0, class_validator_1.IsString)({ each: true, message: 'Each allowedIps entry must be a string' }),
116
+ __metadata("design:type", Array)
117
+ ], AdminUpdateApiKeyDTO.prototype, "allowedIps", void 0);
118
+ /**
119
+ * DTO for administrative API key management (list / revoke / delete) by user sub
120
+ *
121
+ * For list operations, only `sub` is required. For revoke/delete, `keyId` is also required.
122
+ */
123
+ class AdminManageApiKeyDTO {
124
+ /**
125
+ * Target user sub (UUID v4)
126
+ */
127
+ sub;
128
+ /**
129
+ * External key identifier (UUID v4). Required for revoke/delete, omitted for list.
130
+ */
131
+ keyId;
132
+ }
133
+ exports.AdminManageApiKeyDTO = AdminManageApiKeyDTO;
134
+ __decorate([
135
+ (0, class_validator_1.IsUUID)('4', { message: 'User sub must be a valid UUID v4' }),
136
+ (0, class_transformer_1.Transform)(({ value }) => (typeof value === 'string' ? value.trim().toLowerCase() : value)),
137
+ __metadata("design:type", String)
138
+ ], AdminManageApiKeyDTO.prototype, "sub", void 0);
139
+ __decorate([
140
+ (0, class_validator_1.IsOptional)(),
141
+ (0, class_validator_1.IsUUID)('4', { message: 'keyId must be a valid UUID v4' }),
142
+ __metadata("design:type", String)
143
+ ], AdminManageApiKeyDTO.prototype, "keyId", void 0);
144
+ //# sourceMappingURL=admin-api-key.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-api-key.dto.js","sourceRoot":"","sources":["../../src/dto/admin-api-key.dto.ts"],"names":[],"mappings":"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"}
@@ -111,7 +111,7 @@ export declare class AdminSignupSocialDTO {
111
111
  *
112
112
  * Validation:
113
113
  * - Min 8 characters
114
- * - Max 128 characters (prevents DoS via bcrypt)
114
+ * - Max 128 characters (prevents DoS via Argon2 hashing)
115
115
  * - Additional policy checks in service layer
116
116
  *
117
117
  * Note: NOT trimmed (passwords can have leading/trailing spaces)
@@ -124,7 +124,7 @@ class AdminSignupSocialDTO {
124
124
  *
125
125
  * Validation:
126
126
  * - Min 8 characters
127
- * - Max 128 characters (prevents DoS via bcrypt)
127
+ * - Max 128 characters (prevents DoS via Argon2 hashing)
128
128
  * - Additional policy checks in service layer
129
129
  *
130
130
  * Note: NOT trimmed (passwords can have leading/trailing spaces)
@@ -56,7 +56,7 @@ export declare class AdminSignupDTO {
56
56
  *
57
57
  * Validation:
58
58
  * - Min 8 characters
59
- * - Max 128 characters (prevents DoS via bcrypt)
59
+ * - Max 128 characters (prevents DoS via Argon2 hashing)
60
60
  * - Additional policy checks in service layer
61
61
  *
62
62
  * Note: NOT trimmed (passwords can have leading/trailing spaces)
@@ -69,7 +69,7 @@ class AdminSignupDTO {
69
69
  *
70
70
  * Validation:
71
71
  * - Min 8 characters
72
- * - Max 128 characters (prevents DoS via bcrypt)
72
+ * - Max 128 characters (prevents DoS via Argon2 hashing)
73
73
  * - Additional policy checks in service layer
74
74
  *
75
75
  * Note: NOT trimmed (passwords can have leading/trailing spaces)
@@ -0,0 +1,153 @@
1
+ /**
2
+ * DTO for creating an API key (user self-service)
3
+ *
4
+ * Security:
5
+ * - Expiry is explicit and mandatory (enforced in the service layer):
6
+ * provide a positive number of days, or `null` for a never-expiring key
7
+ * (only allowed when `apiKeys.allowIndefinite` is true).
8
+ * - Optional per-key IP allowlist restricts which source IPs may use the key.
9
+ *
10
+ * Note: The owning user is derived from the authenticated request, never from the body.
11
+ */
12
+ export declare class CreateApiKeyDTO {
13
+ /**
14
+ * User-friendly label for the key (optional)
15
+ *
16
+ * Validation:
17
+ * - Max 255 characters
18
+ *
19
+ * Sanitization:
20
+ * - Trimmed
21
+ */
22
+ name?: string;
23
+ /**
24
+ * Key expiry in days, or `null` for a key that never expires
25
+ *
26
+ * This field is mandatory at creation. The service rejects the request when it
27
+ * is omitted (`API_KEY_EXPIRY_REQUIRED`), when `null` is used but indefinite keys
28
+ * are disallowed (`API_KEY_INDEFINITE_NOT_ALLOWED`), or when it exceeds the
29
+ * configured maximum (`API_KEY_EXPIRY_TOO_LONG`).
30
+ *
31
+ * Validation:
32
+ * - When provided and not null: positive integer
33
+ */
34
+ expiresInDays?: number | null;
35
+ /**
36
+ * Allowed source IPs / CIDR ranges for this key (optional)
37
+ *
38
+ * When omitted or empty, the key may be used from any IP. Each entry must be a
39
+ * valid IPv4/IPv6 address or CIDR range (validated in the service layer).
40
+ *
41
+ * Validation:
42
+ * - Array of strings, max 100 entries at the DTO layer (per-key cap enforced by config)
43
+ */
44
+ allowedIps?: string[];
45
+ }
46
+ /**
47
+ * DTO for updating an API key (user self-service)
48
+ *
49
+ * Only the label and IP allowlist are mutable. The secret and expiry are immutable —
50
+ * to rotate or extend a key, delete it and create a new one.
51
+ */
52
+ export declare class UpdateApiKeyDTO {
53
+ /**
54
+ * External key identifier (UUID v4)
55
+ */
56
+ keyId: string;
57
+ /**
58
+ * New label for the key (optional)
59
+ */
60
+ name?: string;
61
+ /**
62
+ * Replacement IP allowlist (optional)
63
+ *
64
+ * Pass an empty array to clear restrictions (open to any IP).
65
+ */
66
+ allowedIps?: string[];
67
+ }
68
+ /**
69
+ * DTO for revoking an API key (soft delete)
70
+ */
71
+ export declare class RevokeApiKeyDTO {
72
+ /**
73
+ * External key identifier (UUID v4)
74
+ */
75
+ keyId: string;
76
+ }
77
+ /**
78
+ * DTO for permanently deleting an API key
79
+ */
80
+ export declare class DeleteApiKeyDTO {
81
+ /**
82
+ * External key identifier (UUID v4)
83
+ */
84
+ keyId: string;
85
+ }
86
+ /**
87
+ * Sanitized API key response
88
+ *
89
+ * Never includes the plaintext key or its hash. Returned by list and update operations.
90
+ */
91
+ export declare class ApiKeyResponseDTO {
92
+ /** External key identifier (UUID v4) */
93
+ keyId: string;
94
+ /** User-friendly label */
95
+ name?: string | null;
96
+ /** Last few characters of the key (display hint) */
97
+ lastFour?: string | null;
98
+ /** Allowed source IPs / CIDR ranges (empty/null = any IP) */
99
+ allowedIps?: string[] | null;
100
+ /** Expiry timestamp, or null if the key never expires */
101
+ expiresAt?: Date | null;
102
+ /** Whether the key is active */
103
+ isActive: boolean;
104
+ /** Whether the key was created by an administrator */
105
+ createdByAdmin: boolean;
106
+ /** Last successful use timestamp, or null if never used */
107
+ lastUsedAt?: Date | null;
108
+ /** IP of the last successful use (only when usage IP tracking is enabled) */
109
+ lastUsedIp?: string | null;
110
+ /** Total number of successful authentications with this key */
111
+ usageCount: number;
112
+ /** Creation timestamp */
113
+ createdAt: Date;
114
+ }
115
+ /**
116
+ * Response returned once when a key is created
117
+ *
118
+ * The plaintext `key` is shown only here and never again — the caller must store it securely.
119
+ */
120
+ export declare class CreateApiKeyResponseDTO {
121
+ /**
122
+ * The full plaintext API key (shown once)
123
+ *
124
+ * Security: Never stored in plaintext. Deliver securely to the consumer.
125
+ */
126
+ key: string;
127
+ /**
128
+ * Sanitized metadata for the created key
129
+ */
130
+ apiKey: ApiKeyResponseDTO;
131
+ }
132
+ /**
133
+ * Response for listing API keys
134
+ */
135
+ export declare class ListApiKeysResponseDTO {
136
+ /** The user's API keys (sanitized; never includes secrets) */
137
+ apiKeys: ApiKeyResponseDTO[];
138
+ }
139
+ /**
140
+ * Response for revoking an API key
141
+ */
142
+ export declare class RevokeApiKeyResponseDTO {
143
+ /** Whether the key was revoked */
144
+ success: boolean;
145
+ }
146
+ /**
147
+ * Response for deleting an API key
148
+ */
149
+ export declare class DeleteApiKeyResponseDTO {
150
+ /** Whether the key was deleted */
151
+ success: boolean;
152
+ }
153
+ //# sourceMappingURL=api-key.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key.dto.d.ts","sourceRoot":"","sources":["../../src/dto/api-key.dto.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B;;;;;;;;OAQG;IAKH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;OAUG;IAIH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;;;;;;OAQG;IAKH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IAEH,KAAK,EAAG,MAAM,CAAC;IAEf;;OAEG;IAKH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IAKH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IAEH,KAAK,EAAG,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IAEH,KAAK,EAAG,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,wCAAwC;IACxC,KAAK,EAAG,MAAM,CAAC;IAEf,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,yDAAyD;IACzD,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAExB,gCAAgC;IAChC,QAAQ,EAAG,OAAO,CAAC;IAEnB,sDAAsD;IACtD,cAAc,EAAG,OAAO,CAAC;IAEzB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAEzB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,+DAA+D;IAC/D,UAAU,EAAG,MAAM,CAAC;IAEpB,yBAAyB;IACzB,SAAS,EAAG,IAAI,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC;;;;OAIG;IACH,GAAG,EAAG,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAG,iBAAiB,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,8DAA8D;IAC9D,OAAO,EAAG,iBAAiB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,kCAAkC;IAClC,OAAO,EAAG,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,kCAAkC;IAClC,OAAO,EAAG,OAAO,CAAC;CACnB"}