emilsoftware-utilities 2.0.0-dev.84 → 2.0.0-dev.85

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 (1230) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +373 -0
  3. package/SECURITY.md +66 -0
  4. package/dist/EmilsoftwareModule.d.ts +1 -1
  5. package/dist/EmilsoftwareModule.js +1 -1
  6. package/dist/EmilsoftwareModule.js.map +1 -1
  7. package/dist/Orm.js +19 -19
  8. package/dist/Orm.js.map +1 -1
  9. package/dist/Utilities.d.ts +1 -1
  10. package/dist/Utilities.js.map +1 -1
  11. package/dist/accessi/client/admin/index.d.ts +4 -4
  12. package/dist/accessi/client/admin/index.js +2 -2
  13. package/dist/accessi/client/admin/index.js.map +1 -1
  14. package/dist/accessi/client/createAccessiClient.d.ts +1 -1
  15. package/dist/accessi/client/createAccessiClient.js +1 -1
  16. package/dist/accessi/client/createAccessiClient.js.map +1 -1
  17. package/dist/accessi/client/generated/admin.d.ts +1 -1
  18. package/dist/accessi/client/generated/admin.js +1 -1
  19. package/dist/accessi/client/generated/admin.js.map +1 -1
  20. package/dist/accessi/client/generated/public.d.ts +1 -1
  21. package/dist/accessi/client/generated/public.js +1 -1
  22. package/dist/accessi/client/generated/public.js.map +1 -1
  23. package/dist/accessi/client/generated/service.d.ts +1 -1
  24. package/dist/accessi/client/generated/service.js +1 -1
  25. package/dist/accessi/client/generated/service.js.map +1 -1
  26. package/dist/accessi/client/index.d.ts +7 -7
  27. package/dist/accessi/client/index.js +6 -6
  28. package/dist/accessi/client/index.js.map +1 -1
  29. package/dist/accessi/client/public/index.d.ts +4 -4
  30. package/dist/accessi/client/public/index.js +2 -2
  31. package/dist/accessi/client/public/index.js.map +1 -1
  32. package/dist/accessi/client/service/index.d.ts +4 -4
  33. package/dist/accessi/client/service/index.js +2 -2
  34. package/dist/accessi/client/service/index.js.map +1 -1
  35. package/dist/accessi/contracts/dtos.d.ts +1 -1
  36. package/dist/accessi/contracts/dtos.js +1 -1
  37. package/dist/accessi/contracts/dtos.js.map +1 -1
  38. package/dist/accessi/contracts/index.d.ts +6 -6
  39. package/dist/accessi/contracts/index.js +4 -4
  40. package/dist/accessi/contracts/index.js.map +1 -1
  41. package/dist/accessi/resource-server/core.d.ts +13 -0
  42. package/dist/accessi/resource-server/core.js +17 -0
  43. package/dist/accessi/resource-server/core.js.map +1 -1
  44. package/dist/accessi/resource-server/express.js +1 -1
  45. package/dist/accessi/resource-server/express.js.map +1 -1
  46. package/dist/accessi/resource-server/nest.js +1 -1
  47. package/dist/accessi/resource-server/nest.js.map +1 -1
  48. package/dist/accessi/resource-server/token.js +1 -1
  49. package/dist/accessi/resource-server/token.js.map +1 -1
  50. package/dist/accessi/resource-server/types.d.ts +3 -3
  51. package/dist/accessi/resource-server/types.js.map +1 -1
  52. package/dist/accessi/server/index.d.ts +5 -5
  53. package/dist/accessi/server/index.js +3 -3
  54. package/dist/accessi/server/index.js.map +1 -1
  55. package/dist/accessi/server/standalone.d.ts +4 -4
  56. package/dist/accessi/server/standalone.js +6 -6
  57. package/dist/accessi/server/standalone.js.map +1 -1
  58. package/dist/accessi/server/tenantRouter.js +1 -1
  59. package/dist/accessi/server/tenantRouter.js.map +1 -1
  60. package/dist/accessi/server/tenantStores.d.ts +6 -6
  61. package/dist/accessi/server/tenantStores.js +5 -5
  62. package/dist/accessi/server/tenantStores.js.map +1 -1
  63. package/dist/accessi/server/tenants.d.ts +8 -8
  64. package/dist/accessi/server/tenants.js +1 -1
  65. package/dist/accessi/server/tenants.js.map +1 -1
  66. package/dist/accessi-service/AccessiModule.js +120 -0
  67. package/dist/accessi-service/AccessiModule.js.map +1 -0
  68. package/dist/accessi-service/accessiRuntime.d.ts +45 -0
  69. package/dist/accessi-service/accessiRuntime.js +39 -0
  70. package/dist/accessi-service/accessiRuntime.js.map +1 -0
  71. package/dist/accessi-service/console/accessiFetch.js.map +1 -0
  72. package/dist/accessi-service/console/console.js +4875 -0
  73. package/dist/accessi-service/console/console.js.map +1 -0
  74. package/dist/accessi-service/console/generated/emilsoftware-utilities.js.map +1 -0
  75. package/dist/accessi-service/console/generated/model/abilitazioneMenu.js.map +1 -0
  76. package/dist/accessi-service/console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  77. package/dist/accessi-service/console/generated/model/accessiIntrospectionResultDto.js.map +1 -0
  78. package/dist/accessi-service/console/generated/model/actionResponse.js.map +1 -0
  79. package/dist/accessi-service/console/generated/model/adminBootstrapStatusResponse.js.map +1 -0
  80. package/dist/accessi-service/console/generated/model/adminBootstrapStatusResult.js.map +1 -0
  81. package/dist/accessi-service/console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  82. package/dist/accessi-service/console/generated/model/assignRolesToUserRequest.js.map +1 -0
  83. package/dist/accessi-service/console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  84. package/dist/accessi-service/console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  85. package/dist/accessi-service/console/generated/model/bootstrapAdminRequest.js.map +1 -0
  86. package/dist/accessi-service/console/generated/model/bootstrapAdminResponse.js.map +1 -0
  87. package/dist/accessi-service/console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  88. package/dist/accessi-service/console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  89. package/dist/accessi-service/console/generated/model/consoleEntryExchangeRequest.js.map +1 -0
  90. package/dist/accessi-service/console/generated/model/consoleEntrySessionResponse.js.map +1 -0
  91. package/dist/accessi-service/console/generated/model/consoleEntrySessionResult.js.map +1 -0
  92. package/dist/accessi-service/console/generated/model/consoleEntryTicketResponse.js.map +1 -0
  93. package/dist/accessi-service/console/generated/model/consoleEntryTicketResult.js.map +1 -0
  94. package/dist/accessi-service/console/generated/model/consoleEntryTokenResult.js.map +1 -0
  95. package/dist/accessi-service/console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  96. package/dist/accessi-service/console/generated/model/createFederatedProviderRequest.js.map +1 -0
  97. package/dist/accessi-service/console/generated/model/createFederatedUserRequest.js.map +1 -0
  98. package/dist/accessi-service/console/generated/model/createFilterTypeRequest.js.map +1 -0
  99. package/dist/accessi-service/console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  100. package/dist/accessi-service/console/generated/model/createMenuGroupRequest.js.map +1 -0
  101. package/dist/accessi-service/console/generated/model/createMenuRequest.js.map +1 -0
  102. package/dist/accessi-service/console/generated/model/createMenuTypeRequest.js.map +1 -0
  103. package/dist/accessi-service/console/generated/model/createScopeRequest.js.map +1 -0
  104. package/dist/accessi-service/console/generated/model/createServiceTokenRequest.js.map +1 -0
  105. package/dist/accessi-service/console/generated/model/createServiceTokenResponse.js.map +1 -0
  106. package/dist/accessi-service/console/generated/model/errorResponse.js.map +1 -0
  107. package/dist/accessi-service/console/generated/model/exchangeFederatedIdentityRequest.js.map +1 -0
  108. package/dist/accessi-service/console/generated/model/exportAuditOrder.js.map +1 -0
  109. package/dist/accessi-service/console/generated/model/exportAuditParams.js.map +1 -0
  110. package/dist/accessi-service/console/generated/model/federatedAuthenticationResultDto.js.map +1 -0
  111. package/dist/accessi-service/console/generated/model/federatedExchangeResponse.js.map +1 -0
  112. package/dist/accessi-service/console/generated/model/federatedIdentityListResponse.js.map +1 -0
  113. package/dist/accessi-service/console/generated/model/federatedIdentityResponse.js.map +1 -0
  114. package/dist/accessi-service/console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  115. package/dist/accessi-service/console/generated/model/federatedProviderListResponse.js.map +1 -0
  116. package/dist/accessi-service/console/generated/model/federatedProviderResponse.js.map +1 -0
  117. package/dist/accessi-service/console/generated/model/federatedProviderResponseDto.js.map +1 -0
  118. package/dist/accessi-service/console/generated/model/filtriUtente.js.map +1 -0
  119. package/dist/accessi-service/console/generated/model/getFiltriResponse.js.map +1 -0
  120. package/dist/accessi-service/console/generated/model/getFiltriUtenteParams.js.map +1 -0
  121. package/dist/accessi-service/console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  122. package/dist/accessi-service/console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  123. package/dist/accessi-service/console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  124. package/dist/accessi-service/console/generated/model/getMenuScopesResponse.js.map +1 -0
  125. package/dist/accessi-service/console/generated/model/getMenuTypesResponse.js.map +1 -0
  126. package/dist/accessi-service/console/generated/model/getMenusParams.js.map +1 -0
  127. package/dist/accessi-service/console/generated/model/getMenusResponse.js.map +1 -0
  128. package/dist/accessi-service/console/generated/model/getRolesResponse.js.map +1 -0
  129. package/dist/accessi-service/console/generated/model/getSchemaResponse.js.map +1 -0
  130. package/dist/accessi-service/console/generated/model/getScopesResponse.js.map +1 -0
  131. package/dist/accessi-service/console/generated/model/getServiceTokensParams.js.map +1 -0
  132. package/dist/accessi-service/console/generated/model/getServiceTokensResponse.js.map +1 -0
  133. package/dist/accessi-service/console/generated/model/getUserByTokenRequest.js.map +1 -0
  134. package/dist/accessi-service/console/generated/model/getUserByTokenResponse.js.map +1 -0
  135. package/dist/accessi-service/console/generated/model/getUserRolesAndGrantsParams.js.map +1 -0
  136. package/dist/accessi-service/console/generated/model/getUsersParams.js.map +1 -0
  137. package/dist/accessi-service/console/generated/model/getUsersResponse.js.map +1 -0
  138. package/dist/accessi-service/console/generated/model/getUsersResult.js.map +1 -0
  139. package/dist/accessi-service/console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  140. package/dist/accessi-service/console/generated/model/groupWithMenusEntity.js.map +1 -0
  141. package/dist/accessi-service/console/generated/model/index.js.map +1 -0
  142. package/dist/accessi-service/console/generated/model/introspectAccessiTokenRequest.js.map +1 -0
  143. package/dist/accessi-service/console/generated/model/introspectAccessiTokenResponse.js.map +1 -0
  144. package/dist/accessi-service/console/generated/model/issuedServiceTokenDto.js.map +1 -0
  145. package/dist/accessi-service/console/generated/model/loginAsRequest.js.map +1 -0
  146. package/dist/accessi-service/console/generated/model/loginAsResponse.js.map +1 -0
  147. package/dist/accessi-service/console/generated/model/loginAsResult.js.map +1 -0
  148. package/dist/accessi-service/console/generated/model/loginRequest.js.map +1 -0
  149. package/dist/accessi-service/console/generated/model/loginResponse.js.map +1 -0
  150. package/dist/accessi-service/console/generated/model/loginResult.js.map +1 -0
  151. package/dist/accessi-service/console/generated/model/loginResultExtensionFields.js.map +1 -0
  152. package/dist/accessi-service/console/generated/model/loginResultPasswordRequired.js.map +1 -0
  153. package/dist/accessi-service/console/generated/model/menuEntity.js.map +1 -0
  154. package/dist/accessi-service/console/generated/model/menuTypeEntity.js.map +1 -0
  155. package/dist/accessi-service/console/generated/model/passwordExpiredResponse.js.map +1 -0
  156. package/dist/accessi-service/console/generated/model/permission.js.map +1 -0
  157. package/dist/accessi-service/console/generated/model/publicRegisterRequest.js.map +1 -0
  158. package/dist/accessi-service/console/generated/model/queryAuditOrder.js.map +1 -0
  159. package/dist/accessi-service/console/generated/model/queryAuditParams.js.map +1 -0
  160. package/dist/accessi-service/console/generated/model/refreshTokenRequest.js.map +1 -0
  161. package/dist/accessi-service/console/generated/model/refreshTokenResponse.js.map +1 -0
  162. package/dist/accessi-service/console/generated/model/refreshTokenResult.js.map +1 -0
  163. package/dist/accessi-service/console/generated/model/registerRequest.js.map +1 -0
  164. package/dist/accessi-service/console/generated/model/registerResponse.js.map +1 -0
  165. package/dist/accessi-service/console/generated/model/resendTwoFactorRequest.js.map +1 -0
  166. package/dist/accessi-service/console/generated/model/revokeTokenRequest.js.map +1 -0
  167. package/dist/accessi-service/console/generated/model/role.js.map +1 -0
  168. package/dist/accessi-service/console/generated/model/ruoliMenu.js.map +1 -0
  169. package/dist/accessi-service/console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  170. package/dist/accessi-service/console/generated/model/schemaDdlResult.js.map +1 -0
  171. package/dist/accessi-service/console/generated/model/schemaDdlSection.js.map +1 -0
  172. package/dist/accessi-service/console/generated/model/scopeEntity.js.map +1 -0
  173. package/dist/accessi-service/console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  174. package/dist/accessi-service/console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  175. package/dist/accessi-service/console/generated/model/serviceTokenDto.js.map +1 -0
  176. package/dist/accessi-service/console/generated/model/setMenuScopesRequest.js.map +1 -0
  177. package/dist/accessi-service/console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  178. package/dist/accessi-service/console/generated/model/setScopeMenusRequest.js.map +1 -0
  179. package/dist/accessi-service/console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  180. package/dist/accessi-service/console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  181. package/dist/accessi-service/console/generated/model/setUserPasswordRequest.js.map +1 -0
  182. package/dist/accessi-service/console/generated/model/status.js.map +1 -0
  183. package/dist/accessi-service/console/generated/model/tipoFiltro.js.map +1 -0
  184. package/dist/accessi-service/console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  185. package/dist/accessi-service/console/generated/model/tokenResult.js.map +1 -0
  186. package/dist/accessi-service/console/generated/model/tokenResultType.js.map +1 -0
  187. package/dist/accessi-service/console/generated/model/twoFactorChallengeDto.js.map +1 -0
  188. package/dist/accessi-service/console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  189. package/dist/accessi-service/console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  190. package/dist/accessi-service/console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  191. package/dist/accessi-service/console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  192. package/dist/accessi-service/console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  193. package/dist/accessi-service/console/generated/model/updateFilterTypeRequest.js.map +1 -0
  194. package/dist/accessi-service/console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  195. package/dist/accessi-service/console/generated/model/updateMenuGroupRequest.js.map +1 -0
  196. package/dist/accessi-service/console/generated/model/updateMenuRequest.js.map +1 -0
  197. package/dist/accessi-service/console/generated/model/updateMenuTypeRequest.js.map +1 -0
  198. package/dist/accessi-service/console/generated/model/updateScopeRequest.js.map +1 -0
  199. package/dist/accessi-service/console/generated/model/userDto.js.map +1 -0
  200. package/dist/accessi-service/console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  201. package/dist/accessi-service/console/generated/model/userGrantsDto.js.map +1 -0
  202. package/dist/accessi-service/console/generated/model/userGrantsResponse.js.map +1 -0
  203. package/dist/accessi-service/console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  204. package/dist/accessi-service/console/help.js.map +1 -0
  205. package/dist/accessi-service/console/wiki.js +1533 -0
  206. package/dist/accessi-service/console/wiki.js.map +1 -0
  207. package/dist/accessi-service/controllers/AccessiAuditController.d.ts +16 -0
  208. package/dist/accessi-service/controllers/AccessiAuditController.js +155 -0
  209. package/dist/accessi-service/controllers/AccessiAuditController.js.map +1 -0
  210. package/dist/accessi-service/controllers/AccessiConsoleController.js +169 -0
  211. package/dist/accessi-service/controllers/AccessiConsoleController.js.map +1 -0
  212. package/dist/accessi-service/controllers/AccessiIntrospectionController.d.ts +17 -0
  213. package/dist/accessi-service/controllers/AccessiIntrospectionController.js +102 -0
  214. package/dist/accessi-service/controllers/AccessiIntrospectionController.js.map +1 -0
  215. package/dist/accessi-service/controllers/AuthController.d.ts +24 -0
  216. package/dist/accessi-service/controllers/AuthController.js +564 -0
  217. package/dist/accessi-service/controllers/AuthController.js.map +1 -0
  218. package/dist/accessi-service/controllers/ConfiguratorController.d.ts +9 -0
  219. package/dist/accessi-service/controllers/ConfiguratorController.js +136 -0
  220. package/dist/accessi-service/controllers/ConfiguratorController.js.map +1 -0
  221. package/dist/accessi-service/controllers/ConsoleEntryController.d.ts +16 -0
  222. package/dist/accessi-service/controllers/ConsoleEntryController.js +159 -0
  223. package/dist/accessi-service/controllers/ConsoleEntryController.js.map +1 -0
  224. package/dist/accessi-service/controllers/EmailController.d.ts +11 -0
  225. package/dist/accessi-service/controllers/EmailController.js +112 -0
  226. package/dist/accessi-service/controllers/EmailController.js.map +1 -0
  227. package/dist/accessi-service/controllers/FiltriController.d.ts +20 -0
  228. package/dist/accessi-service/controllers/FiltriController.js +303 -0
  229. package/dist/accessi-service/controllers/FiltriController.js.map +1 -0
  230. package/dist/accessi-service/controllers/PermissionController.d.ts +45 -0
  231. package/dist/accessi-service/controllers/PermissionController.js +862 -0
  232. package/dist/accessi-service/controllers/PermissionController.js.map +1 -0
  233. package/dist/accessi-service/controllers/SchemaController.d.ts +9 -0
  234. package/dist/accessi-service/controllers/SchemaController.js +79 -0
  235. package/dist/accessi-service/controllers/SchemaController.js.map +1 -0
  236. package/dist/accessi-service/controllers/ServiceTokenController.d.ts +23 -0
  237. package/dist/accessi-service/controllers/ServiceTokenController.js +176 -0
  238. package/dist/accessi-service/controllers/ServiceTokenController.js.map +1 -0
  239. package/dist/accessi-service/controllers/UserController.d.ts +39 -0
  240. package/dist/accessi-service/controllers/UserController.js +724 -0
  241. package/dist/accessi-service/controllers/UserController.js.map +1 -0
  242. package/dist/accessi-service/database-updates/AccessiCatalogMigrator.js.map +1 -0
  243. package/dist/accessi-service/database-updates/AccessiDatabaseUpdater.js.map +1 -0
  244. package/dist/accessi-service/database-updates/accessiOptionsFromEnv.js +347 -0
  245. package/dist/accessi-service/database-updates/accessiOptionsFromEnv.js.map +1 -0
  246. package/dist/accessi-service/database-updates/accessiSchema.js.map +1 -0
  247. package/dist/accessi-service/database-updates/menuScopeSeed.js.map +1 -0
  248. package/dist/accessi-service/database-updates/menuScopeSeeder.js.map +1 -0
  249. package/dist/accessi-service/database-updates/optionalColumns.js.map +1 -0
  250. package/dist/accessi-service/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  251. package/dist/accessi-service/database-updates/runAccessiDbUpdate.js.map +1 -0
  252. package/dist/accessi-service/dtos/Abilitazione.js.map +1 -0
  253. package/dist/accessi-service/dtos/AbilitazioneMenu.js.map +1 -0
  254. package/dist/accessi-service/dtos/AdminBootstrapDtos.js.map +1 -0
  255. package/dist/accessi-service/dtos/AssignPermissionsToUserRequest.js.map +1 -0
  256. package/dist/accessi-service/dtos/AssignRolesToUserRequest.js.map +1 -0
  257. package/dist/accessi-service/dtos/AuditDtos.js.map +1 -0
  258. package/dist/accessi-service/dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  259. package/dist/accessi-service/dtos/BaseResponse.js.map +1 -0
  260. package/dist/accessi-service/dtos/CatalogDtos.js.map +1 -0
  261. package/dist/accessi-service/dtos/ConfirmResetPasswordRequest.js.map +1 -0
  262. package/dist/accessi-service/dtos/ConsoleEntryDtos.js.map +1 -0
  263. package/dist/accessi-service/dtos/FederatedExchangeDtos.js.map +1 -0
  264. package/dist/accessi-service/dtos/FederatedIdentityDtos.js.map +1 -0
  265. package/dist/accessi-service/dtos/FiltriUtente.js.map +1 -0
  266. package/dist/accessi-service/dtos/GetGroupsWithMenusResponse.js.map +1 -0
  267. package/dist/accessi-service/dtos/GetMenusResponse.js.map +1 -0
  268. package/dist/accessi-service/dtos/GetRolesResponse.js.map +1 -0
  269. package/dist/accessi-service/dtos/GetUserByTokenRequest.js.map +1 -0
  270. package/dist/accessi-service/dtos/GetUserByTokenResponse.js.map +1 -0
  271. package/dist/accessi-service/dtos/GetUsersResponse.js.map +1 -0
  272. package/dist/accessi-service/dtos/IntrospectionDtos.js.map +1 -0
  273. package/dist/accessi-service/dtos/LoginAsDtos.js.map +1 -0
  274. package/dist/accessi-service/dtos/LoginRequest.js.map +1 -0
  275. package/dist/accessi-service/dtos/LoginResponse.js.map +1 -0
  276. package/dist/accessi-service/dtos/MenuItem.js.map +1 -0
  277. package/dist/accessi-service/dtos/Permission.js.map +1 -0
  278. package/dist/accessi-service/dtos/PublicRegisterRequest.js.map +1 -0
  279. package/dist/accessi-service/dtos/RefreshTokenDtos.js.map +1 -0
  280. package/dist/accessi-service/dtos/RegisterRequest.js.map +1 -0
  281. package/dist/accessi-service/dtos/RegisterResponse.js.map +1 -0
  282. package/dist/accessi-service/dtos/RevokeTokenRequest.js.map +1 -0
  283. package/dist/accessi-service/dtos/Role.js.map +1 -0
  284. package/dist/accessi-service/dtos/RuoliMenu.js.map +1 -0
  285. package/dist/accessi-service/dtos/SchemaDtos.js.map +1 -0
  286. package/dist/accessi-service/dtos/ScopeDtos.js.map +1 -0
  287. package/dist/accessi-service/dtos/SendResetPasswordEmailRequest.js.map +1 -0
  288. package/dist/accessi-service/dtos/ServiceToken.js.map +1 -0
  289. package/dist/accessi-service/dtos/SetStatoRegistrazione.js.map +1 -0
  290. package/dist/accessi-service/dtos/SetUserPasswordRequest.js.map +1 -0
  291. package/dist/accessi-service/dtos/StatoRegistrazione.js.map +1 -0
  292. package/dist/accessi-service/dtos/TipoAbilitazione.js.map +1 -0
  293. package/dist/accessi-service/dtos/TipoFiltro.js.map +1 -0
  294. package/dist/accessi-service/dtos/TokenResult.js.map +1 -0
  295. package/dist/accessi-service/dtos/TwoFactorDtos.js.map +1 -0
  296. package/dist/accessi-service/dtos/UpdateEnabledStatusRequest.js.map +1 -0
  297. package/dist/accessi-service/dtos/UserDto.js.map +1 -0
  298. package/dist/accessi-service/dtos/UserGrantsDto.js.map +1 -0
  299. package/dist/accessi-service/dtos/UserGrantsResponse.js.map +1 -0
  300. package/dist/accessi-service/dtos/index.js.map +1 -0
  301. package/dist/accessi-service/federated-auth/FederatedAuthController.d.ts +33 -0
  302. package/dist/accessi-service/federated-auth/FederatedAuthController.js +373 -0
  303. package/dist/accessi-service/federated-auth/FederatedAuthController.js.map +1 -0
  304. package/dist/accessi-service/federated-auth/FederatedAuthExchangeController.d.ts +15 -0
  305. package/dist/accessi-service/federated-auth/FederatedAuthExchangeController.js +85 -0
  306. package/dist/accessi-service/federated-auth/FederatedAuthExchangeController.js.map +1 -0
  307. package/dist/accessi-service/federated-auth/FederatedAuthService.d.ts +102 -0
  308. package/dist/accessi-service/federated-auth/FederatedAuthService.js +472 -0
  309. package/dist/accessi-service/federated-auth/FederatedAuthService.js.map +1 -0
  310. package/dist/accessi-service/federated-auth/FederatedAuthTypes.d.ts +53 -0
  311. package/dist/accessi-service/federated-auth/FederatedAuthTypes.js.map +1 -0
  312. package/dist/accessi-service/health/nest.js.map +1 -0
  313. package/dist/accessi-service/health/readiness.js.map +1 -0
  314. package/dist/accessi-service/index.d.ts +88 -0
  315. package/dist/accessi-service/index.js +304 -0
  316. package/dist/accessi-service/index.js.map +1 -0
  317. package/dist/accessi-service/jwt/JwtSimpleGuard.d.ts +9 -0
  318. package/dist/accessi-service/jwt/JwtSimpleGuard.js +88 -0
  319. package/dist/accessi-service/jwt/JwtSimpleGuard.js.map +1 -0
  320. package/dist/accessi-service/middleware/accessiRequirements.js.map +1 -0
  321. package/dist/accessi-service/middleware/authenticateGen.d.ts +32 -0
  322. package/dist/accessi-service/middleware/authenticateGen.js +315 -0
  323. package/dist/accessi-service/middleware/authenticateGen.js.map +1 -0
  324. package/dist/accessi-service/observability/metrics.js.map +1 -0
  325. package/dist/accessi-service/observability/redisMetrics.js.map +1 -0
  326. package/dist/accessi-service/security/AccessiHttpExceptionFilter.js.map +1 -0
  327. package/dist/accessi-service/security/accessControl.js.map +1 -0
  328. package/dist/accessi-service/security/accessTokenRevocation.js.map +1 -0
  329. package/dist/accessi-service/security/accessiValidation.js.map +1 -0
  330. package/dist/accessi-service/security/adminBootstrap.js.map +1 -0
  331. package/dist/accessi-service/security/audit.js.map +1 -0
  332. package/dist/accessi-service/security/auditSinks.js.map +1 -0
  333. package/dist/accessi-service/security/authCookies.js.map +1 -0
  334. package/dist/accessi-service/security/authenticatedToken.d.ts +31 -0
  335. package/dist/accessi-service/security/authenticatedToken.js +79 -0
  336. package/dist/accessi-service/security/authenticatedToken.js.map +1 -0
  337. package/dist/accessi-service/security/consoleEntry.js.map +1 -0
  338. package/dist/accessi-service/security/edgeRateLimit.js.map +1 -0
  339. package/dist/accessi-service/security/emailConfiguration.js.map +1 -0
  340. package/dist/accessi-service/security/jwks.js.map +1 -0
  341. package/dist/accessi-service/security/jwksBootstrap.js.map +1 -0
  342. package/dist/accessi-service/security/jwtTokenOptions.js.map +1 -0
  343. package/dist/accessi-service/security/loginAs.js.map +1 -0
  344. package/dist/accessi-service/security/passwordPolicy.js.map +1 -0
  345. package/dist/accessi-service/security/passwordResetToken.js.map +1 -0
  346. package/dist/accessi-service/security/publicAuthRateLimit.js.map +1 -0
  347. package/dist/accessi-service/security/rateLimitStore.js.map +1 -0
  348. package/dist/accessi-service/security/refreshTokenRotation.js.map +1 -0
  349. package/dist/accessi-service/security/securityHeaders.js.map +1 -0
  350. package/dist/accessi-service/security/serviceTokenGuard.d.ts +27 -0
  351. package/dist/accessi-service/security/serviceTokenGuard.js +90 -0
  352. package/dist/accessi-service/security/serviceTokenGuard.js.map +1 -0
  353. package/dist/accessi-service/security/serviceTokenRateLimit.js.map +1 -0
  354. package/dist/accessi-service/security/sessionRevocation.js.map +1 -0
  355. package/dist/accessi-service/security/validateOptions.js.map +1 -0
  356. package/dist/accessi-service/services/admin-bootstrap-service/AdminBootstrapService.d.ts +33 -0
  357. package/dist/accessi-service/services/admin-bootstrap-service/AdminBootstrapService.js +106 -0
  358. package/dist/accessi-service/services/admin-bootstrap-service/AdminBootstrapService.js.map +1 -0
  359. package/dist/accessi-service/services/auth-service/AuthService.d.ts +127 -0
  360. package/dist/accessi-service/services/auth-service/AuthService.js +734 -0
  361. package/dist/accessi-service/services/auth-service/AuthService.js.map +1 -0
  362. package/dist/accessi-service/services/configurator-service/ConfiguratorService.js.map +1 -0
  363. package/dist/accessi-service/services/email-service/EmailService.js +439 -0
  364. package/dist/accessi-service/services/email-service/EmailService.js.map +1 -0
  365. package/dist/accessi-service/services/filtri-service/FiltriService.d.ts +26 -0
  366. package/dist/accessi-service/services/filtri-service/FiltriService.js +203 -0
  367. package/dist/accessi-service/services/filtri-service/FiltriService.js.map +1 -0
  368. package/dist/accessi-service/services/permission-service/PermissionService.d.ts +126 -0
  369. package/dist/accessi-service/services/permission-service/PermissionService.js +944 -0
  370. package/dist/accessi-service/services/permission-service/PermissionService.js.map +1 -0
  371. package/dist/accessi-service/services/schema-export-service/SchemaExportService.js.map +1 -0
  372. package/dist/accessi-service/services/service-token-service/ServiceTokenService.js.map +1 -0
  373. package/dist/accessi-service/services/two-factor-service/TwoFactorService.d.ts +27 -0
  374. package/dist/accessi-service/services/two-factor-service/TwoFactorService.js +175 -0
  375. package/dist/accessi-service/services/two-factor-service/TwoFactorService.js.map +1 -0
  376. package/dist/accessi-service/services/user-service/UserService.d.ts +112 -0
  377. package/dist/accessi-service/services/user-service/UserService.js +837 -0
  378. package/dist/accessi-service/services/user-service/UserService.js.map +1 -0
  379. package/dist/accessi-service/startupLog.js.map +1 -0
  380. package/dist/accessi-service/tenancy/tenantContext.js.map +1 -0
  381. package/dist/allegati-module/AllegatiModule.js +2 -2
  382. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  383. package/dist/allegati-module/controllers/AllegatiController.d.ts +36 -0
  384. package/dist/allegati-module/controllers/AllegatiController.js +230 -0
  385. package/dist/allegati-module/controllers/AllegatiController.js.map +1 -0
  386. package/dist/allegati-module/dtos/AllegatoDto.js.map +1 -0
  387. package/dist/allegati-module/dtos/BaseResponse.js.map +1 -0
  388. package/dist/allegati-module/dtos/UploadSingleFileRequest.js.map +1 -0
  389. package/dist/allegati-module/dtos/index.js.map +1 -0
  390. package/dist/allegati-module/dtos/responses/DownloadAllegatoResponseDto.js.map +1 -0
  391. package/dist/allegati-module/dtos/responses/GetListResponse.js.map +1 -0
  392. package/dist/allegati-module/dtos/responses/UploadAllegatoResponseDto.js.map +1 -0
  393. package/dist/allegati-module/index.d.ts +1 -1
  394. package/dist/allegati-module/index.js +1 -1
  395. package/dist/allegati-module/index.js.map +1 -1
  396. package/dist/allegati-module/services/allegati-service/AllegatiService.d.ts +61 -0
  397. package/dist/allegati-module/services/allegati-service/AllegatiService.js.map +1 -0
  398. package/dist/emilsoftware-utilities-2.0.0-dev.85.tgz +0 -0
  399. package/dist/firebirdCompat.js +269 -0
  400. package/dist/firebirdCompat.js.map +1 -0
  401. package/dist/index.d.ts +3 -3
  402. package/dist/index.js +3 -3
  403. package/dist/index.js.map +1 -1
  404. package/dist/initEmilsoftwareModule.js +9 -9
  405. package/dist/initEmilsoftwareModule.js.map +1 -1
  406. package/dist/scripts/generateAccessiOpenApi.js +2 -2
  407. package/dist/scripts/generateAccessiOpenApi.js.map +1 -1
  408. package/dist/scripts/generateAccessiWiki.js +6 -4
  409. package/dist/scripts/generateAccessiWiki.js.map +1 -1
  410. package/docs/README.md +116 -0
  411. package/docs/audit.md +4 -0
  412. package/docs/auth-cookies.md +4 -0
  413. package/docs/conventions.md +86 -0
  414. package/docs/gateway-rate-limit.md +3 -0
  415. package/docs/import-migration.md +12 -6
  416. package/docs/jwt-key-rotation.md +3 -0
  417. package/docs/metrics.md +3 -0
  418. package/docs/multi-tenancy.md +6 -0
  419. package/docs/proxy-ip.md +8 -0
  420. package/docs/quickstart-frontend.md +217 -0
  421. package/docs/quickstart-resource-server.md +177 -0
  422. package/docs/quickstart-service.md +214 -0
  423. package/docs/redis-load-testing.md +4 -0
  424. package/docs/security-headers.md +3 -0
  425. package/docs/standalone-service.md +180 -54
  426. package/integration-prompt.md +38 -14
  427. package/package.json +24 -19
  428. package/README.MD +0 -323
  429. package/dist/accessi-module/AccessiModule.js +0 -120
  430. package/dist/accessi-module/AccessiModule.js.map +0 -1
  431. package/dist/accessi-module/Console/accessiFetch.js.map +0 -1
  432. package/dist/accessi-module/Console/console.js +0 -4173
  433. package/dist/accessi-module/Console/console.js.map +0 -1
  434. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +0 -1
  435. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +0 -1
  436. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +0 -1
  437. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js.map +0 -1
  438. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +0 -1
  439. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js.map +0 -1
  440. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js.map +0 -1
  441. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +0 -1
  442. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +0 -1
  443. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +0 -1
  444. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +0 -1
  445. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +0 -1
  446. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +0 -1
  447. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +0 -1
  448. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +0 -1
  449. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js.map +0 -1
  450. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js.map +0 -1
  451. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js.map +0 -1
  452. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js.map +0 -1
  453. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js.map +0 -1
  454. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js.map +0 -1
  455. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +0 -1
  456. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +0 -1
  457. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +0 -1
  458. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +0 -1
  459. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +0 -1
  460. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +0 -1
  461. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +0 -1
  462. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +0 -1
  463. package/dist/accessi-module/Console/generated/model/createScopeRequest.js.map +0 -1
  464. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +0 -1
  465. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +0 -1
  466. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +0 -1
  467. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js.map +0 -1
  468. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js.map +0 -1
  469. package/dist/accessi-module/Console/generated/model/exportAuditParams.js.map +0 -1
  470. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js.map +0 -1
  471. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js.map +0 -1
  472. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +0 -1
  473. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +0 -1
  474. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +0 -1
  475. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +0 -1
  476. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +0 -1
  477. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +0 -1
  478. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +0 -1
  479. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +0 -1
  480. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +0 -1
  481. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +0 -1
  482. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +0 -1
  483. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +0 -1
  484. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js.map +0 -1
  485. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +0 -1
  486. package/dist/accessi-module/Console/generated/model/getMenusParams.js.map +0 -1
  487. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +0 -1
  488. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +0 -1
  489. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +0 -1
  490. package/dist/accessi-module/Console/generated/model/getScopesResponse.js.map +0 -1
  491. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +0 -1
  492. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +0 -1
  493. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +0 -1
  494. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +0 -1
  495. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js.map +0 -1
  496. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +0 -1
  497. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +0 -1
  498. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +0 -1
  499. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +0 -1
  500. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +0 -1
  501. package/dist/accessi-module/Console/generated/model/index.js.map +0 -1
  502. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js.map +0 -1
  503. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js.map +0 -1
  504. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +0 -1
  505. package/dist/accessi-module/Console/generated/model/loginAsRequest.js.map +0 -1
  506. package/dist/accessi-module/Console/generated/model/loginAsResponse.js.map +0 -1
  507. package/dist/accessi-module/Console/generated/model/loginAsResult.js.map +0 -1
  508. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +0 -1
  509. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +0 -1
  510. package/dist/accessi-module/Console/generated/model/loginResult.js.map +0 -1
  511. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +0 -1
  512. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +0 -1
  513. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +0 -1
  514. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +0 -1
  515. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +0 -1
  516. package/dist/accessi-module/Console/generated/model/permission.js.map +0 -1
  517. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +0 -1
  518. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js.map +0 -1
  519. package/dist/accessi-module/Console/generated/model/queryAuditParams.js.map +0 -1
  520. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js.map +0 -1
  521. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js.map +0 -1
  522. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js.map +0 -1
  523. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +0 -1
  524. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +0 -1
  525. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +0 -1
  526. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js.map +0 -1
  527. package/dist/accessi-module/Console/generated/model/role.js.map +0 -1
  528. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +0 -1
  529. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +0 -1
  530. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +0 -1
  531. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +0 -1
  532. package/dist/accessi-module/Console/generated/model/scopeEntity.js.map +0 -1
  533. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +0 -1
  534. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +0 -1
  535. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +0 -1
  536. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js.map +0 -1
  537. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +0 -1
  538. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js.map +0 -1
  539. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +0 -1
  540. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +0 -1
  541. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js.map +0 -1
  542. package/dist/accessi-module/Console/generated/model/status.js.map +0 -1
  543. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +0 -1
  544. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +0 -1
  545. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +0 -1
  546. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +0 -1
  547. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +0 -1
  548. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +0 -1
  549. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +0 -1
  550. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +0 -1
  551. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +0 -1
  552. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +0 -1
  553. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +0 -1
  554. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +0 -1
  555. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +0 -1
  556. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +0 -1
  557. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +0 -1
  558. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js.map +0 -1
  559. package/dist/accessi-module/Console/generated/model/userDto.js.map +0 -1
  560. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +0 -1
  561. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +0 -1
  562. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +0 -1
  563. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +0 -1
  564. package/dist/accessi-module/Console/help.js.map +0 -1
  565. package/dist/accessi-module/Console/wiki.js +0 -867
  566. package/dist/accessi-module/Console/wiki.js.map +0 -1
  567. package/dist/accessi-module/Controllers/AccessiAuditController.d.ts +0 -16
  568. package/dist/accessi-module/Controllers/AccessiAuditController.js +0 -155
  569. package/dist/accessi-module/Controllers/AccessiAuditController.js.map +0 -1
  570. package/dist/accessi-module/Controllers/AccessiConsoleController.js +0 -169
  571. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +0 -1
  572. package/dist/accessi-module/Controllers/AccessiIntrospectionController.d.ts +0 -17
  573. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +0 -102
  574. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +0 -1
  575. package/dist/accessi-module/Controllers/AuthController.d.ts +0 -24
  576. package/dist/accessi-module/Controllers/AuthController.js +0 -564
  577. package/dist/accessi-module/Controllers/AuthController.js.map +0 -1
  578. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +0 -9
  579. package/dist/accessi-module/Controllers/ConfiguratorController.js +0 -136
  580. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +0 -1
  581. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +0 -16
  582. package/dist/accessi-module/Controllers/ConsoleEntryController.js +0 -159
  583. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +0 -1
  584. package/dist/accessi-module/Controllers/EmailController.d.ts +0 -11
  585. package/dist/accessi-module/Controllers/EmailController.js +0 -112
  586. package/dist/accessi-module/Controllers/EmailController.js.map +0 -1
  587. package/dist/accessi-module/Controllers/FiltriController.d.ts +0 -20
  588. package/dist/accessi-module/Controllers/FiltriController.js +0 -303
  589. package/dist/accessi-module/Controllers/FiltriController.js.map +0 -1
  590. package/dist/accessi-module/Controllers/PermissionController.d.ts +0 -45
  591. package/dist/accessi-module/Controllers/PermissionController.js +0 -862
  592. package/dist/accessi-module/Controllers/PermissionController.js.map +0 -1
  593. package/dist/accessi-module/Controllers/SchemaController.d.ts +0 -9
  594. package/dist/accessi-module/Controllers/SchemaController.js +0 -79
  595. package/dist/accessi-module/Controllers/SchemaController.js.map +0 -1
  596. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +0 -23
  597. package/dist/accessi-module/Controllers/ServiceTokenController.js +0 -176
  598. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +0 -1
  599. package/dist/accessi-module/Controllers/UserController.d.ts +0 -39
  600. package/dist/accessi-module/Controllers/UserController.js +0 -724
  601. package/dist/accessi-module/Controllers/UserController.js.map +0 -1
  602. package/dist/accessi-module/Dtos/Abilitazione.js.map +0 -1
  603. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +0 -1
  604. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +0 -1
  605. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +0 -1
  606. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +0 -1
  607. package/dist/accessi-module/Dtos/AuditDtos.js.map +0 -1
  608. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +0 -1
  609. package/dist/accessi-module/Dtos/BaseResponse.js.map +0 -1
  610. package/dist/accessi-module/Dtos/CatalogDtos.js.map +0 -1
  611. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +0 -1
  612. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js.map +0 -1
  613. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js.map +0 -1
  614. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +0 -1
  615. package/dist/accessi-module/Dtos/FiltriUtente.js.map +0 -1
  616. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +0 -1
  617. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +0 -1
  618. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +0 -1
  619. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +0 -1
  620. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +0 -1
  621. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +0 -1
  622. package/dist/accessi-module/Dtos/IntrospectionDtos.js.map +0 -1
  623. package/dist/accessi-module/Dtos/LoginAsDtos.js.map +0 -1
  624. package/dist/accessi-module/Dtos/LoginRequest.js.map +0 -1
  625. package/dist/accessi-module/Dtos/LoginResponse.js.map +0 -1
  626. package/dist/accessi-module/Dtos/MenuItem.js.map +0 -1
  627. package/dist/accessi-module/Dtos/Permission.js.map +0 -1
  628. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +0 -1
  629. package/dist/accessi-module/Dtos/RefreshTokenDtos.js.map +0 -1
  630. package/dist/accessi-module/Dtos/RegisterRequest.js.map +0 -1
  631. package/dist/accessi-module/Dtos/RegisterResponse.js.map +0 -1
  632. package/dist/accessi-module/Dtos/RevokeTokenRequest.js.map +0 -1
  633. package/dist/accessi-module/Dtos/Role.js.map +0 -1
  634. package/dist/accessi-module/Dtos/RuoliMenu.js.map +0 -1
  635. package/dist/accessi-module/Dtos/SchemaDtos.js.map +0 -1
  636. package/dist/accessi-module/Dtos/ScopeDtos.js.map +0 -1
  637. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +0 -1
  638. package/dist/accessi-module/Dtos/ServiceToken.js.map +0 -1
  639. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +0 -1
  640. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js.map +0 -1
  641. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +0 -1
  642. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +0 -1
  643. package/dist/accessi-module/Dtos/TipoFiltro.js.map +0 -1
  644. package/dist/accessi-module/Dtos/TokenResult.js.map +0 -1
  645. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +0 -1
  646. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +0 -1
  647. package/dist/accessi-module/Dtos/UserDto.js.map +0 -1
  648. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +0 -1
  649. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +0 -1
  650. package/dist/accessi-module/Dtos/index.js.map +0 -1
  651. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +0 -33
  652. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +0 -106
  653. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +0 -1
  654. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +0 -127
  655. package/dist/accessi-module/Services/AuthService/AuthService.js +0 -734
  656. package/dist/accessi-module/Services/AuthService/AuthService.js.map +0 -1
  657. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +0 -1
  658. package/dist/accessi-module/Services/EmailService/EmailService.js +0 -439
  659. package/dist/accessi-module/Services/EmailService/EmailService.js.map +0 -1
  660. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +0 -26
  661. package/dist/accessi-module/Services/FiltriService/FiltriService.js +0 -203
  662. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +0 -1
  663. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +0 -126
  664. package/dist/accessi-module/Services/PermissionService/PermissionService.js +0 -944
  665. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +0 -1
  666. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +0 -1
  667. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +0 -1
  668. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +0 -27
  669. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +0 -175
  670. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +0 -1
  671. package/dist/accessi-module/Services/UserService/UserService.d.ts +0 -112
  672. package/dist/accessi-module/Services/UserService/UserService.js +0 -837
  673. package/dist/accessi-module/Services/UserService/UserService.js.map +0 -1
  674. package/dist/accessi-module/accessiRuntime.d.ts +0 -45
  675. package/dist/accessi-module/accessiRuntime.js +0 -39
  676. package/dist/accessi-module/accessiRuntime.js.map +0 -1
  677. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +0 -1
  678. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +0 -1
  679. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +0 -134
  680. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +0 -1
  681. package/dist/accessi-module/database-updates/accessiSchema.js.map +0 -1
  682. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +0 -1
  683. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +0 -1
  684. package/dist/accessi-module/database-updates/optionalColumns.js.map +0 -1
  685. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +0 -1
  686. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +0 -1
  687. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +0 -33
  688. package/dist/accessi-module/federated-auth/FederatedAuthController.js +0 -373
  689. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +0 -1
  690. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.d.ts +0 -15
  691. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js +0 -85
  692. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js.map +0 -1
  693. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +0 -102
  694. package/dist/accessi-module/federated-auth/FederatedAuthService.js +0 -472
  695. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +0 -1
  696. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +0 -53
  697. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +0 -1
  698. package/dist/accessi-module/health/nest.js.map +0 -1
  699. package/dist/accessi-module/health/readiness.js.map +0 -1
  700. package/dist/accessi-module/index.d.ts +0 -88
  701. package/dist/accessi-module/index.js +0 -304
  702. package/dist/accessi-module/index.js.map +0 -1
  703. package/dist/accessi-module/jwt/jwt.strategy.d.ts +0 -9
  704. package/dist/accessi-module/jwt/jwt.strategy.js +0 -88
  705. package/dist/accessi-module/jwt/jwt.strategy.js.map +0 -1
  706. package/dist/accessi-module/middleware/accessiRequirements.js.map +0 -1
  707. package/dist/accessi-module/middleware/authenticateGen.d.ts +0 -32
  708. package/dist/accessi-module/middleware/authenticateGen.js +0 -315
  709. package/dist/accessi-module/middleware/authenticateGen.js.map +0 -1
  710. package/dist/accessi-module/observability/metrics.js.map +0 -1
  711. package/dist/accessi-module/observability/redisMetrics.js.map +0 -1
  712. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +0 -1
  713. package/dist/accessi-module/security/accessControl.js.map +0 -1
  714. package/dist/accessi-module/security/accessTokenRevocation.js.map +0 -1
  715. package/dist/accessi-module/security/accessiValidation.js.map +0 -1
  716. package/dist/accessi-module/security/adminBootstrap.js.map +0 -1
  717. package/dist/accessi-module/security/audit.js.map +0 -1
  718. package/dist/accessi-module/security/auditSinks.js.map +0 -1
  719. package/dist/accessi-module/security/authCookies.js.map +0 -1
  720. package/dist/accessi-module/security/authenticatedToken.d.ts +0 -31
  721. package/dist/accessi-module/security/authenticatedToken.js +0 -79
  722. package/dist/accessi-module/security/authenticatedToken.js.map +0 -1
  723. package/dist/accessi-module/security/consoleEntry.js.map +0 -1
  724. package/dist/accessi-module/security/edgeRateLimit.js.map +0 -1
  725. package/dist/accessi-module/security/emailConfiguration.js.map +0 -1
  726. package/dist/accessi-module/security/jwks.js.map +0 -1
  727. package/dist/accessi-module/security/jwksBootstrap.js.map +0 -1
  728. package/dist/accessi-module/security/jwtTokenOptions.js.map +0 -1
  729. package/dist/accessi-module/security/loginAs.js.map +0 -1
  730. package/dist/accessi-module/security/passwordPolicy.js.map +0 -1
  731. package/dist/accessi-module/security/passwordResetToken.js.map +0 -1
  732. package/dist/accessi-module/security/publicAuthRateLimit.js.map +0 -1
  733. package/dist/accessi-module/security/rateLimitStore.js.map +0 -1
  734. package/dist/accessi-module/security/refreshTokenRotation.js.map +0 -1
  735. package/dist/accessi-module/security/securityHeaders.js.map +0 -1
  736. package/dist/accessi-module/security/serviceTokenGuard.d.ts +0 -27
  737. package/dist/accessi-module/security/serviceTokenGuard.js +0 -90
  738. package/dist/accessi-module/security/serviceTokenGuard.js.map +0 -1
  739. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +0 -1
  740. package/dist/accessi-module/security/sessionRevocation.js.map +0 -1
  741. package/dist/accessi-module/security/validateOptions.js.map +0 -1
  742. package/dist/accessi-module/startupLog.js.map +0 -1
  743. package/dist/accessi-module/tenancy/tenantContext.js.map +0 -1
  744. package/dist/allegati-module/Controllers/AllegatiController.d.ts +0 -36
  745. package/dist/allegati-module/Controllers/AllegatiController.js +0 -230
  746. package/dist/allegati-module/Controllers/AllegatiController.js.map +0 -1
  747. package/dist/allegati-module/Dtos/AllegatoDto.js.map +0 -1
  748. package/dist/allegati-module/Dtos/BaseResponse.js.map +0 -1
  749. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +0 -1
  750. package/dist/allegati-module/Dtos/index.js.map +0 -1
  751. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +0 -1
  752. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +0 -1
  753. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +0 -1
  754. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +0 -61
  755. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +0 -1
  756. package/dist/emilsoftware-utilities-2.0.0-dev.84.tgz +0 -0
  757. package/dist/firebird-compat.js +0 -269
  758. package/dist/firebird-compat.js.map +0 -1
  759. /package/dist/{accessi-module → accessi-service}/AccessiModule.d.ts +0 -0
  760. /package/dist/{accessi-module/Console → accessi-service/console}/accessiFetch.d.ts +0 -0
  761. /package/dist/{accessi-module/Console → accessi-service/console}/accessiFetch.js +0 -0
  762. /package/dist/{accessi-module/Console → accessi-service/console}/console.css +0 -0
  763. /package/dist/{accessi-module/Console → accessi-service/console}/console.d.ts +0 -0
  764. /package/dist/{accessi-module/Console → accessi-service/console}/generated/emilsoftware-utilities.d.ts +0 -0
  765. /package/dist/{accessi-module/Console → accessi-service/console}/generated/emilsoftware-utilities.js +0 -0
  766. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenu.d.ts +0 -0
  767. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenu.js +0 -0
  768. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +0 -0
  769. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenuTipoAbilitazione.js +0 -0
  770. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/accessiIntrospectionResultDto.d.ts +0 -0
  771. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/accessiIntrospectionResultDto.js +0 -0
  772. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/actionResponse.d.ts +0 -0
  773. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/actionResponse.js +0 -0
  774. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResponse.d.ts +0 -0
  775. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResponse.js +0 -0
  776. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResult.d.ts +0 -0
  777. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResult.js +0 -0
  778. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignPermissionsToUserRequest.d.ts +0 -0
  779. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignPermissionsToUserRequest.js +0 -0
  780. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignRolesToUserRequest.d.ts +0 -0
  781. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignRolesToUserRequest.js +0 -0
  782. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedTokenPayloadDto.d.ts +0 -0
  783. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedTokenPayloadDto.js +0 -0
  784. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedUserPayloadDto.d.ts +0 -0
  785. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedUserPayloadDto.js +0 -0
  786. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminRequest.d.ts +0 -0
  787. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminRequest.js +0 -0
  788. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResponse.d.ts +0 -0
  789. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResponse.js +0 -0
  790. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResultDto.d.ts +0 -0
  791. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResultDto.js +0 -0
  792. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/confirmResetPasswordRequest.d.ts +0 -0
  793. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/confirmResetPasswordRequest.js +0 -0
  794. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryExchangeRequest.d.ts +0 -0
  795. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryExchangeRequest.js +0 -0
  796. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResponse.d.ts +0 -0
  797. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResponse.js +0 -0
  798. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResult.d.ts +0 -0
  799. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResult.js +0 -0
  800. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResponse.d.ts +0 -0
  801. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResponse.js +0 -0
  802. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResult.d.ts +0 -0
  803. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResult.js +0 -0
  804. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTokenResult.d.ts +0 -0
  805. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTokenResult.js +0 -0
  806. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedIdentityRequest.d.ts +0 -0
  807. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedIdentityRequest.js +0 -0
  808. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedProviderRequest.d.ts +0 -0
  809. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedProviderRequest.js +0 -0
  810. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedUserRequest.d.ts +0 -0
  811. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedUserRequest.js +0 -0
  812. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequest.d.ts +0 -0
  813. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequest.js +0 -0
  814. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequestFlgEnabled.d.ts +0 -0
  815. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequestFlgEnabled.js +0 -0
  816. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuGroupRequest.d.ts +0 -0
  817. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuGroupRequest.js +0 -0
  818. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuRequest.d.ts +0 -0
  819. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuRequest.js +0 -0
  820. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuTypeRequest.d.ts +0 -0
  821. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuTypeRequest.js +0 -0
  822. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createScopeRequest.d.ts +0 -0
  823. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createScopeRequest.js +0 -0
  824. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenRequest.d.ts +0 -0
  825. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenRequest.js +0 -0
  826. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenResponse.d.ts +0 -0
  827. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenResponse.js +0 -0
  828. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/errorResponse.d.ts +0 -0
  829. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/errorResponse.js +0 -0
  830. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exchangeFederatedIdentityRequest.d.ts +0 -0
  831. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exchangeFederatedIdentityRequest.js +0 -0
  832. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditOrder.d.ts +0 -0
  833. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditOrder.js +0 -0
  834. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditParams.d.ts +0 -0
  835. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditParams.js +0 -0
  836. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedAuthenticationResultDto.d.ts +0 -0
  837. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedAuthenticationResultDto.js +0 -0
  838. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedExchangeResponse.d.ts +0 -0
  839. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedExchangeResponse.js +0 -0
  840. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityListResponse.d.ts +0 -0
  841. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityListResponse.js +0 -0
  842. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponse.d.ts +0 -0
  843. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponse.js +0 -0
  844. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponseDto.d.ts +0 -0
  845. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponseDto.js +0 -0
  846. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderListResponse.d.ts +0 -0
  847. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderListResponse.js +0 -0
  848. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponse.d.ts +0 -0
  849. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponse.js +0 -0
  850. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponseDto.d.ts +0 -0
  851. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponseDto.js +0 -0
  852. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/filtriUtente.d.ts +0 -0
  853. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/filtriUtente.js +0 -0
  854. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriResponse.d.ts +0 -0
  855. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriResponse.js +0 -0
  856. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteParams.d.ts +0 -0
  857. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteParams.js +0 -0
  858. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteResponse.d.ts +0 -0
  859. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteResponse.js +0 -0
  860. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusParams.d.ts +0 -0
  861. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusParams.js +0 -0
  862. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusResponse.d.ts +0 -0
  863. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusResponse.js +0 -0
  864. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuScopesResponse.d.ts +0 -0
  865. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuScopesResponse.js +0 -0
  866. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuTypesResponse.d.ts +0 -0
  867. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuTypesResponse.js +0 -0
  868. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusParams.d.ts +0 -0
  869. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusParams.js +0 -0
  870. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusResponse.d.ts +0 -0
  871. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusResponse.js +0 -0
  872. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getRolesResponse.d.ts +0 -0
  873. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getRolesResponse.js +0 -0
  874. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getSchemaResponse.d.ts +0 -0
  875. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getSchemaResponse.js +0 -0
  876. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getScopesResponse.d.ts +0 -0
  877. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getScopesResponse.js +0 -0
  878. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensParams.d.ts +0 -0
  879. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensParams.js +0 -0
  880. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensResponse.d.ts +0 -0
  881. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensResponse.js +0 -0
  882. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenRequest.d.ts +0 -0
  883. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenRequest.js +0 -0
  884. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenResponse.d.ts +0 -0
  885. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenResponse.js +0 -0
  886. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserRolesAndGrantsParams.d.ts +0 -0
  887. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserRolesAndGrantsParams.js +0 -0
  888. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersParams.d.ts +0 -0
  889. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersParams.js +0 -0
  890. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResponse.d.ts +0 -0
  891. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResponse.js +0 -0
  892. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResult.d.ts +0 -0
  893. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResult.js +0 -0
  894. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResultExtensionFields.d.ts +0 -0
  895. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResultExtensionFields.js +0 -0
  896. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/groupWithMenusEntity.d.ts +0 -0
  897. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/groupWithMenusEntity.js +0 -0
  898. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/index.d.ts +0 -0
  899. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/index.js +0 -0
  900. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenRequest.d.ts +0 -0
  901. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenRequest.js +0 -0
  902. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenResponse.d.ts +0 -0
  903. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenResponse.js +0 -0
  904. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/issuedServiceTokenDto.d.ts +0 -0
  905. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/issuedServiceTokenDto.js +0 -0
  906. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsRequest.d.ts +0 -0
  907. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsRequest.js +0 -0
  908. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResponse.d.ts +0 -0
  909. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResponse.js +0 -0
  910. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResult.d.ts +0 -0
  911. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResult.js +0 -0
  912. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginRequest.d.ts +0 -0
  913. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginRequest.js +0 -0
  914. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResponse.d.ts +0 -0
  915. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResponse.js +0 -0
  916. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResult.d.ts +0 -0
  917. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResult.js +0 -0
  918. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultExtensionFields.d.ts +0 -0
  919. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultExtensionFields.js +0 -0
  920. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultPasswordRequired.d.ts +0 -0
  921. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultPasswordRequired.js +0 -0
  922. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuEntity.d.ts +0 -0
  923. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuEntity.js +0 -0
  924. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuTypeEntity.d.ts +0 -0
  925. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuTypeEntity.js +0 -0
  926. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/passwordExpiredResponse.d.ts +0 -0
  927. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/passwordExpiredResponse.js +0 -0
  928. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/permission.d.ts +0 -0
  929. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/permission.js +0 -0
  930. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/publicRegisterRequest.d.ts +0 -0
  931. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/publicRegisterRequest.js +0 -0
  932. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditOrder.d.ts +0 -0
  933. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditOrder.js +0 -0
  934. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditParams.d.ts +0 -0
  935. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditParams.js +0 -0
  936. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenRequest.d.ts +0 -0
  937. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenRequest.js +0 -0
  938. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResponse.d.ts +0 -0
  939. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResponse.js +0 -0
  940. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResult.d.ts +0 -0
  941. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResult.js +0 -0
  942. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerRequest.d.ts +0 -0
  943. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerRequest.js +0 -0
  944. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerResponse.d.ts +0 -0
  945. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerResponse.js +0 -0
  946. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/resendTwoFactorRequest.d.ts +0 -0
  947. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/resendTwoFactorRequest.js +0 -0
  948. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/revokeTokenRequest.d.ts +0 -0
  949. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/revokeTokenRequest.js +0 -0
  950. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/role.d.ts +0 -0
  951. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/role.js +0 -0
  952. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenu.d.ts +0 -0
  953. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenu.js +0 -0
  954. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenuTipoAbilitazione.d.ts +0 -0
  955. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenuTipoAbilitazione.js +0 -0
  956. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlResult.d.ts +0 -0
  957. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlResult.js +0 -0
  958. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlSection.d.ts +0 -0
  959. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlSection.js +0 -0
  960. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/scopeEntity.d.ts +0 -0
  961. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/scopeEntity.js +0 -0
  962. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/sendResetPasswordEmailRequest.d.ts +0 -0
  963. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/sendResetPasswordEmailRequest.js +0 -0
  964. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serveResetPasswordPageParams.d.ts +0 -0
  965. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serveResetPasswordPageParams.js +0 -0
  966. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serviceTokenDto.d.ts +0 -0
  967. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serviceTokenDto.js +0 -0
  968. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setMenuScopesRequest.d.ts +0 -0
  969. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setMenuScopesRequest.js +0 -0
  970. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setPasswordLoginPolicyRequest.d.ts +0 -0
  971. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setPasswordLoginPolicyRequest.js +0 -0
  972. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setScopeMenusRequest.d.ts +0 -0
  973. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setScopeMenusRequest.js +0 -0
  974. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDto.d.ts +0 -0
  975. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDto.js +0 -0
  976. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +0 -0
  977. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +0 -0
  978. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setUserPasswordRequest.d.ts +0 -0
  979. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setUserPasswordRequest.js +0 -0
  980. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/status.d.ts +0 -0
  981. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/status.js +0 -0
  982. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltro.d.ts +0 -0
  983. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltro.js +0 -0
  984. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltroFlgEnabled.d.ts +0 -0
  985. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltroFlgEnabled.js +0 -0
  986. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResult.d.ts +0 -0
  987. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResult.js +0 -0
  988. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResultType.d.ts +0 -0
  989. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResultType.js +0 -0
  990. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDto.d.ts +0 -0
  991. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDto.js +0 -0
  992. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoMethod.d.ts +0 -0
  993. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoMethod.js +0 -0
  994. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +0 -0
  995. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +0 -0
  996. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateEnabledStatusRequest.d.ts +0 -0
  997. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateEnabledStatusRequest.js +0 -0
  998. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedIdentityRequest.d.ts +0 -0
  999. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedIdentityRequest.js +0 -0
  1000. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedProviderRequest.d.ts +0 -0
  1001. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedProviderRequest.js +0 -0
  1002. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequest.d.ts +0 -0
  1003. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequest.js +0 -0
  1004. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +0 -0
  1005. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequestFlgEnabled.js +0 -0
  1006. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuGroupRequest.d.ts +0 -0
  1007. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuGroupRequest.js +0 -0
  1008. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuRequest.d.ts +0 -0
  1009. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuRequest.js +0 -0
  1010. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuTypeRequest.d.ts +0 -0
  1011. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuTypeRequest.js +0 -0
  1012. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateScopeRequest.d.ts +0 -0
  1013. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateScopeRequest.js +0 -0
  1014. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDto.d.ts +0 -0
  1015. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDto.js +0 -0
  1016. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDtoStatoRegistrazione.d.ts +0 -0
  1017. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDtoStatoRegistrazione.js +0 -0
  1018. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsDto.d.ts +0 -0
  1019. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsDto.js +0 -0
  1020. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsResponse.d.ts +0 -0
  1021. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsResponse.js +0 -0
  1022. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/verifyTwoFactorRequest.d.ts +0 -0
  1023. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/verifyTwoFactorRequest.js +0 -0
  1024. /package/dist/{accessi-module/Console → accessi-service/console}/help.d.ts +0 -0
  1025. /package/dist/{accessi-module/Console → accessi-service/console}/help.js +0 -0
  1026. /package/dist/{accessi-module/Console → accessi-service/console}/index.html +0 -0
  1027. /package/dist/{accessi-module/Console → accessi-service/console}/wiki.d.ts +0 -0
  1028. /package/dist/{accessi-module/Controllers → accessi-service/controllers}/AccessiConsoleController.d.ts +0 -0
  1029. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiCatalogMigrator.d.ts +0 -0
  1030. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiCatalogMigrator.js +0 -0
  1031. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiDatabaseUpdater.d.ts +0 -0
  1032. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiDatabaseUpdater.js +0 -0
  1033. /package/dist/{accessi-module → accessi-service}/database-updates/accessiOptionsFromEnv.d.ts +0 -0
  1034. /package/dist/{accessi-module → accessi-service}/database-updates/accessiSchema.d.ts +0 -0
  1035. /package/dist/{accessi-module → accessi-service}/database-updates/accessiSchema.js +0 -0
  1036. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeed.d.ts +0 -0
  1037. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeed.js +0 -0
  1038. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeeder.d.ts +0 -0
  1039. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeeder.js +0 -0
  1040. /package/dist/{accessi-module → accessi-service}/database-updates/optionalColumns.d.ts +0 -0
  1041. /package/dist/{accessi-module → accessi-service}/database-updates/optionalColumns.js +0 -0
  1042. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiCatalogMigrations.d.ts +0 -0
  1043. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiCatalogMigrations.js +0 -0
  1044. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiDbUpdate.d.ts +0 -0
  1045. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiDbUpdate.js +0 -0
  1046. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Abilitazione.d.ts +0 -0
  1047. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Abilitazione.js +0 -0
  1048. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AbilitazioneMenu.d.ts +0 -0
  1049. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AbilitazioneMenu.js +0 -0
  1050. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AdminBootstrapDtos.d.ts +0 -0
  1051. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AdminBootstrapDtos.js +0 -0
  1052. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignPermissionsToUserRequest.d.ts +0 -0
  1053. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignPermissionsToUserRequest.js +0 -0
  1054. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignRolesToUserRequest.d.ts +0 -0
  1055. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignRolesToUserRequest.js +0 -0
  1056. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuditDtos.d.ts +0 -0
  1057. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuditDtos.js +0 -0
  1058. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuthenticatedUserPayloadDto.d.ts +0 -0
  1059. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuthenticatedUserPayloadDto.js +0 -0
  1060. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/BaseResponse.d.ts +0 -0
  1061. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/BaseResponse.js +0 -0
  1062. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/CatalogDtos.d.ts +0 -0
  1063. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/CatalogDtos.js +0 -0
  1064. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConfirmResetPasswordRequest.d.ts +0 -0
  1065. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConfirmResetPasswordRequest.js +0 -0
  1066. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConsoleEntryDtos.d.ts +0 -0
  1067. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConsoleEntryDtos.js +0 -0
  1068. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedExchangeDtos.d.ts +0 -0
  1069. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedExchangeDtos.js +0 -0
  1070. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedIdentityDtos.d.ts +0 -0
  1071. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedIdentityDtos.js +0 -0
  1072. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FiltriUtente.d.ts +0 -0
  1073. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FiltriUtente.js +0 -0
  1074. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetGroupsWithMenusResponse.d.ts +0 -0
  1075. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetGroupsWithMenusResponse.js +0 -0
  1076. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetMenusResponse.d.ts +0 -0
  1077. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetMenusResponse.js +0 -0
  1078. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetRolesResponse.d.ts +0 -0
  1079. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetRolesResponse.js +0 -0
  1080. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenRequest.d.ts +0 -0
  1081. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenRequest.js +0 -0
  1082. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenResponse.d.ts +0 -0
  1083. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenResponse.js +0 -0
  1084. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUsersResponse.d.ts +0 -0
  1085. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUsersResponse.js +0 -0
  1086. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/IntrospectionDtos.d.ts +0 -0
  1087. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/IntrospectionDtos.js +0 -0
  1088. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginAsDtos.d.ts +0 -0
  1089. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginAsDtos.js +0 -0
  1090. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginRequest.d.ts +0 -0
  1091. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginRequest.js +0 -0
  1092. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginResponse.d.ts +0 -0
  1093. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginResponse.js +0 -0
  1094. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/MenuItem.d.ts +0 -0
  1095. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/MenuItem.js +0 -0
  1096. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Permission.d.ts +0 -0
  1097. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Permission.js +0 -0
  1098. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/PublicRegisterRequest.d.ts +0 -0
  1099. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/PublicRegisterRequest.js +0 -0
  1100. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RefreshTokenDtos.d.ts +0 -0
  1101. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RefreshTokenDtos.js +0 -0
  1102. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterRequest.d.ts +0 -0
  1103. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterRequest.js +0 -0
  1104. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterResponse.d.ts +0 -0
  1105. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterResponse.js +0 -0
  1106. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RevokeTokenRequest.d.ts +0 -0
  1107. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RevokeTokenRequest.js +0 -0
  1108. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Role.d.ts +0 -0
  1109. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Role.js +0 -0
  1110. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RuoliMenu.d.ts +0 -0
  1111. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RuoliMenu.js +0 -0
  1112. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SchemaDtos.d.ts +0 -0
  1113. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SchemaDtos.js +0 -0
  1114. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ScopeDtos.d.ts +0 -0
  1115. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ScopeDtos.js +0 -0
  1116. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SendResetPasswordEmailRequest.d.ts +0 -0
  1117. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SendResetPasswordEmailRequest.js +0 -0
  1118. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ServiceToken.d.ts +0 -0
  1119. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ServiceToken.js +0 -0
  1120. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetStatoRegistrazione.d.ts +0 -0
  1121. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetStatoRegistrazione.js +0 -0
  1122. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetUserPasswordRequest.d.ts +0 -0
  1123. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetUserPasswordRequest.js +0 -0
  1124. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/StatoRegistrazione.d.ts +0 -0
  1125. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/StatoRegistrazione.js +0 -0
  1126. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoAbilitazione.d.ts +0 -0
  1127. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoAbilitazione.js +0 -0
  1128. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoFiltro.d.ts +0 -0
  1129. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoFiltro.js +0 -0
  1130. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TokenResult.d.ts +0 -0
  1131. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TokenResult.js +0 -0
  1132. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TwoFactorDtos.d.ts +0 -0
  1133. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TwoFactorDtos.js +0 -0
  1134. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UpdateEnabledStatusRequest.d.ts +0 -0
  1135. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UpdateEnabledStatusRequest.js +0 -0
  1136. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserDto.d.ts +0 -0
  1137. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserDto.js +0 -0
  1138. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsDto.d.ts +0 -0
  1139. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsDto.js +0 -0
  1140. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsResponse.d.ts +0 -0
  1141. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsResponse.js +0 -0
  1142. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/index.d.ts +0 -0
  1143. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/index.js +0 -0
  1144. /package/dist/{accessi-module → accessi-service}/federated-auth/FederatedAuthTypes.js +0 -0
  1145. /package/dist/{accessi-module → accessi-service}/health/nest.d.ts +0 -0
  1146. /package/dist/{accessi-module → accessi-service}/health/nest.js +0 -0
  1147. /package/dist/{accessi-module → accessi-service}/health/readiness.d.ts +0 -0
  1148. /package/dist/{accessi-module → accessi-service}/health/readiness.js +0 -0
  1149. /package/dist/{accessi-module → accessi-service}/middleware/accessiRequirements.d.ts +0 -0
  1150. /package/dist/{accessi-module → accessi-service}/middleware/accessiRequirements.js +0 -0
  1151. /package/dist/{accessi-module → accessi-service}/observability/metrics.d.ts +0 -0
  1152. /package/dist/{accessi-module → accessi-service}/observability/metrics.js +0 -0
  1153. /package/dist/{accessi-module → accessi-service}/observability/redisMetrics.d.ts +0 -0
  1154. /package/dist/{accessi-module → accessi-service}/observability/redisMetrics.js +0 -0
  1155. /package/dist/{accessi-module → accessi-service}/security/AccessiHttpExceptionFilter.d.ts +0 -0
  1156. /package/dist/{accessi-module → accessi-service}/security/AccessiHttpExceptionFilter.js +0 -0
  1157. /package/dist/{accessi-module → accessi-service}/security/accessControl.d.ts +0 -0
  1158. /package/dist/{accessi-module → accessi-service}/security/accessControl.js +0 -0
  1159. /package/dist/{accessi-module → accessi-service}/security/accessTokenRevocation.d.ts +0 -0
  1160. /package/dist/{accessi-module → accessi-service}/security/accessTokenRevocation.js +0 -0
  1161. /package/dist/{accessi-module → accessi-service}/security/accessiValidation.d.ts +0 -0
  1162. /package/dist/{accessi-module → accessi-service}/security/accessiValidation.js +0 -0
  1163. /package/dist/{accessi-module → accessi-service}/security/adminBootstrap.d.ts +0 -0
  1164. /package/dist/{accessi-module → accessi-service}/security/adminBootstrap.js +0 -0
  1165. /package/dist/{accessi-module → accessi-service}/security/audit.d.ts +0 -0
  1166. /package/dist/{accessi-module → accessi-service}/security/audit.js +0 -0
  1167. /package/dist/{accessi-module → accessi-service}/security/auditSinks.d.ts +0 -0
  1168. /package/dist/{accessi-module → accessi-service}/security/auditSinks.js +0 -0
  1169. /package/dist/{accessi-module → accessi-service}/security/authCookies.d.ts +0 -0
  1170. /package/dist/{accessi-module → accessi-service}/security/authCookies.js +0 -0
  1171. /package/dist/{accessi-module → accessi-service}/security/consoleEntry.d.ts +0 -0
  1172. /package/dist/{accessi-module → accessi-service}/security/consoleEntry.js +0 -0
  1173. /package/dist/{accessi-module → accessi-service}/security/edgeRateLimit.d.ts +0 -0
  1174. /package/dist/{accessi-module → accessi-service}/security/edgeRateLimit.js +0 -0
  1175. /package/dist/{accessi-module → accessi-service}/security/emailConfiguration.d.ts +0 -0
  1176. /package/dist/{accessi-module → accessi-service}/security/emailConfiguration.js +0 -0
  1177. /package/dist/{accessi-module → accessi-service}/security/jwks.d.ts +0 -0
  1178. /package/dist/{accessi-module → accessi-service}/security/jwks.js +0 -0
  1179. /package/dist/{accessi-module → accessi-service}/security/jwksBootstrap.d.ts +0 -0
  1180. /package/dist/{accessi-module → accessi-service}/security/jwksBootstrap.js +0 -0
  1181. /package/dist/{accessi-module → accessi-service}/security/jwtTokenOptions.d.ts +0 -0
  1182. /package/dist/{accessi-module → accessi-service}/security/jwtTokenOptions.js +0 -0
  1183. /package/dist/{accessi-module → accessi-service}/security/loginAs.d.ts +0 -0
  1184. /package/dist/{accessi-module → accessi-service}/security/loginAs.js +0 -0
  1185. /package/dist/{accessi-module → accessi-service}/security/passwordPolicy.d.ts +0 -0
  1186. /package/dist/{accessi-module → accessi-service}/security/passwordPolicy.js +0 -0
  1187. /package/dist/{accessi-module → accessi-service}/security/passwordResetToken.d.ts +0 -0
  1188. /package/dist/{accessi-module → accessi-service}/security/passwordResetToken.js +0 -0
  1189. /package/dist/{accessi-module → accessi-service}/security/publicAuthRateLimit.d.ts +0 -0
  1190. /package/dist/{accessi-module → accessi-service}/security/publicAuthRateLimit.js +0 -0
  1191. /package/dist/{accessi-module → accessi-service}/security/rateLimitStore.d.ts +0 -0
  1192. /package/dist/{accessi-module → accessi-service}/security/rateLimitStore.js +0 -0
  1193. /package/dist/{accessi-module → accessi-service}/security/refreshTokenRotation.d.ts +0 -0
  1194. /package/dist/{accessi-module → accessi-service}/security/refreshTokenRotation.js +0 -0
  1195. /package/dist/{accessi-module → accessi-service}/security/securityHeaders.d.ts +0 -0
  1196. /package/dist/{accessi-module → accessi-service}/security/securityHeaders.js +0 -0
  1197. /package/dist/{accessi-module → accessi-service}/security/serviceTokenRateLimit.d.ts +0 -0
  1198. /package/dist/{accessi-module → accessi-service}/security/serviceTokenRateLimit.js +0 -0
  1199. /package/dist/{accessi-module → accessi-service}/security/sessionRevocation.d.ts +0 -0
  1200. /package/dist/{accessi-module → accessi-service}/security/sessionRevocation.js +0 -0
  1201. /package/dist/{accessi-module → accessi-service}/security/validateOptions.d.ts +0 -0
  1202. /package/dist/{accessi-module → accessi-service}/security/validateOptions.js +0 -0
  1203. /package/dist/{accessi-module/Services/ConfiguratorService → accessi-service/services/configurator-service}/ConfiguratorService.d.ts +0 -0
  1204. /package/dist/{accessi-module/Services/ConfiguratorService → accessi-service/services/configurator-service}/ConfiguratorService.js +0 -0
  1205. /package/dist/{accessi-module/Services/EmailService → accessi-service/services/email-service}/EmailService.d.ts +0 -0
  1206. /package/dist/{accessi-module/Services/SchemaExportService → accessi-service/services/schema-export-service}/SchemaExportService.d.ts +0 -0
  1207. /package/dist/{accessi-module/Services/SchemaExportService → accessi-service/services/schema-export-service}/SchemaExportService.js +0 -0
  1208. /package/dist/{accessi-module/Services/ServiceTokenService → accessi-service/services/service-token-service}/ServiceTokenService.d.ts +0 -0
  1209. /package/dist/{accessi-module/Services/ServiceTokenService → accessi-service/services/service-token-service}/ServiceTokenService.js +0 -0
  1210. /package/dist/{accessi-module → accessi-service}/startupLog.d.ts +0 -0
  1211. /package/dist/{accessi-module → accessi-service}/startupLog.js +0 -0
  1212. /package/dist/{accessi-module → accessi-service}/tenancy/tenantContext.d.ts +0 -0
  1213. /package/dist/{accessi-module → accessi-service}/tenancy/tenantContext.js +0 -0
  1214. /package/dist/{accessi-module/Views → accessi-service/views}/reset-password.html +0 -0
  1215. /package/dist/allegati-module/{Dtos → dtos}/AllegatoDto.d.ts +0 -0
  1216. /package/dist/allegati-module/{Dtos → dtos}/AllegatoDto.js +0 -0
  1217. /package/dist/allegati-module/{Dtos → dtos}/BaseResponse.d.ts +0 -0
  1218. /package/dist/allegati-module/{Dtos → dtos}/BaseResponse.js +0 -0
  1219. /package/dist/allegati-module/{Dtos → dtos}/UploadSingleFileRequest.d.ts +0 -0
  1220. /package/dist/allegati-module/{Dtos → dtos}/UploadSingleFileRequest.js +0 -0
  1221. /package/dist/allegati-module/{Dtos → dtos}/index.d.ts +0 -0
  1222. /package/dist/allegati-module/{Dtos → dtos}/index.js +0 -0
  1223. /package/dist/allegati-module/{Dtos → dtos}/responses/DownloadAllegatoResponseDto.d.ts +0 -0
  1224. /package/dist/allegati-module/{Dtos → dtos}/responses/DownloadAllegatoResponseDto.js +0 -0
  1225. /package/dist/allegati-module/{Dtos → dtos}/responses/GetListResponse.d.ts +0 -0
  1226. /package/dist/allegati-module/{Dtos → dtos}/responses/GetListResponse.js +0 -0
  1227. /package/dist/allegati-module/{Dtos → dtos}/responses/UploadAllegatoResponseDto.d.ts +0 -0
  1228. /package/dist/allegati-module/{Dtos → dtos}/responses/UploadAllegatoResponseDto.js +0 -0
  1229. /package/dist/allegati-module/{Services/AllegatiService → services/allegati-service}/AllegatiService.js +0 -0
  1230. /package/dist/{firebird-compat.d.ts → firebirdCompat.d.ts} +0 -0
@@ -1,315 +0,0 @@
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
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
- return new (P || (P = Promise))(function (resolve, reject) {
17
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
- step((generator = generator.apply(thisArg, _arguments || [])).next());
21
- });
22
- };
23
- Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.authenticateGen = exports.AuthenticateGenService = void 0;
25
- exports.beginAccessiAuthInitialization = beginAccessiAuthInitialization;
26
- exports.setAccessiAuthService = setAccessiAuthService;
27
- exports.failAccessiAuthInitialization = failAccessiAuthInitialization;
28
- exports.authorizeAccessi = authorizeAccessi;
29
- const common_1 = require("@nestjs/common");
30
- const PermissionService_1 = require("../Services/PermissionService/PermissionService");
31
- const UserService_1 = require("../Services/UserService/UserService");
32
- const Logger_1 = require("../../Logger");
33
- const accessiRequirements_1 = require("./accessiRequirements");
34
- const authenticatedToken_1 = require("../security/authenticatedToken");
35
- const jwtTokenOptions_1 = require("../security/jwtTokenOptions");
36
- const sessionRevocation_1 = require("../security/sessionRevocation");
37
- const logger = new Logger_1.Logger("AuthenticateGen");
38
- const ACCESSI_AUTH_SERVICE_LOCALS_KEY = "accessiAuthService";
39
- const ACCESSI_AUTH_SERVICE_GLOBAL_KEY = Symbol.for("emilsoftware.accessiAuthService");
40
- const ACCESSI_AUTH_SERVICE_WAIT_MS = 15000;
41
- class AuthMiddlewareError extends Error {
42
- constructor(status, code, message, details) {
43
- super(message);
44
- this.status = status;
45
- this.code = code;
46
- this.details = details;
47
- this.name = "AuthMiddlewareError";
48
- }
49
- }
50
- function authError(status, code, message, details) {
51
- return new AuthMiddlewareError(status, code, message, details);
52
- }
53
- function normalizeAuthError(error) {
54
- if (error instanceof AuthMiddlewareError)
55
- return error;
56
- if (error instanceof accessiRequirements_1.RequirementEvaluationError) {
57
- return authError(500, error.code, error.message);
58
- }
59
- if (error instanceof Error) {
60
- return authError(500, "AUTH_INTERNAL_ERROR", error.message, {
61
- originalError: error.name,
62
- });
63
- }
64
- return authError(500, "AUTH_INTERNAL_ERROR", "Unexpected authentication error");
65
- }
66
- function logAuthFailure(req, authErr) {
67
- var _a;
68
- const payload = {
69
- code: authErr.code,
70
- status: authErr.status,
71
- message: authErr.message,
72
- details: authErr.details,
73
- method: req.method,
74
- path: (_a = req.originalUrl) !== null && _a !== void 0 ? _a : req.url,
75
- ip: req.ip,
76
- };
77
- const message = `${authErr.status >= 500 ? "Authentication failure" : "Authentication denied"} ${JSON.stringify(payload)}`;
78
- if (authErr.status >= 500)
79
- logger.error(message);
80
- else
81
- logger.warning(message);
82
- }
83
- /** Sends the documented Accessi error contract from Express middleware. */
84
- function sendAuthenticationError(res, authErr) {
85
- const message = authErr.status === 403
86
- ? 'Operazione non autorizzata.'
87
- : authErr.status >= 500
88
- ? 'Errore interno del modulo Accessi.'
89
- : 'Autenticazione non valida o scaduta.';
90
- return res.status(authErr.status).json({
91
- severity: 'error',
92
- status: authErr.status,
93
- statusCode: 2,
94
- code: authErr.code,
95
- // Kept for callers of older versions which already inspected `error`.
96
- error: authErr.code,
97
- message,
98
- });
99
- }
100
- function authorizeWithDependencies(req, res, next, options, accessiOptions, permissionService, userService) {
101
- return __awaiter(this, void 0, void 0, function* () {
102
- const authenticatedRequest = req;
103
- try {
104
- const authHeader = req.headers.authorization;
105
- if (!authHeader) {
106
- throw authError(401, "AUTH_HEADER_MISSING", "Authorization header not found");
107
- }
108
- const token = (0, authenticatedToken_1.extractAccessiBearerToken)(authHeader);
109
- if (!token) {
110
- throw authError(401, "AUTH_TOKEN_MISSING", "Token not found in Authorization header");
111
- }
112
- let verification;
113
- try {
114
- verification = (0, jwtTokenOptions_1.getAccessiAccessTokenVerificationConfig)(accessiOptions);
115
- }
116
- catch (_a) {
117
- throw authError(500, "AUTH_JWT_SECRET_MISSING", "JWT signing key not configured");
118
- }
119
- let decoded;
120
- try {
121
- decoded = (0, jwtTokenOptions_1.verifyAccessiJwt)(token, verification);
122
- }
123
- catch (_b) {
124
- throw authError(401, "AUTH_TOKEN_INVALID", "Invalid JWT token");
125
- }
126
- const codiceUtente = (0, authenticatedToken_1.resolveCodiceUtenteFromTokenPayload)(decoded);
127
- if (!codiceUtente) {
128
- throw authError(401, "AUTH_USER_CODE_MISSING", "codiceUtente not found in token payload");
129
- }
130
- if (yield (0, sessionRevocation_1.isAccessiTokenRevoked)(accessiOptions, decoded, codiceUtente)) {
131
- throw authError(401, "AUTH_TOKEN_REVOKED", "Session revoked");
132
- }
133
- const currentUser = yield userService.getAuthenticatedUserSnapshot(codiceUtente);
134
- if (!(0, authenticatedToken_1.isAuthenticatedUserEnabledForJwt)(currentUser) || !(0, authenticatedToken_1.isAccessiTokenAllowedForUser)(decoded, currentUser)) {
135
- throw authError(401, "AUTH_USER_DISABLED", "User is no longer authorized");
136
- }
137
- const authenticatedPayload = (0, authenticatedToken_1.buildAuthenticatedTokenPayload)(decoded, currentUser);
138
- const requirementTree = (0, accessiRequirements_1.buildRequirementTree)(options);
139
- if (requirementTree) {
140
- if (!(accessiOptions === null || accessiOptions === void 0 ? void 0 : accessiOptions.databaseOptions)) {
141
- throw authError(500, "AUTH_DATABASE_OPTIONS_MISSING", "Database options not configured");
142
- }
143
- let grantsResultCache = null;
144
- const getGrantsResult = () => __awaiter(this, void 0, void 0, function* () {
145
- if (!grantsResultCache) {
146
- grantsResultCache = yield permissionService.getUserRolesAndGrants(codiceUtente);
147
- }
148
- return grantsResultCache;
149
- });
150
- const requirementContext = {
151
- req,
152
- decodedToken: authenticatedPayload,
153
- userCode: codiceUtente,
154
- getGrantsResult,
155
- };
156
- const hasPermissions = yield (0, accessiRequirements_1.evaluateRequirement)(requirementTree, requirementContext, options);
157
- if (!hasPermissions) {
158
- throw authError(403, "AUTH_INSUFFICIENT_PERMISSIONS", "User does not have required permissions");
159
- }
160
- authenticatedRequest.userGrants = yield getGrantsResult();
161
- }
162
- authenticatedRequest.user = authenticatedPayload;
163
- authenticatedRequest.data = authenticatedPayload;
164
- return next();
165
- }
166
- catch (error) {
167
- const authErr = normalizeAuthError(error);
168
- logAuthFailure(req, authErr);
169
- return sendAuthenticationError(res, authErr);
170
- }
171
- });
172
- }
173
- let AuthenticateGenService = class AuthenticateGenService {
174
- constructor(accessiOptions, permissionService, userService) {
175
- this.accessiOptions = accessiOptions;
176
- this.permissionService = permissionService;
177
- this.userService = userService;
178
- }
179
- /**
180
- * Verifica JWT, stato corrente dell'utente e policy opzionale, poi popola `req.user` e `req.data`.
181
- * Se una policy richiede grant, popola anche `req.userGrants`; non chiamarlo direttamente fuori da test o adapter.
182
- */
183
- authorize(req, res, next, options) {
184
- return __awaiter(this, void 0, void 0, function* () {
185
- return authorizeWithDependencies(req, res, next, options, this.accessiOptions, this.permissionService, this.userService);
186
- });
187
- }
188
- };
189
- exports.AuthenticateGenService = AuthenticateGenService;
190
- exports.AuthenticateGenService = AuthenticateGenService = __decorate([
191
- (0, common_1.Injectable)()
192
- /** Nest service behind the Express-compatible `authorizeAccessi` middleware. */
193
- ,
194
- __param(0, (0, common_1.Inject)("ACCESSI_OPTIONS")),
195
- __metadata("design:paramtypes", [Object, PermissionService_1.PermissionService,
196
- UserService_1.UserService])
197
- ], AuthenticateGenService);
198
- let authenticateGenServiceRef = null;
199
- let authServiceBootstrapDeferred = null;
200
- function createDeferred() {
201
- let resolve;
202
- let reject;
203
- const promise = new Promise((res, rej) => {
204
- resolve = res;
205
- reject = rej;
206
- });
207
- return { promise, resolve, reject };
208
- }
209
- function isAuthenticateGenService(value) {
210
- return Boolean(value &&
211
- typeof value.authorize === "function");
212
- }
213
- /** Segnala al middleware che il bootstrap e in corso, consentendo una risposta 503 temporanea invece di un 500. */
214
- function beginAccessiAuthInitialization() {
215
- if (!authServiceBootstrapDeferred) {
216
- authServiceBootstrapDeferred = createDeferred();
217
- }
218
- }
219
- /** Registra il servizio costruito da Nest nel bridge usato dalle rotte Express dell'app ospitante. */
220
- function setAccessiAuthService(service) {
221
- authenticateGenServiceRef = service;
222
- globalThis[ACCESSI_AUTH_SERVICE_GLOBAL_KEY] = service;
223
- if (authServiceBootstrapDeferred) {
224
- authServiceBootstrapDeferred.resolve(service);
225
- authServiceBootstrapDeferred = null;
226
- }
227
- }
228
- /** Propaga il fallimento del bootstrap alle richieste che stavano attendendo il bridge di autorizzazione. */
229
- function failAccessiAuthInitialization(error) {
230
- if (authServiceBootstrapDeferred) {
231
- authServiceBootstrapDeferred.reject(error);
232
- authServiceBootstrapDeferred = null;
233
- }
234
- }
235
- function getAccessiAuthServiceFromRequest(req) {
236
- var _a, _b;
237
- const appLocalsService = (_b = (_a = req.app) === null || _a === void 0 ? void 0 : _a.locals) === null || _b === void 0 ? void 0 : _b[ACCESSI_AUTH_SERVICE_LOCALS_KEY];
238
- if (isAuthenticateGenService(appLocalsService)) {
239
- return appLocalsService;
240
- }
241
- const globalService = globalThis[ACCESSI_AUTH_SERVICE_GLOBAL_KEY];
242
- if (isAuthenticateGenService(globalService)) {
243
- return globalService;
244
- }
245
- return authenticateGenServiceRef;
246
- }
247
- function waitForBootstrappedService() {
248
- return __awaiter(this, void 0, void 0, function* () {
249
- if (!authServiceBootstrapDeferred) {
250
- return null;
251
- }
252
- const bootstrapPromise = authServiceBootstrapDeferred.promise;
253
- const timeoutPromise = new Promise((resolve) => {
254
- setTimeout(() => resolve(null), ACCESSI_AUTH_SERVICE_WAIT_MS);
255
- });
256
- try {
257
- const resolved = yield Promise.race([bootstrapPromise, timeoutPromise]);
258
- return isAuthenticateGenService(resolved) ? resolved : null;
259
- }
260
- catch (_a) {
261
- return null;
262
- }
263
- });
264
- }
265
- function resolveAccessiAuthService(req) {
266
- return __awaiter(this, void 0, void 0, function* () {
267
- const immediateService = getAccessiAuthServiceFromRequest(req);
268
- if (immediateService) {
269
- return immediateService;
270
- }
271
- const bootstrappedService = yield waitForBootstrappedService();
272
- if (bootstrappedService) {
273
- return bootstrappedService;
274
- }
275
- return getAccessiAuthServiceFromRequest(req);
276
- });
277
- }
278
- /**
279
- * Middleware Express pubblico di Accessi.
280
- *
281
- * Applicarlo dopo `initializeAccessiModule`: legge `Authorization: Bearer <jwt>`, verifica l'utente corrente
282
- * e applica eventuali requisiti. Su successo valorizza `req.user` e continua; su errore risponde direttamente
283
- * con il contratto Accessi, quindi il chiamante non deve aggiungere un proprio `next(error)`.
284
- */
285
- function authorizeAccessi(req, res, next, options) {
286
- return __awaiter(this, void 0, void 0, function* () {
287
- var _a;
288
- const authService = yield resolveAccessiAuthService(req);
289
- if (!authService) {
290
- const status = authServiceBootstrapDeferred ? 503 : 500;
291
- const code = authServiceBootstrapDeferred
292
- ? 'ACCESSI_AUTH_INITIALIZING'
293
- : 'ACCESSI_AUTH_NOT_INITIALIZED';
294
- logger.error(`Authentication service not initialized ${JSON.stringify({
295
- method: req.method,
296
- path: (_a = req.originalUrl) !== null && _a !== void 0 ? _a : req.url,
297
- status,
298
- })}`);
299
- return res.status(status).json({
300
- severity: 'error',
301
- status,
302
- statusCode: 2,
303
- code,
304
- error: code,
305
- message: status === 503
306
- ? 'Il modulo Accessi e in inizializzazione. Riprova tra poco.'
307
- : 'Il modulo Accessi non e disponibile.',
308
- });
309
- }
310
- return authService.authorize(req, res, next, options);
311
- });
312
- }
313
- /** Alias storico di `authorizeAccessi`, mantenuto per retrocompatibilita. Preferire il nome esplicito nelle nuove integrazioni. */
314
- exports.authenticateGen = authorizeAccessi;
315
- //# sourceMappingURL=authenticateGen.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authenticateGen.js","sourceRoot":"","sources":["../../../src/accessi-module/middleware/authenticateGen.ts"],"names":[],"mappings":"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","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport { Inject, Injectable } from \"@nestjs/common\";\nimport type { AccessiOptions } from \"../AccessiModule\";\nimport { PermissionService } from \"../Services/PermissionService/PermissionService\";\nimport { UserService } from \"../Services/UserService/UserService\";\nimport { Logger } from \"../../Logger\";\nimport {\n AccessiAuthorizationOptions,\n AccessiCustomRequirementContext,\n GrantsResult,\n RequirementEvaluationError,\n buildRequirementTree,\n evaluateRequirement,\n} from \"./accessiRequirements\";\nimport {\n buildAuthenticatedTokenPayload,\n extractAccessiBearerToken,\n isAuthenticatedUserEnabledForJwt,\n isAccessiTokenAllowedForUser,\n resolveCodiceUtenteFromTokenPayload,\n} from \"../security/authenticatedToken\";\nimport { getAccessiAccessTokenVerificationConfig, verifyAccessiJwt } from \"../security/jwtTokenOptions\";\nimport { isAccessiTokenRevoked } from \"../security/sessionRevocation\";\n\nconst logger = new Logger(\"AuthenticateGen\");\nconst ACCESSI_AUTH_SERVICE_LOCALS_KEY = \"accessiAuthService\";\nconst ACCESSI_AUTH_SERVICE_GLOBAL_KEY = Symbol.for(\"emilsoftware.accessiAuthService\");\nconst ACCESSI_AUTH_SERVICE_WAIT_MS = 15000;\n\ntype Deferred<T> = {\n promise: Promise<T>;\n resolve: (value: T) => void;\n reject: (reason?: unknown) => void;\n};\n\nclass AuthMiddlewareError extends Error {\n constructor(\n public readonly status: number,\n public readonly code: string,\n message: string,\n public readonly details?: Record<string, unknown>\n ) {\n super(message);\n this.name = \"AuthMiddlewareError\";\n }\n}\n\nfunction authError(\n status: number,\n code: string,\n message: string,\n details?: Record<string, unknown>\n) {\n return new AuthMiddlewareError(status, code, message, details);\n}\n\nfunction normalizeAuthError(error: unknown): AuthMiddlewareError {\n if (error instanceof AuthMiddlewareError) return error;\n if (error instanceof RequirementEvaluationError) {\n return authError(500, error.code, error.message);\n }\n if (error instanceof Error) {\n return authError(500, \"AUTH_INTERNAL_ERROR\", error.message, {\n originalError: error.name,\n });\n }\n return authError(500, \"AUTH_INTERNAL_ERROR\", \"Unexpected authentication error\");\n}\n\nfunction logAuthFailure(req: Request, authErr: AuthMiddlewareError) {\n const payload = {\n code: authErr.code,\n status: authErr.status,\n message: authErr.message,\n details: authErr.details,\n method: req.method,\n path: req.originalUrl ?? req.url,\n ip: req.ip,\n };\n\n const message = `${authErr.status >= 500 ? \"Authentication failure\" : \"Authentication denied\"} ${JSON.stringify(payload)}`;\n if (authErr.status >= 500) logger.error(message);\n else logger.warning(message);\n}\n\n/** Sends the documented Accessi error contract from Express middleware. */\nfunction sendAuthenticationError(res: Response, authErr: AuthMiddlewareError): Response {\n const message =\n authErr.status === 403\n ? 'Operazione non autorizzata.'\n : authErr.status >= 500\n ? 'Errore interno del modulo Accessi.'\n : 'Autenticazione non valida o scaduta.';\n\n return res.status(authErr.status).json({\n severity: 'error',\n status: authErr.status,\n statusCode: 2,\n code: authErr.code,\n // Kept for callers of older versions which already inspected `error`.\n error: authErr.code,\n message,\n });\n}\n\nasync function authorizeWithDependencies(\n req: Request,\n res: Response,\n next: NextFunction,\n options: AccessiAuthorizationOptions | undefined,\n accessiOptions: AccessiOptions,\n permissionService: PermissionService,\n userService: UserService\n) {\n type AuthenticatedRequest = Request & {\n userGrants?: unknown;\n user?: unknown;\n data?: unknown;\n };\n const authenticatedRequest = req as AuthenticatedRequest;\n\n try {\n const authHeader = req.headers.authorization;\n if (!authHeader) {\n throw authError(401, \"AUTH_HEADER_MISSING\", \"Authorization header not found\");\n }\n\n const token = extractAccessiBearerToken(authHeader);\n if (!token) {\n throw authError(\n 401,\n \"AUTH_TOKEN_MISSING\",\n \"Token not found in Authorization header\"\n );\n }\n\n let verification: ReturnType<typeof getAccessiAccessTokenVerificationConfig>;\n try {\n verification = getAccessiAccessTokenVerificationConfig(accessiOptions);\n } catch {\n throw authError(500, \"AUTH_JWT_SECRET_MISSING\", \"JWT signing key not configured\");\n }\n\n let decoded: unknown;\n try {\n decoded = verifyAccessiJwt(token, verification);\n } catch {\n throw authError(401, \"AUTH_TOKEN_INVALID\", \"Invalid JWT token\");\n }\n\n const codiceUtente = resolveCodiceUtenteFromTokenPayload(decoded);\n if (!codiceUtente) {\n throw authError(\n 401,\n \"AUTH_USER_CODE_MISSING\",\n \"codiceUtente not found in token payload\"\n );\n }\n if (await isAccessiTokenRevoked(accessiOptions, decoded as Record<string, unknown>, codiceUtente)) {\n throw authError(401, \"AUTH_TOKEN_REVOKED\", \"Session revoked\");\n }\n\n const currentUser = await userService.getAuthenticatedUserSnapshot(codiceUtente);\n if (!isAuthenticatedUserEnabledForJwt(currentUser) || !isAccessiTokenAllowedForUser(decoded, currentUser)) {\n throw authError(\n 401,\n \"AUTH_USER_DISABLED\",\n \"User is no longer authorized\"\n );\n }\n\n const authenticatedPayload = buildAuthenticatedTokenPayload(decoded, currentUser);\n\n const requirementTree = buildRequirementTree(options);\n if (requirementTree) {\n if (!accessiOptions?.databaseOptions) {\n throw authError(\n 500,\n \"AUTH_DATABASE_OPTIONS_MISSING\",\n \"Database options not configured\"\n );\n }\n\n let grantsResultCache: GrantsResult | null = null;\n const getGrantsResult = async () => {\n if (!grantsResultCache) {\n grantsResultCache = await permissionService.getUserRolesAndGrants(\n codiceUtente\n );\n }\n return grantsResultCache;\n };\n\n const requirementContext: AccessiCustomRequirementContext = {\n req,\n decodedToken: authenticatedPayload,\n userCode: codiceUtente,\n getGrantsResult,\n };\n\n const hasPermissions = await evaluateRequirement(\n requirementTree,\n requirementContext,\n options\n );\n\n if (!hasPermissions) {\n throw authError(\n 403,\n \"AUTH_INSUFFICIENT_PERMISSIONS\",\n \"User does not have required permissions\"\n );\n }\n\n authenticatedRequest.userGrants = await getGrantsResult();\n }\n\n authenticatedRequest.user = authenticatedPayload;\n authenticatedRequest.data = authenticatedPayload;\n return next();\n } catch (error: unknown) {\n const authErr = normalizeAuthError(error);\n logAuthFailure(req, authErr);\n return sendAuthenticationError(res, authErr);\n }\n}\n\n@Injectable()\n/** Nest service behind the Express-compatible `authorizeAccessi` middleware. */\nexport class AuthenticateGenService {\n constructor(\n @Inject(\"ACCESSI_OPTIONS\")\n private readonly accessiOptions: AccessiOptions,\n private readonly permissionService: PermissionService,\n private readonly userService: UserService\n ) { }\n\n /**\n * Verifica JWT, stato corrente dell'utente e policy opzionale, poi popola `req.user` e `req.data`.\n * Se una policy richiede grant, popola anche `req.userGrants`; non chiamarlo direttamente fuori da test o adapter.\n */\n async authorize(\n req: Request,\n res: Response,\n next: NextFunction,\n options?: AccessiAuthorizationOptions\n ) {\n return authorizeWithDependencies(\n req,\n res,\n next,\n options,\n this.accessiOptions,\n this.permissionService,\n this.userService\n );\n }\n}\n\nlet authenticateGenServiceRef: AuthenticateGenService | null = null;\nlet authServiceBootstrapDeferred: Deferred<AuthenticateGenService> | null = null;\n\nfunction createDeferred<T>(): Deferred<T> {\n let resolve!: (value: T) => void;\n let reject!: (reason?: unknown) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nfunction isAuthenticateGenService(value: unknown): value is AuthenticateGenService {\n return Boolean(\n value &&\n typeof (value as { authorize?: unknown }).authorize === \"function\"\n );\n}\n\n/** Segnala al middleware che il bootstrap e in corso, consentendo una risposta 503 temporanea invece di un 500. */\nexport function beginAccessiAuthInitialization() {\n if (!authServiceBootstrapDeferred) {\n authServiceBootstrapDeferred = createDeferred<AuthenticateGenService>();\n }\n}\n\n/** Registra il servizio costruito da Nest nel bridge usato dalle rotte Express dell'app ospitante. */\nexport function setAccessiAuthService(service: AuthenticateGenService) {\n authenticateGenServiceRef = service;\n (globalThis as Record<symbol, unknown>)[ACCESSI_AUTH_SERVICE_GLOBAL_KEY] = service;\n if (authServiceBootstrapDeferred) {\n authServiceBootstrapDeferred.resolve(service);\n authServiceBootstrapDeferred = null;\n }\n}\n\n/** Propaga il fallimento del bootstrap alle richieste che stavano attendendo il bridge di autorizzazione. */\nexport function failAccessiAuthInitialization(error: unknown) {\n if (authServiceBootstrapDeferred) {\n authServiceBootstrapDeferred.reject(error);\n authServiceBootstrapDeferred = null;\n }\n}\n\nfunction getAccessiAuthServiceFromRequest(req: Request): AuthenticateGenService | null {\n const appLocalsService = (req.app?.locals as Record<string, unknown> | undefined)?.[\n ACCESSI_AUTH_SERVICE_LOCALS_KEY\n ];\n\n if (isAuthenticateGenService(appLocalsService)) {\n return appLocalsService as AuthenticateGenService;\n }\n\n const globalService = (globalThis as Record<symbol, unknown>)[\n ACCESSI_AUTH_SERVICE_GLOBAL_KEY\n ];\n if (isAuthenticateGenService(globalService)) {\n return globalService as AuthenticateGenService;\n }\n\n return authenticateGenServiceRef;\n}\n\nasync function waitForBootstrappedService(): Promise<AuthenticateGenService | null> {\n if (!authServiceBootstrapDeferred) {\n return null;\n }\n\n const bootstrapPromise = authServiceBootstrapDeferred.promise;\n const timeoutPromise = new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), ACCESSI_AUTH_SERVICE_WAIT_MS);\n });\n\n try {\n const resolved = await Promise.race([bootstrapPromise, timeoutPromise]);\n return isAuthenticateGenService(resolved) ? resolved : null;\n } catch {\n return null;\n }\n}\n\nasync function resolveAccessiAuthService(req: Request): Promise<AuthenticateGenService | null> {\n const immediateService = getAccessiAuthServiceFromRequest(req);\n if (immediateService) {\n return immediateService;\n }\n\n const bootstrappedService = await waitForBootstrappedService();\n if (bootstrappedService) {\n return bootstrappedService;\n }\n\n return getAccessiAuthServiceFromRequest(req);\n}\n\n/**\n * Middleware Express pubblico di Accessi.\n *\n * Applicarlo dopo `initializeAccessiModule`: legge `Authorization: Bearer <jwt>`, verifica l'utente corrente\n * e applica eventuali requisiti. Su successo valorizza `req.user` e continua; su errore risponde direttamente\n * con il contratto Accessi, quindi il chiamante non deve aggiungere un proprio `next(error)`.\n */\nexport async function authorizeAccessi(\n req: Request,\n res: Response,\n next: NextFunction,\n options?: AccessiAuthorizationOptions\n) {\n const authService = await resolveAccessiAuthService(req);\n\n if (!authService) {\n const status = authServiceBootstrapDeferred ? 503 : 500;\n const code = authServiceBootstrapDeferred\n ? 'ACCESSI_AUTH_INITIALIZING'\n : 'ACCESSI_AUTH_NOT_INITIALIZED';\n logger.error(\n `Authentication service not initialized ${JSON.stringify({\n method: req.method,\n path: req.originalUrl ?? req.url,\n status,\n })}`\n );\n return res.status(status).json({\n severity: 'error',\n status,\n statusCode: 2,\n code,\n error: code,\n message: status === 503\n ? 'Il modulo Accessi e in inizializzazione. Riprova tra poco.'\n : 'Il modulo Accessi non e disponibile.',\n });\n }\n\n return authService.authorize(req, res, next, options);\n}\n\n/** Alias storico di `authorizeAccessi`, mantenuto per retrocompatibilita. Preferire il nome esplicito nelle nuove integrazioni. */\nexport const authenticateGen = authorizeAccessi;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/accessi-module/observability/metrics.ts"],"names":[],"mappings":";;AAiGA,oEAkHC;AAKD,8DAEC;AAGD,sDAGC;AASD,kDAMC;AAGD,sDAMC;AAGD,oDAEC;AAGD,kDAEC;AAGD,8CAIC;AAGD,gDAUC;AAGD,oDAWC;AAnSD,4DAA8D;AAiD9D,MAAM,oBAAoB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAK,EAAE,IAAK,EAAE,IAAK,EAAE,KAAM,CAAC,CAAC;AACzF,MAAM,WAAW,GAAG,4BAA4B,CAAC;AACjD,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAE9C,SAAS,cAAc,CAAC,KAA8B;IACpD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,MAAuC;IAC9D,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3E,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,MAA8B;IAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;SACxC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,YAAY,CAAC,MAA8B,EAAE,KAAwB;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5F,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5F,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAgB,4BAA4B;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2E,CAAC;IACpG,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2E,CAAC;IAClG,MAAM,UAAU,GAAG,IAAI,GAAG,EAMtB,CAAC;IAEL,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAA8B,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IAE7G,OAAO;QACL,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM;YAC/B,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,OAAO;gBAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;;gBAC/B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM;YACvB,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAAE;gBACrD,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,gBAAgB;gBACxB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM;YAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO;YACrD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;YACvD,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG;oBACN,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,gBAAgB;oBACxB,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACzC,GAAG,EAAE,CAAC;oBACN,KAAK,EAAE,CAAC;iBACT,CAAC;gBACF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC;YACrB,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YACjB,MAAM,SAAS,GAAG,KAAK,CAAC;YACxB,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;gBAC7C,IAAI,OAAO,IAAI,MAAM;oBAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAA,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;QACL,CAAC;QACD,gBAAgB;YACd,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,CAA6B,OAAY,EAAwB,EAAE;gBACjF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;gBACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,IAAI,MAAM;wBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;wBAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvC,CAAC;gBACD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACpF,CAAC,CAAC;YACF,MAAM,MAAM,GAAG,CAA6D,OAAY,EAAE,EAAE,CAC1F,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAElG,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC9D,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;gBACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACzG,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACzG,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChE,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC;gBACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpC,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBAC7C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC3G,CAAC,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBACzF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;oBACpE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC;QACD,QAAQ;YACN,OAAO;gBACL,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,MAAM,oBAAO,KAAK,CAAC,MAAM,KAAK,CAAC;gBAC5F,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iCAAM,KAAK,KAAE,MAAM,oBAAO,KAAK,CAAC,MAAM,KAAK,CAAC;gBACxF,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACnD,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,oBAAO,KAAK,CAAC,MAAM,CAAE;oBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAC,OAAA,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAI,CAAC,EAAE,CAAC,CAAA,EAAA,CAAC;iBAC5F,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QACD,KAAK;YACH,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,4BAA4B,EAAE,CAAC;AAEvD,mEAAmE;AACnE,SAAgB,yBAAyB;IACvC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,+DAA+D;AAC/D,SAAgB,qBAAqB,CAAC,OAAmC;;IACvE,IAAI,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,OAAO,MAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAC1D,OAAO,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,IAAI,mCAAI,eAAe,CAAC;AACnD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA4B;IACrD,MAAM,MAAM,GAAG,IAAA,kCAAkB,GAAE,CAAC;IACpC,IAAI,CAAC,MAAM,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,MAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3D,uBAAS,MAAM,IAAK,MAAM,EAAG;AAC/B,CAAC;AAED,yFAAyF;AACzF,SAAgB,mBAAmB,CACjC,IAAY,EACZ,KAAK,GAAG,CAAC,EACT,MAA4B;IAE5B,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,gEAAgE;AAChE,SAAgB,qBAAqB,CACnC,IAAY,EACZ,OAAe,EACf,MAA4B;IAE5B,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,8CAA8C;AAC9C,SAAgB,oBAAoB;IAClC,OAAO,eAAe,CAAC,gBAAgB,EAAE,CAAC;AAC5C,CAAC;AAED,2DAA2D;AAC3D,SAAgB,mBAAmB;IACjC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,6EAA6E;AAC7E,SAAgB,iBAAiB,CAAC,OAAmC,EAAE,IAAY;;IACjF,MAAM,MAAM,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,MAAM,mCAAI,SAAS,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACpE,CAAC;AAED,gFAAgF;AAChF,SAAgB,kBAAkB,CAChC,OAAmC,EACnC,IAAY,EACZ,MAA4B,EAC5B,KAAK,GAAG,CAAC;;IAET,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;QAClC,CAAC,CAAC,iBAAiB,iBAAG,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAK,MAAM,EAAG;QAC5D,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAA,qBAAqB,CAAC,OAAO,CAAC,0CAAE,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACjG,CAAC;AAED,sDAAsD;AACtD,SAAgB,oBAAoB,CAClC,OAAmC,EACnC,IAAY,EACZ,OAAe,EACf,MAA4B;;IAE5B,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ;QAClC,CAAC,CAAC,iBAAiB,iBAAG,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAK,MAAM,EAAG;QAC5D,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACzE,CAAC","sourcesContent":["import type { AccessiOptions } from '../AccessiModule';\nimport { getAccessiTenantId } from '../tenancy/tenantContext';\n\n/** Valore ammesso per un label Prometheus. */\nexport type AccessiMetricLabelValue = string | number | boolean | undefined;\nexport type AccessiMetricLabels = Record<string, AccessiMetricLabelValue>;\n\n/**\n * Destinazione delle metriche Accessi.\n *\n * L'implementazione predefinita e il registry in memoria renderizzato in\n * formato Prometheus. Un host puo passare un sink custom (OpenTelemetry,\n * StatsD, ...) tramite `metrics.sink`.\n */\nexport interface AccessiMetricsSink {\n increment(name: string, value?: number, labels?: AccessiMetricLabels): void;\n gauge?(name: string, value: number, labels?: AccessiMetricLabels): void;\n observe?(name: string, valueMs: number, labels?: AccessiMetricLabels): void;\n}\n\n/** Opzioni di osservabilita di Accessi. */\nexport interface AccessiMetricsOptions {\n /** `false` disabilita le metriche di dominio. Default: abilitate. */\n enabled?: boolean;\n /** Sink custom. Default: registry in memoria. */\n sink?: AccessiMetricsSink;\n /** Prefisso dei nomi. Default `accessi`. */\n prefix?: string;\n}\n\nexport interface AccessiMetricsRegistry extends AccessiMetricsSink {\n observe(name: string, valueMs: number, labels?: AccessiMetricLabels): void;\n gauge(name: string, value: number, labels?: AccessiMetricLabels): void;\n renderPrometheus(): string;\n snapshot(): AccessiMetricsSnapshot;\n reset(): void;\n}\n\nexport interface AccessiMetricsSnapshot {\n counters: Array<{ name: string; labels: Record<string, string>; value: number }>;\n gauges: Array<{ name: string; labels: Record<string, string>; value: number }>;\n histograms: Array<{\n name: string;\n labels: Record<string, string>;\n count: number;\n sum: number;\n buckets: Array<{ le: number; count: number }>;\n }>;\n}\n\nconst HISTOGRAM_BUCKETS_MS = [5, 10, 25, 50, 100, 250, 500, 1_000, 2_500, 5_000, 10_000];\nconst METRIC_NAME = /^[a-zA-Z_:][a-zA-Z0-9_:]*$/;\nconst LABEL_NAME = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n\nfunction normalizeValue(value: AccessiMetricLabelValue): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value === 'boolean') return value ? 'true' : 'false';\n return String(value);\n}\n\nfunction normalizeLabels(labels: AccessiMetricLabels | undefined): Record<string, string> {\n const normalized: Record<string, string> = {};\n for (const [name, value] of Object.entries(labels ?? {})) {\n const text = normalizeValue(value);\n if (text !== undefined && LABEL_NAME.test(name)) normalized[name] = text;\n }\n return normalized;\n}\n\nfunction labelKey(labels: Record<string, string>): string {\n return Object.keys(labels)\n .sort()\n .map((name) => `${name}=${labels[name]}`)\n .join(',');\n}\n\nfunction escapeLabel(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n');\n}\n\nfunction renderLabels(labels: Record<string, string>, extra?: [string, string]): string {\n const entries = Object.entries(labels).sort(([left], [right]) => left.localeCompare(right));\n if (extra) entries.push(extra);\n if (entries.length === 0) return '';\n return `{${entries.map(([name, value]) => `${name}=\"${escapeLabel(value)}\"`).join(',')}}`;\n}\n\nfunction metricName(name: string): string {\n return METRIC_NAME.test(name) ? name : name.replace(/[^a-zA-Z0-9_:]/g, '_');\n}\n\n/**\n * Registry in memoria con rendering Prometheus.\n *\n * Non usa dipendenze: la stessa struttura e usata dal servizio standalone e\n * dai test. `reset()` serve per isolare i test.\n */\nexport function createAccessiMetricsRegistry(): AccessiMetricsRegistry {\n const counters = new Map<string, { name: string; labels: Record<string, string>; value: number }>();\n const gauges = new Map<string, { name: string; labels: Record<string, string>; value: number }>();\n const histograms = new Map<string, {\n name: string;\n labels: Record<string, string>;\n counts: number[];\n sum: number;\n count: number;\n }>();\n\n const entryKey = (name: string, labels: Record<string, string>) => `${metricName(name)}|${labelKey(labels)}`;\n\n return {\n increment(name, value = 1, labels) {\n const normalizedName = metricName(name);\n const normalizedLabels = normalizeLabels(labels);\n const key = entryKey(normalizedName, normalizedLabels);\n const current = counters.get(key);\n if (current) current.value += value;\n else counters.set(key, { name: normalizedName, labels: normalizedLabels, value });\n },\n gauge(name, value, labels) {\n const normalizedName = metricName(name);\n const normalizedLabels = normalizeLabels(labels);\n gauges.set(entryKey(normalizedName, normalizedLabels), {\n name: normalizedName,\n labels: normalizedLabels,\n value,\n });\n },\n observe(name, valueMs, labels) {\n if (!Number.isFinite(valueMs) || valueMs < 0) return;\n const normalizedName = metricName(name);\n const normalizedLabels = normalizeLabels(labels);\n const key = entryKey(normalizedName, normalizedLabels);\n let entry = histograms.get(key);\n if (!entry) {\n entry = {\n name: normalizedName,\n labels: normalizedLabels,\n counts: HISTOGRAM_BUCKETS_MS.map(() => 0),\n sum: 0,\n count: 0,\n };\n histograms.set(key, entry);\n }\n entry.sum += valueMs;\n entry.count += 1;\n const histogram = entry;\n HISTOGRAM_BUCKETS_MS.forEach((bucket, index) => {\n if (valueMs <= bucket) histogram.counts[index] = (histogram.counts[index] ?? 0) + 1;\n });\n },\n renderPrometheus() {\n const lines: string[] = [];\n const grouped = <T extends { name: string }>(entries: T[]): Array<[string, T[]]> => {\n const byName = new Map<string, T[]>();\n for (const entry of entries) {\n const bucket = byName.get(entry.name);\n if (bucket) bucket.push(entry);\n else byName.set(entry.name, [entry]);\n }\n return [...byName.entries()].sort(([left], [right]) => left.localeCompare(right));\n };\n const sorted = <T extends { name: string; labels: Record<string, string> }>(entries: T[]) =>\n [...entries].sort((left, right) => labelKey(left.labels).localeCompare(labelKey(right.labels)));\n\n for (const [name, entries] of grouped([...counters.values()])) {\n lines.push(`# HELP ${name} Accessi metric.`);\n lines.push(`# TYPE ${name} counter`);\n for (const entry of sorted(entries)) lines.push(`${name}${renderLabels(entry.labels)} ${entry.value}`);\n }\n\n for (const [name, entries] of grouped([...gauges.values()])) {\n lines.push(`# HELP ${name} Accessi metric.`);\n lines.push(`# TYPE ${name} gauge`);\n for (const entry of sorted(entries)) lines.push(`${name}${renderLabels(entry.labels)} ${entry.value}`);\n }\n\n for (const [name, entries] of grouped([...histograms.values()])) {\n lines.push(`# HELP ${name} Accessi metric.`);\n lines.push(`# TYPE ${name} histogram`);\n for (const entry of sorted(entries)) {\n HISTOGRAM_BUCKETS_MS.forEach((bucket, index) => {\n lines.push(`${name}_bucket${renderLabels(entry.labels, ['le', String(bucket)])} ${entry.counts[index]}`);\n });\n lines.push(`${name}_bucket${renderLabels(entry.labels, ['le', '+Inf'])} ${entry.count}`);\n lines.push(`${name}_sum${renderLabels(entry.labels)} ${entry.sum}`);\n lines.push(`${name}_count${renderLabels(entry.labels)} ${entry.count}`);\n }\n }\n\n return lines.length > 0 ? `${lines.join('\\n')}\\n` : '';\n },\n snapshot() {\n return {\n counters: [...counters.values()].map((entry) => ({ ...entry, labels: { ...entry.labels } })),\n gauges: [...gauges.values()].map((entry) => ({ ...entry, labels: { ...entry.labels } })),\n histograms: [...histograms.values()].map((entry) => ({\n name: entry.name,\n labels: { ...entry.labels },\n count: entry.count,\n sum: entry.sum,\n buckets: HISTOGRAM_BUCKETS_MS.map((le, index) => ({ le, count: entry.counts[index] ?? 0 })),\n })),\n };\n },\n reset() {\n counters.clear();\n gauges.clear();\n histograms.clear();\n },\n };\n}\n\nconst defaultRegistry = createAccessiMetricsRegistry();\n\n/** Registry globale usato da Accessi e dal servizio standalone. */\nexport function getAccessiMetricsRegistry(): AccessiMetricsRegistry {\n return defaultRegistry;\n}\n\n/** Sink configurato per l'istanza, oppure registry globale. */\nexport function getAccessiMetricsSink(options: AccessiOptions | undefined): AccessiMetricsSink | undefined {\n if (options?.metrics?.enabled === false) return undefined;\n return options?.metrics?.sink ?? defaultRegistry;\n}\n\nfunction withTenantContext(labels?: AccessiMetricLabels): AccessiMetricLabels | undefined {\n const tenant = getAccessiTenantId();\n if (!tenant || labels?.tenant !== undefined) return labels;\n return { tenant, ...labels };\n}\n\n/** Registra una metrica sul registry globale (usato da store e moduli senza options). */\nexport function recordAccessiMetric(\n name: string,\n value = 1,\n labels?: AccessiMetricLabels,\n): void {\n defaultRegistry.increment(name, value, withTenantContext(labels));\n}\n\n/** Registra una durata in millisecondi sul registry globale. */\nexport function recordAccessiDuration(\n name: string,\n valueMs: number,\n labels?: AccessiMetricLabels,\n): void {\n defaultRegistry.observe(name, valueMs, withTenantContext(labels));\n}\n\n/** Render Prometheus del registry globale. */\nexport function renderAccessiMetrics(): string {\n return defaultRegistry.renderPrometheus();\n}\n\n/** Azzera il registry globale (test e reset espliciti). */\nexport function resetAccessiMetrics(): void {\n defaultRegistry.reset();\n}\n\n/** Prefisso configurato, con normalizzazione per evitare nomi non validi. */\nexport function accessiMetricName(options: AccessiOptions | undefined, name: string): string {\n const prefix = options?.metrics?.prefix ?? 'accessi';\n if (!prefix.trim()) return name;\n return `${prefix.trim().replace(/[^a-zA-Z0-9_:]/g, '_')}_${name}`;\n}\n\n/** Incrementa un contatore di dominio sull'istanza (o sul registry globale). */\nexport function countAccessiMetric(\n options: AccessiOptions | undefined,\n name: string,\n labels?: AccessiMetricLabels,\n value = 1,\n): void {\n const withTenant = options?.tenantId\n ? withTenantContext({ tenant: options.tenantId, ...labels })\n : withTenantContext(labels);\n getAccessiMetricsSink(options)?.increment(accessiMetricName(options, name), value, withTenant);\n}\n\n/** Registra una durata di dominio in millisecondi. */\nexport function observeAccessiMetric(\n options: AccessiOptions | undefined,\n name: string,\n valueMs: number,\n labels?: AccessiMetricLabels,\n): void {\n const withTenant = options?.tenantId\n ? withTenantContext({ tenant: options.tenantId, ...labels })\n : withTenantContext(labels);\n const sink = getAccessiMetricsSink(options);\n sink?.observe?.(accessiMetricName(options, name), valueMs, withTenant);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"redisMetrics.js","sourceRoot":"","sources":["../../../src/accessi-module/observability/redisMetrics.ts"],"names":[],"mappings":";;;;;;;;;;;AAcA,oEAuBC;AArCD,uCAAuE;AAOvE;;;;;;GAMG;AACH,SAAgB,4BAA4B,CAC1C,KAAa,EACb,MAAS;IAET,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,QAAQ;YAClB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO,CAAO,MAAc,EAAE,OAAe,EAAE,GAAG,IAA4B,EAAoB,EAAE;oBAClG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACH,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;oBACrD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAA,6BAAmB,EAAC,4BAA4B,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;wBAChE,MAAM,KAAK,CAAC;oBACd,CAAC;4BAAS,CAAC;wBACT,IAAA,+BAAqB,EAAC,qCAAqC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAClG,CAAC;gBACH,CAAC,CAAA,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC;KACF,CAAM,CAAC;AACV,CAAC","sourcesContent":["import { recordAccessiDuration, recordAccessiMetric } from './metrics';\n\n/** Client Redis minimo usato dagli store Accessi. */\nexport interface AccessiRedisEvalClient {\n eval(script: string, numKeys: number, ...args: Array<string | number>): Promise<unknown>;\n}\n\n/**\n * Avvolge un client Redis per misurare errori e latenza degli script Lua.\n *\n * Gli store accettano qualsiasi client con `eval` (ioredis, node-redis, client\n * di test). Il wrapper e trasparente: altri metodi (`quit`, `command`, ...)\n * restano disponibili e legati all'istanza originale.\n */\nexport function instrumentAccessiRedisClient<T extends AccessiRedisEvalClient>(\n store: string,\n client: T,\n): T {\n return new Proxy(client, {\n get(target, property) {\n if (property === 'eval') {\n return async (script: string, numKeys: number, ...args: Array<string | number>): Promise<unknown> => {\n const startedAt = Date.now();\n try {\n return await target.eval(script, numKeys, ...args);\n } catch (error) {\n recordAccessiMetric('accessi_store_errors_total', 1, { store });\n throw error;\n } finally {\n recordAccessiDuration('accessi_store_operation_duration_ms', Date.now() - startedAt, { store });\n }\n };\n }\n const value = Reflect.get(target, property, target);\n return typeof value === 'function' ? value.bind(target) : value;\n },\n }) as T;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccessiHttpExceptionFilter.js","sourceRoot":"","sources":["../../../src/accessi-module/security/AccessiHttpExceptionFilter.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArgumentsHost, Catch, ExceptionFilter, HttpException, HttpStatus } from '@nestjs/common';\nimport { Response } from 'express';\nimport { RestUtilities, StatusCode } from '../../Utilities';\nimport { Logger } from '../../Logger';\n\ntype ExceptionPayload = {\n code?: string;\n error?: string;\n message?: string | string[];\n details?: string[];\n};\n\n/**\n * Finalizes every exception raised before an Accessi controller can reply.\n *\n * This includes invalid JSON, validation-pipe errors and guard failures. The\n * filter deliberately never return SQL, stack traces or provider diagnostics.\n */\n@Catch()\nexport class AccessiHttpExceptionFilter implements ExceptionFilter {\n catch(exception: unknown, host: ArgumentsHost): void {\n const response = host.switchToHttp().getResponse<Response>();\n if (response.headersSent) return;\n\n const status = exception instanceof HttpException\n ? exception.getStatus()\n : RestUtilities.isDatabaseSchemaError(exception)\n ? HttpStatus.SERVICE_UNAVAILABLE\n : HttpStatus.INTERNAL_SERVER_ERROR;\n const payload = this.getPayload(exception);\n const invalidJson = status === HttpStatus.BAD_REQUEST && this.isInvalidJson(exception, payload);\n const explicitMessage = typeof payload.message === 'string' ? payload.message : undefined;\n const code = payload.code\n ?? (RestUtilities.isDatabaseSchemaError(exception)\n ? 'ACCESSI_DATABASE_SCHEMA_OUTDATED'\n : invalidJson\n ? 'ACCESSI_INVALID_JSON'\n : status === HttpStatus.BAD_REQUEST\n ? 'ACCESSI_REQUEST_ERROR'\n : status === HttpStatus.UNAUTHORIZED\n ? 'ACCESSI_UNAUTHORIZED'\n : status === HttpStatus.FORBIDDEN\n ? 'ACCESSI_FORBIDDEN'\n : 'ACCESSI_INTERNAL_ERROR');\n\n const message = code === 'ACCESSI_VALIDATION_ERROR'\n ? 'La richiesta contiene dati non validi.'\n : code === 'ACCESSI_DATABASE_SCHEMA_OUTDATED'\n ? 'Lo schema del database Accessi non e aggiornato. Eseguire la migrazione database e riprovare.'\n : invalidJson\n ? 'Il corpo della richiesta non contiene JSON valido.'\n : explicitMessage ?? (status === HttpStatus.UNAUTHORIZED\n ? 'Autenticazione non valida o scaduta.'\n : status === HttpStatus.FORBIDDEN\n ? 'Operazione non autorizzata.'\n : status >= HttpStatus.INTERNAL_SERVER_ERROR\n ? 'Errore interno del modulo Accessi.'\n : 'Richiesta non valida.');\n\n const stack = exception instanceof Error ? exception.stack : undefined;\n new Logger('[ACCESSI-EXCEPTION]').error(\n `HTTP ${status} ${code}: ${exception instanceof Error ? exception.message : String(exception)}`,\n ...(stack ? [stack] : [])\n );\n\n response.status(status).json({\n severity: 'error',\n status,\n statusCode: StatusCode.Error,\n code,\n error: code,\n message,\n ...(payload.details?.length ? { details: payload.details } : {}),\n });\n }\n\n private getPayload(exception: unknown): ExceptionPayload {\n if (!(exception instanceof HttpException)) return {};\n const response = exception.getResponse();\n return typeof response === 'string' ? { message: response } : response as ExceptionPayload;\n }\n\n private isInvalidJson(exception: unknown, payload: ExceptionPayload): boolean {\n const message = exception instanceof Error ? exception.message : payload.message;\n const text = Array.isArray(message) ? message.join(' ') : String(message ?? '');\n return /json|unexpected token|expected property name|unterminated string/i.test(text);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"accessControl.js","sourceRoot":"","sources":["../../../src/accessi-module/security/accessControl.ts"],"names":[],"mappings":"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","sourcesContent":["import { ForbiddenException, UnauthorizedException } from '@nestjs/common';\nimport { Request } from 'express';\n\n/** Profilo autorizzativo normalizzato estratto dal middleware Accessi. */\nexport interface AuthenticatedAccessiUser {\n codiceUtente: number;\n email?: string;\n flagSuper: boolean;\n flagAdmin: boolean;\n}\n\nfunction normalizeBooleanFlag(value: unknown): boolean {\n return value === true || value === 1 || value === '1';\n}\n\n/**\n * Estrae l'utente gia verificato da `authorizeAccessi` o `JwtSimpleGuard`.\n * Non usare questa funzione come autenticazione: se il middleware non e stato applicato genera 401.\n */\nexport function getAuthenticatedAccessiUser(req: Request): AuthenticatedAccessiUser {\n const payload = (req as Request & { user?: unknown }).user;\n const payloadRecord = payload && typeof payload === 'object' ? payload as Record<string, unknown> : undefined;\n const userData = payloadRecord?.userData && typeof payloadRecord.userData === 'object'\n ? payloadRecord.userData as Record<string, unknown>\n : undefined;\n const rawUser = payloadRecord?.utente ?? userData?.utente ?? payloadRecord;\n const utente = rawUser && typeof rawUser === 'object' ? rawUser as Record<string, unknown> : undefined;\n const codiceUtente = Number(utente?.codiceUtente);\n\n if (!Number.isSafeInteger(codiceUtente) || codiceUtente <= 0) {\n throw new UnauthorizedException('Utente non autenticato.');\n }\n\n return {\n codiceUtente,\n email: typeof utente?.email === 'string' ? utente.email : undefined,\n flagSuper: normalizeBooleanFlag(utente?.flagSuper),\n flagAdmin: normalizeBooleanFlag(utente?.flagAdmin),\n };\n}\n\n/** Impone il flag superutente: gestione utenti e dei loro grant. */\nexport function ensureSuperUser(\n user: AuthenticatedAccessiUser,\n message = 'Operazione riservata ai superutenti.',\n): void {\n if (!user.flagSuper) {\n throw new ForbiddenException(message);\n }\n}\n\n/** Impone il flag admin: catalogo (menu, gruppi, tipi), token di servizio e provider SSO. */\nexport function ensureAdmin(\n user: AuthenticatedAccessiUser,\n message = 'Operazione riservata agli amministratori.',\n): void {\n if (!user.flagAdmin) {\n throw new ForbiddenException(message);\n }\n}\n\n/**\n * Gestione utenti e assegnazioni: consentita a superutenti e admin.\n * `flagAdmin` non conferisce abilitazioni, ma abilita la console completa.\n */\nexport function ensureUserManagement(\n user: AuthenticatedAccessiUser,\n message = 'Operazione riservata agli amministratori degli utenti.',\n): void {\n if (!user.flagSuper && !user.flagAdmin) {\n throw new ForbiddenException(message);\n }\n}\n\n/**\n * Rango di un utente Accessi: 0 utente comune, 1 superutente, 2 admin.\n * La gerarchia e' ADMIN > SUPER: un attore puo' gestire solo utenti di rango\n * pari o inferiore, quindi un superutente non puo' toccare un admin.\n */\nexport function accessiUserRank(user: { flagSuper?: boolean; flagAdmin?: boolean }): number {\n if (user.flagAdmin) return 2;\n if (user.flagSuper) return 1;\n return 0;\n}\n\n/**\n * Impone che l'attore possa gestire il target: rango attore >= rango target.\n * Un superutente (1) gestisce utenti comuni e altri superutenti, ma non admin (2).\n */\nexport function ensureCanManageTargetUser(\n actor: AuthenticatedAccessiUser,\n target: { flagSuper?: boolean; flagAdmin?: boolean },\n message = 'Non puoi gestire un utente di rango superiore al tuo.',\n): void {\n if (accessiUserRank(actor) < accessiUserRank(target)) {\n throw new ForbiddenException(message);\n }\n}\n\n/**\n * Limita la modifica dei flag di privilegio in base al ruolo dell'attore:\n * un admin gestisce sia `flagAdmin` sia `flagSuper`; un superutente senza\n * `flagAdmin` gestisce solo `flagSuper`.\n */\nexport function ensurePrivilegeFlagChanges(\n user: AuthenticatedAccessiUser,\n changes: { flagSuper?: unknown; flagAdmin?: unknown },\n): void {\n if (changes.flagAdmin !== undefined && !user.flagAdmin) {\n throw new ForbiddenException('Solo un admin puo modificare il flag admin.');\n }\n if (changes.flagSuper !== undefined && !user.flagSuper && !user.flagAdmin) {\n throw new ForbiddenException('Solo un superutente o un admin puo modificare il flag superutente.');\n }\n}\n\n/** Accesso alla console: superutenti e admin. */\nexport function ensureConsoleAccess(\n user: AuthenticatedAccessiUser,\n message = 'La console richiede un superutente o un admin Accessi.',\n): void {\n if (!user.flagSuper && !user.flagAdmin) {\n throw new ForbiddenException(message);\n }\n}\n\n/** Permette l'operazione al proprietario della risorsa o a superutenti/admin. */\nexport function ensureSelfOrSuperUser(\n user: AuthenticatedAccessiUser,\n targetUserCode: number,\n message = 'Operazione non autorizzata su questo utente.',\n): void {\n if (user.flagSuper || user.flagAdmin || user.codiceUtente === targetUserCode) {\n return;\n }\n\n throw new ForbiddenException(message);\n}\n\n/** Riconosce i campi che non possono essere aggiornati da un utente sul proprio profilo. */\nexport function hasPrivilegedUserChanges(user: {\n statoRegistrazione?: unknown;\n flagSuper?: unknown;\n flagAdmin?: unknown;\n passwordLoginEnabled?: unknown;\n passwordlessLoginEnabled?: unknown;\n flagDueFattori?: unknown;\n roles?: unknown;\n permissions?: unknown;\n}): boolean {\n return (\n user.statoRegistrazione !== undefined ||\n user.flagSuper !== undefined ||\n user.flagAdmin !== undefined ||\n user.passwordLoginEnabled !== undefined ||\n user.passwordlessLoginEnabled !== undefined ||\n user.flagDueFattori !== undefined ||\n user.roles !== undefined ||\n user.permissions !== undefined\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"accessTokenRevocation.js","sourceRoot":"","sources":["../../../src/accessi-module/security/accessTokenRevocation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccessiOptions } from '../AccessiModule';\nimport { instrumentAccessiRedisClient } from '../observability/redisMetrics';\n\n/**\n * Revoca dei singoli access token tramite `jti`.\n *\n * A differenza della revoca per utente, questa annulla un solo token senza\n * toccare le altre sessioni. La chiave scade al massimo a `exp` del token, cosi\n * la memoria usata resta limitata alla durata dei token emessi.\n */\nexport interface AccessTokenRevocationStore {\n revoke(jti: string, expiresAtMs: number): Promise<void>;\n isRevoked(jti: string): Promise<boolean>;\n /** Health check opzionale per readiness del servizio. */\n healthCheck?(): Promise<boolean>;\n}\n\nexport interface AccessTokenRevocationOptions {\n /** Default: disabilitata se non viene fornito uno store. */\n enabled?: boolean;\n /** Store condiviso (es. Redis) per revocare i token tra istanze. */\n store?: AccessTokenRevocationStore;\n /** TTL di default quando `exp` non e noto. Default: 24 ore. */\n ttlMs?: number;\n}\n\nexport interface MemoryAccessTokenRevocationStore extends AccessTokenRevocationStore {\n clear(): void;\n}\n\nconst REVOKE_SCRIPT =\n \"if tonumber(ARGV[1]) > 0 then return redis.call('SET', KEYS[1], '1', 'PX', ARGV[1]) else return redis.call('SET', KEYS[1], '1') end\";\nconst IS_REVOKED_SCRIPT = \"return redis.call('EXISTS', KEYS[1])\";\n\nexport function createMemoryAccessTokenRevocationStore(): MemoryAccessTokenRevocationStore {\n const revoked = new Map<string, number>();\n const prune = (now: number) => {\n for (const [jti, expiresAt] of revoked) {\n if (expiresAt <= now) revoked.delete(jti);\n }\n };\n return {\n async revoke(jti, expiresAtMs) {\n const now = Date.now();\n prune(now);\n revoked.set(jti, Math.max(expiresAtMs, now + 1));\n },\n async isRevoked(jti) {\n const expiresAt = revoked.get(jti);\n if (expiresAt === undefined) return false;\n if (expiresAt <= Date.now()) {\n revoked.delete(jti);\n return false;\n }\n return true;\n },\n async healthCheck() {\n return true;\n },\n clear() {\n revoked.clear();\n },\n };\n}\n\nexport interface AccessTokenRevocationRedisClient {\n eval(script: string, numKeys: number, ...args: Array<string | number>): Promise<unknown>;\n}\n\nexport interface RedisAccessTokenRevocationStoreOptions {\n client: AccessTokenRevocationRedisClient;\n /** Default: `accessi:revoked-token:`. */\n keyPrefix?: string;\n /** Default: 24 ore. */\n ttlMs?: number;\n}\n\n/** Store Redis per la revoca dei singoli access token. */\nexport function createRedisAccessTokenRevocationStore(\n options: RedisAccessTokenRevocationStoreOptions,\n): AccessTokenRevocationStore {\n if (!options?.client || typeof options.client.eval !== 'function') {\n throw new Error('Redis access token revocation store: client.eval non configurato.');\n }\n\n const keyPrefix = (options.keyPrefix ?? 'accessi:revoked-token:').replace(/:+$/, ':');\n const ttlMs = Math.max(0, Math.trunc(options.ttlMs ?? 24 * 60 * 60 * 1000));\n const client = instrumentAccessiRedisClient('access_token_revocation', options.client);\n\n return {\n async revoke(jti, expiresAtMs) {\n // Se il token e gia scaduto non serve conservare la revoca a lungo: una\n // chiave senza TTL resterebbe per sempre. Il minimo di 1 ms la fa sparire\n // subito, come nello store in memoria.\n const ttl = Number.isFinite(expiresAtMs)\n ? Math.max(1, Math.trunc(expiresAtMs - Date.now()))\n : ttlMs;\n await client.eval(REVOKE_SCRIPT, 1, `${keyPrefix}${jti}`, ttl);\n },\n\n async isRevoked(jti) {\n const result = await client.eval(IS_REVOKED_SCRIPT, 1, `${keyPrefix}${jti}`);\n return Number(result) > 0;\n },\n\n async healthCheck() {\n try {\n const result = await client.eval(\"return redis.call('PING')\", 0);\n return String(result).toUpperCase() === 'PONG';\n } catch {\n return false;\n }\n },\n };\n}\n\nconst defaultMemoryStore = createMemoryAccessTokenRevocationStore();\n\nexport function getAccessTokenRevocationStore(\n options: AccessiOptions,\n): AccessTokenRevocationStore | undefined {\n if (options.accessTokenRevocation?.enabled === false) return undefined;\n if (options.accessTokenRevocation?.store) return options.accessTokenRevocation.store;\n return options.accessTokenRevocation?.enabled === true ? defaultMemoryStore : undefined;\n}\n\n/** True se il `jti` del token risulta revocato. */\nexport async function isAccessiAccessTokenRevoked(\n options: AccessiOptions,\n payload: Record<string, unknown>,\n): Promise<boolean> {\n const store = getAccessTokenRevocationStore(options);\n if (!store) return false;\n const jti = typeof payload.jti === 'string' ? payload.jti : undefined;\n if (!jti) return false;\n return store.isRevoked(jti);\n}\n\n/** Revoca un singolo access token. Richiede uno store configurato. */\nexport async function revokeAccessiAccessToken(\n options: AccessiOptions,\n jti: string,\n expiresAtMs?: number,\n): Promise<void> {\n const store = getAccessTokenRevocationStore(options);\n if (!store) throw new Error('Access token revocation store non configurato.');\n if (typeof jti !== 'string' || jti.trim() === '') {\n throw new Error('jti non valido.');\n }\n const ttlMs = Math.max(0, Math.trunc(options.accessTokenRevocation?.ttlMs ?? 24 * 60 * 60 * 1000));\n await store.revoke(jti, expiresAtMs ?? Date.now() + ttlMs);\n}\n\n/** Variante per i flussi applicativi: no-op se la revoca non e configurata. */\nexport async function revokeAccessiAccessTokenIfConfigured(\n options: AccessiOptions,\n jti: string,\n expiresAtMs?: number,\n): Promise<boolean> {\n if (!getAccessTokenRevocationStore(options)) return false;\n await revokeAccessiAccessToken(options, jti, expiresAtMs);\n return true;\n}\n\n/** Solo per test: azzera lo store in memoria di default. */\nexport function clearDefaultAccessTokenRevocations(): void {\n defaultMemoryStore.clear();\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"accessiValidation.js","sourceRoot":"","sources":["../../../src/accessi-module/security/accessiValidation.ts"],"names":[],"mappings":";;AAUA,kEAmBC;AA7BD,2CAAsF;AACtF,+CAA6C;AAE7C;;;;;;GAMG;AACH,SAAgB,2BAA2B;IACzC,OAAO,IAAI,uBAAc,CAAC;QACxB,SAAS,EAAE,IAAI;QACf,oBAAoB,EAAE,IAAI;QAC1B,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE;YAChB,wBAAwB,EAAE,IAAI;SAC/B;QACD,gBAAgB,EAAE,CAAC,MAAyB,EAAE,EAAE,CAC9C,IAAI,4BAAmB,CAAC;YACtB,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,sBAAU,CAAC,KAAK;YAC5B,IAAI,EAAE,0BAA0B;YAChC,KAAK,EAAE,0BAA0B;YACjC,OAAO,EAAE,wCAAwC;YACjD,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC;SACzC,CAAC;KACL,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,SAAS,uBAAuB,CAAC,MAAyB,EAAE,UAAU,GAAG,EAAE;IACzE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;QAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7E,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAA,KAAK,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,uBAAuB,CAAC,MAAA,KAAK,CAAC,QAAQ,mCAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { BadRequestException, ValidationError, ValidationPipe } from '@nestjs/common';\nimport { StatusCode } from '../../Utilities';\n\n/**\n * Creates the validation pipe used by every Accessi bootstrap path.\n *\n * It deliberately returns one stable, documented error contract instead of\n * Nest's default array. Consumers can branch on `code`; `details` is safe to\n * display or log because it contains only DTO field names and validation text.\n */\nexport function createAccessiValidationPipe(): ValidationPipe {\n return new ValidationPipe({\n whitelist: true,\n forbidNonWhitelisted: true,\n transform: true,\n transformOptions: {\n enableImplicitConversion: true,\n },\n exceptionFactory: (errors: ValidationError[]) =>\n new BadRequestException({\n severity: 'error',\n status: 400,\n statusCode: StatusCode.Error,\n code: 'ACCESSI_VALIDATION_ERROR',\n error: 'ACCESSI_VALIDATION_ERROR',\n message: 'La richiesta contiene dati non validi.',\n details: flattenValidationErrors(errors),\n }),\n });\n}\n\n/** Converts nested class-validator failures into deterministic client details. */\nfunction flattenValidationErrors(errors: ValidationError[], parentPath = ''): string[] {\n return errors.flatMap((error) => {\n const path = parentPath ? `${parentPath}.${error.property}` : error.property;\n const ownMessages = Object.values(error.constraints ?? {}).map((message) => `${path}: ${message}`);\n return [...ownMessages, ...flattenValidationErrors(error.children ?? [], path)];\n });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"adminBootstrap.js","sourceRoot":"","sources":["../../../src/accessi-module/security/adminBootstrap.ts"],"names":[],"mappings":";;AAUA,wEAKC;AAGD,wDAEC;AAGD,4DAEC;AAGD,gEAYC;AAxCD,mCAAsD;AAEtD;;;;GAIG;AACH,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC,wEAAwE;AACxE,SAAgB,8BAA8B;IAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,0DAA0D;AAC1D,SAAgB,sBAAsB;IACpC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,iFAAiF;AACjF,SAAgB,wBAAwB;IACtC,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,0EAA0E;AAC1E,SAAgB,0BAA0B,CAAC,SAAkB;IAC3D,IAAI,CAAC,YAAY,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAA,wBAAe,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["import { randomBytes, timingSafeEqual } from 'crypto';\n\n/**\n * Token di bootstrap admin, valido per il singolo processo Accessi.\n * Viene generato al primo accesso (avvio del modulo) e rigenerato a ogni riavvio: non e mai\n * persistito ne restituito via API, e viene stampato solo nel log del backend.\n */\nlet processToken: string | null = null;\n\n/** Genera (una sola volta per processo) il token di bootstrap admin. */\nexport function getOrCreateAdminBootstrapToken(): string {\n if (!processToken) {\n processToken = randomBytes(32).toString('hex');\n }\n return processToken;\n}\n\n/** Token corrente, oppure null se non ancora generato. */\nexport function getAdminBootstrapToken(): string | null {\n return processToken;\n}\n\n/** Invalida il token (usato dopo un bootstrap riuscito per renderlo monouso). */\nexport function clearAdminBootstrapToken(): void {\n processToken = null;\n}\n\n/** Confronto a tempo costante del token candidato con quello generato. */\nexport function isValidAdminBootstrapToken(candidate: unknown): boolean {\n if (!processToken || typeof candidate !== 'string' || candidate.length === 0) {\n return false;\n }\n\n const expected = Buffer.from(processToken, 'utf8');\n const provided = Buffer.from(candidate, 'utf8');\n if (expected.length !== provided.length) {\n return false;\n }\n\n return timingSafeEqual(expected, provided);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/accessi-module/security/audit.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '../../Logger';\nimport { recordAccessiMetric } from '../observability/metrics';\nimport { getAccessiTenantId } from '../tenancy/tenantContext';\n\n/** Record di audit normalizzato e gia redatto. */\nexport interface AccessiAuditRecord {\n event: string;\n timestamp: string;\n [key: string]: unknown;\n}\n\n/** Destinazione di un record di audit. */\nexport interface AccessiAuditSink {\n /** Nome usato nelle metriche di errore del sink. */\n name?: string;\n write(record: AccessiAuditRecord): void | Promise<void>;\n}\n\nexport interface AccessiAuditQuery {\n event?: string;\n from?: string;\n to?: string;\n codiceUtente?: number;\n limit?: number;\n offset?: number;\n order?: 'asc' | 'desc';\n}\n\nexport interface AccessiAuditPage {\n records: AccessiAuditRecord[];\n total: number;\n limit: number;\n offset: number;\n}\n\n/** Sink interrogabile dagli endpoint amministrativi e dalla retention. */\nexport interface AccessiAuditQueryableSink extends AccessiAuditSink {\n query(filter?: AccessiAuditQuery): Promise<AccessiAuditPage>;\n purge(before: Date): Promise<number>;\n}\n\n/** Opzioni di audit del modulo. */\nexport interface AccessiAuditOptions {\n /** `false` disattiva i sink ma lascia il log strutturato. Default: abilitati. */\n enabled?: boolean;\n /** Sink aggiuntivi (HTTP, DB, OpenTelemetry). */\n sinks?: AccessiAuditSink[];\n /** Sink interrogabile usato da `/api/accessi/audit`. Default: primo sink queryable. */\n store?: AccessiAuditQueryableSink;\n /** Giorni di retention applicati ai sink queryable. Default: nessuna scadenza automatica. */\n retentionDays?: number;\n /** Chiavi aggiuntive da redigere, oltre a quelle predefinite. */\n redact?: string[];\n /** Etichetta tenant aggiunta a ogni record (multi-tenancy). */\n tenantId?: string;\n /** Scrivi anche sul Logger strutturato. Default: true. */\n logger?: boolean;\n}\n\nconst REDACTED = '[REDACTED]';\nconst TRUNCATED = '[TRUNCATED]';\n\nconst DEFAULT_REDACTED_KEYS = new Set([\n 'token',\n 'accesstoken',\n 'refreshtoken',\n 'idtoken',\n 'bearer',\n 'jwt',\n 'authorization',\n 'cookie',\n 'setcookie',\n 'password',\n 'passwordhash',\n 'hashedpassword',\n 'resettoken',\n 'secret',\n 'clientsecret',\n 'privatekey',\n 'apikey',\n 'csrf',\n 'csrftoken',\n]);\n\nconst MAX_STRING_LENGTH = 512;\nconst MAX_ARRAY_LENGTH = 50;\nconst MAX_OBJECT_KEYS = 100;\nconst MAX_DEPTH = 4;\nconst PURGE_INTERVAL_MS = 60 * 60 * 1000;\n\ninterface ResolvedAccessiAuditConfig {\n sinks: AccessiAuditSink[];\n redactedKeys: Set<string>;\n retentionDays?: number;\n loggerEnabled: boolean;\n tenantId?: string;\n lastPurgeAt: number;\n}\n\nfunction resolveConfig(options: AccessiAuditOptions | undefined): ResolvedAccessiAuditConfig {\n const redactedKeys = new Set(DEFAULT_REDACTED_KEYS);\n for (const key of options?.redact ?? []) redactedKeys.add(normalizedKey(key));\n const retentionDays = Number(options?.retentionDays);\n return {\n sinks: options?.enabled === false\n ? []\n : [\n ...(options?.store ? [options.store] : []),\n ...(options?.sinks ?? []).filter((sink) => sink !== options?.store),\n ],\n redactedKeys,\n ...(Number.isFinite(retentionDays) && retentionDays > 0 ? { retentionDays } : {}),\n loggerEnabled: options?.logger !== false,\n ...(options?.tenantId ? { tenantId: options.tenantId } : {}),\n lastPurgeAt: 0,\n };\n}\n\nlet defaultConfig = resolveConfig(undefined);\nconst tenantConfigs = new Map<string, ResolvedAccessiAuditConfig>();\n\nfunction currentConfig(): ResolvedAccessiAuditConfig {\n const tenantId = getAccessiTenantId();\n if (tenantId) {\n const tenantConfig = tenantConfigs.get(tenantId);\n if (tenantConfig) return tenantConfig;\n }\n return defaultConfig;\n}\n\nfunction normalizedKey(key: string): string {\n return key.toLowerCase().replace(/[-_\\s]/g, '');\n}\n\n/**\n * Redige ricorsivamente token, segreti, cookie e header sensibili.\n *\n * Limita profondita, lunghezza delle stringhe e numero di elementi per evitare\n * che un payload applicativo finisca per intero nell'audit.\n */\nexport function redactAccessiAuditValue(value: unknown, depth = 0): unknown {\n return redactValue(value, depth, currentConfig().redactedKeys);\n}\n\nfunction redactValue(value: unknown, depth: number, keys: Set<string>): unknown {\n if (depth > MAX_DEPTH) return TRUNCATED;\n if (value === null || value === undefined) return value;\n if (typeof value === 'string') {\n return value.length > MAX_STRING_LENGTH ? `${value.slice(0, MAX_STRING_LENGTH - 3)}...` : value;\n }\n if (typeof value === 'number' || typeof value === 'boolean') return value;\n if (typeof value === 'bigint') return value.toString();\n if (value instanceof Date) return value.toISOString();\n if (value instanceof Error) {\n return { name: value.name, message: redactValue(value.message, depth + 1, keys) };\n }\n if (Array.isArray(value)) {\n return value.slice(0, MAX_ARRAY_LENGTH).map((item) => redactValue(item, depth + 1, keys));\n }\n if (typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value as Record<string, unknown>).slice(0, MAX_OBJECT_KEYS)) {\n result[key] = keys.has(normalizedKey(key))\n ? REDACTED\n : redactValue(entry, depth + 1, keys);\n }\n return result;\n }\n return String(value);\n}\n\nfunction redactDetails(details: Record<string, unknown>): Record<string, unknown> {\n return redactAccessiAuditValue(details) as Record<string, unknown>;\n}\n\nfunction reportSinkError(sink: AccessiAuditSink, error: unknown): void {\n recordAccessiMetric('accessi_audit_sink_errors_total', 1, { sink: sink.name ?? 'unknown' });\n try {\n new Logger('AccessiAudit').error(\n `Audit sink non disponibile${sink.name ? ` (${sink.name})` : ''}: ${error instanceof Error ? error.message : String(error)}`,\n );\n } catch {\n // Il logging non deve mai interrompere l'operazione applicativa.\n }\n}\n\nfunction writeToSink(sink: AccessiAuditSink, record: AccessiAuditRecord): void {\n try {\n const result = sink.write(record);\n if (result && typeof (result as Promise<void>).catch === 'function') {\n (result as Promise<void>).catch((error) => reportSinkError(sink, error));\n }\n } catch (error) {\n reportSinkError(sink, error);\n }\n}\n\nfunction maybePurge(config: ResolvedAccessiAuditConfig): void {\n if (!config.retentionDays || config.retentionDays <= 0) return;\n const now = Date.now();\n if (now - config.lastPurgeAt < PURGE_INTERVAL_MS) return;\n config.lastPurgeAt = now;\n const before = new Date(now - config.retentionDays * 24 * 60 * 60 * 1000);\n for (const sink of config.sinks) {\n if (typeof (sink as AccessiAuditQueryableSink).purge !== 'function') continue;\n try {\n const result = (sink as AccessiAuditQueryableSink).purge(before);\n if (result && typeof (result as Promise<number>).catch === 'function') {\n (result as Promise<number>).catch((error) => reportSinkError(sink, error));\n }\n } catch (error) {\n reportSinkError(sink, error);\n }\n }\n}\n\n/**\n * Configura i sink di audit.\n *\n * Chiamato da `AccessiModule.forRoot`. Con `tenantId` la configurazione vale\n * solo per quel tenant e non sovrascrive quella degli altri: e il presupposto\n * per il router multi-tenant in-process. Senza `tenantId` aggiorna la\n * configurazione di default (comportamento single-tenant).\n */\nexport function configureAccessiAudit(options: AccessiAuditOptions | undefined): void {\n defaultConfig = resolveConfig(options);\n}\n\n/**\n * Configura audit e sink per un tenant specifico (router in-process).\n *\n * La configurazione vale quando la richiesta e dentro\n * `runWithAccessiTenant`/`createAccessiTenantRouter`; gli eventi fuori da un\n * contesto tenant usano la configurazione di default del processo.\n */\nexport function configureAccessiTenantAudit(\n tenantId: string,\n options: AccessiAuditOptions | undefined,\n): void {\n if (!tenantId) throw new Error('configureAccessiTenantAudit: tenantId obbligatorio.');\n tenantConfigs.set(tenantId, resolveConfig({ ...(options ?? {}), tenantId }));\n}\n\n/** Ripristina la configurazione iniziale (logger attivo, nessun sink). */\nexport function resetAccessiAudit(): void {\n defaultConfig = resolveConfig(undefined);\n tenantConfigs.clear();\n}\n\n/** Sink interrogabile configurato, usato dagli endpoint amministrativi. */\nexport function getAccessiAuditStore(tenantId?: string): AccessiAuditQueryableSink | undefined {\n const resolvedTenant = tenantId ?? getAccessiTenantId();\n const config = resolvedTenant\n ? tenantConfigs.get(resolvedTenant) ?? defaultConfig\n : defaultConfig;\n return config.sinks.find((sink): sink is AccessiAuditQueryableSink =>\n typeof (sink as AccessiAuditQueryableSink).query === 'function'\n && typeof (sink as AccessiAuditQueryableSink).purge === 'function',\n );\n}\n\n/**\n * Registra un evento di sicurezza.\n *\n * Il record viene redatto prima di raggiungere logger e sink. Un sink guasto\n * non interrompe mai il flusso applicativo.\n */\nexport function auditAccessi(event: string, details: Record<string, unknown> = {}): void {\n const config = currentConfig();\n const contextTenant = getAccessiTenantId();\n const tenantId = contextTenant ?? config.tenantId;\n const record: AccessiAuditRecord = {\n event,\n timestamp: new Date().toISOString(),\n ...(tenantId ? { tenant: tenantId } : {}),\n ...redactDetails(details ?? {}),\n };\n\n if (config.loggerEnabled) {\n try {\n new Logger('AccessiAudit').warning(JSON.stringify(record));\n } catch {\n // Il logging non deve mai interrompere l'operazione applicativa.\n }\n }\n\n for (const sink of config.sinks) writeToSink(sink, record);\n maybePurge(config);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auditSinks.js","sourceRoot":"","sources":["../../../src/accessi-module/security/auditSinks.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AccessiAuditPage,\n AccessiAuditQuery,\n AccessiAuditQueryableSink,\n AccessiAuditRecord,\n AccessiAuditSink,\n} from './audit';\nimport { instrumentAccessiRedisClient } from '../observability/redisMetrics';\nimport type { AccessiRedisEvalClient } from '../observability/redisMetrics';\n\nconst DEFAULT_LIMIT = 100;\nconst MAX_LIMIT = 1_000;\n\nfunction normalizeQuery(query: AccessiAuditQuery = {}): Required<Pick<AccessiAuditQuery, 'limit' | 'offset' | 'order'>> {\n const limit = Number.isFinite(query.limit)\n ? Math.min(MAX_LIMIT, Math.max(1, Math.trunc(query.limit as number)))\n : DEFAULT_LIMIT;\n const offset = Number.isFinite(query.offset) ? Math.max(0, Math.trunc(query.offset as number)) : 0;\n return { limit, offset, order: query.order === 'asc' ? 'asc' : 'desc' };\n}\n\nfunction recordTime(record: AccessiAuditRecord): number {\n const time = Date.parse(record.timestamp);\n return Number.isFinite(time) ? time : 0;\n}\n\nfunction matches(record: AccessiAuditRecord, query: AccessiAuditQuery): boolean {\n if (query.event && record.event !== query.event) return false;\n if (query.codiceUtente !== undefined && Number(record.codiceUtente) !== query.codiceUtente) return false;\n const time = recordTime(record);\n if (query.from) {\n const from = Date.parse(query.from);\n if (Number.isFinite(from) && time < from) return false;\n }\n if (query.to) {\n const to = Date.parse(query.to);\n if (Number.isFinite(to) && time > to) return false;\n }\n return true;\n}\n\nfunction paginate(records: AccessiAuditRecord[], query: AccessiAuditQuery): AccessiAuditPage {\n const { limit, offset, order } = normalizeQuery(query);\n const filtered = records.filter((record) => matches(record, query));\n const ordered = order === 'asc' ? filtered : [...filtered].reverse();\n return {\n records: ordered.slice(offset, offset + limit),\n total: filtered.length,\n limit,\n offset,\n };\n}\n\nfunction cloneRecord(record: AccessiAuditRecord): AccessiAuditRecord {\n return JSON.parse(JSON.stringify(record)) as AccessiAuditRecord;\n}\n\n/** Opzioni del sink in memoria. */\nexport interface MemoryAccessiAuditSinkOptions {\n name?: string;\n /** Numero massimo di record conservati. Default: 10000. */\n maxRecords?: number;\n /** Retention in millisecondi. Default: nessuna scadenza. */\n retentionMs?: number;\n /** Orologio iniettabile per i test. */\n now?: () => number;\n}\n\nexport interface MemoryAccessiAuditSink extends AccessiAuditQueryableSink {\n all(): AccessiAuditRecord[];\n clear(): void;\n}\n\n/**\n * Sink in memoria con query e retention.\n *\n * Adatto a sviluppo, test e singola istanza. Per piu istanze usare\n * `createRedisAccessiAuditSink` o un sink esterno.\n */\nexport function createMemoryAccessiAuditSink(\n options: MemoryAccessiAuditSinkOptions = {},\n): MemoryAccessiAuditSink {\n const maxRecords = Math.max(1, Math.trunc(options.maxRecords ?? 10_000));\n const retentionMs = Math.max(0, Number(options.retentionMs ?? 0));\n const now = options.now ?? Date.now;\n let records: AccessiAuditRecord[] = [];\n\n const purgeExpired = (): void => {\n if (!retentionMs) return;\n const threshold = now() - retentionMs;\n records = records.filter((record) => recordTime(record) >= threshold);\n };\n\n return {\n name: options.name ?? 'memory',\n write(record) {\n records.push(cloneRecord(record));\n if (records.length > maxRecords) records = records.slice(records.length - maxRecords);\n purgeExpired();\n },\n async query(query = {}) {\n purgeExpired();\n return paginate(records, query);\n },\n async purge(before: Date) {\n const threshold = before.getTime();\n const beforeCount = records.length;\n records = records.filter((record) => recordTime(record) >= threshold);\n return beforeCount - records.length;\n },\n all() {\n return records.map(cloneRecord);\n },\n clear() {\n records = [];\n },\n };\n}\n\n/** Sink HTTP: inoltra ogni record a un endpoint esterno (SIEM, collector). */\nexport interface HttpAccessiAuditSinkOptions {\n name?: string;\n url: string;\n headers?: Record<string, string>;\n fetch?: typeof fetch;\n timeoutMs?: number;\n}\n\nexport function createHttpAccessiAuditSink(\n options: HttpAccessiAuditSinkOptions,\n): AccessiAuditSink {\n if (!options?.url) throw new Error('Audit sink HTTP: url obbligatoria.');\n return {\n name: options.name ?? 'http',\n async write(record) {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (typeof fetchImpl !== 'function') {\n throw new Error('Audit sink HTTP: fetch non disponibile.');\n }\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), options.timeoutMs ?? 3000);\n try {\n const response = await fetchImpl(options.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(options.headers ?? {}),\n },\n body: JSON.stringify(record),\n signal: controller.signal,\n });\n if (!response.ok) {\n throw new Error(`Audit sink HTTP: risposta ${response.status}.`);\n }\n } finally {\n clearTimeout(timeout);\n }\n },\n };\n}\n\n/**\n * Adattatore per database, OpenTelemetry o qualunque destinazione custom.\n *\n * La callback riceve un record gia redatto e serializzabile.\n */\nexport function createCallbackAccessiAuditSink(\n write: (record: AccessiAuditRecord) => void | Promise<void>,\n name = 'callback',\n): AccessiAuditSink {\n return { name, write };\n}\n\nexport interface RedisAccessiAuditSinkOptions {\n client: AccessiRedisEvalClient;\n name?: string;\n /** Default: `accessi:audit:`. */\n keyPrefix?: string;\n /** Numero massimo di record. Default: 10000. */\n maxRecords?: number;\n /** Retention Redis in millisecondi. Default: 30 giorni. */\n retentionMs?: number;\n}\n\nconst REDIS_WRITE_SCRIPT = `\nlocal key = KEYS[1]\nredis.call('RPUSH', key, ARGV[1])\nredis.call('LTRIM', key, -tonumber(ARGV[2]), -1)\nredis.call('PEXPIRE', key, ARGV[3])\nreturn 1\n`;\n\nconst REDIS_READ_SCRIPT = `return redis.call('LRANGE', KEYS[1], 0, -1)`;\n\nconst REDIS_REWRITE_SCRIPT = `\nlocal key = KEYS[1]\nredis.call('DEL', key)\nfor i = 2, #ARGV do\n redis.call('RPUSH', key, ARGV[i])\nend\nredis.call('PEXPIRE', key, ARGV[1])\nreturn #ARGV - 1\n`;\n\nfunction parseRedisRecords(value: unknown): AccessiAuditRecord[] {\n if (!Array.isArray(value)) return [];\n const records: AccessiAuditRecord[] = [];\n for (const entry of value) {\n if (typeof entry !== 'string') continue;\n try {\n const parsed = JSON.parse(entry) as AccessiAuditRecord;\n if (parsed && typeof parsed.event === 'string' && typeof parsed.timestamp === 'string') {\n records.push(parsed);\n }\n } catch {\n // Un record corrotto non deve bloccare query ed export.\n }\n }\n return records;\n}\n\n/**\n * Sink Redis persistente, condiviso tra istanze e interrogabile.\n *\n * Usa una lista con `LTRIM` per limitare i record e `PEXPIRE` per la retention.\n * Le query leggono la lista e filtrano lato applicazione.\n */\nexport function createRedisAccessiAuditSink(\n options: RedisAccessiAuditSinkOptions,\n): AccessiAuditQueryableSink {\n if (!options?.client || typeof options.client.eval !== 'function') {\n throw new Error('Audit sink Redis: client.eval non configurato.');\n }\n const client = instrumentAccessiRedisClient('audit', options.client);\n const key = `${(options.keyPrefix ?? 'accessi:audit:').replace(/:*$/, ':')}events`;\n const maxRecords = Math.max(1, Math.trunc(options.maxRecords ?? 10_000));\n const retentionMs = Math.max(1_000, Math.trunc(options.retentionMs ?? 30 * 24 * 60 * 60 * 1000));\n\n const readAll = async (): Promise<AccessiAuditRecord[]> =>\n parseRedisRecords(await client.eval(REDIS_READ_SCRIPT, 1, key));\n\n return {\n name: options.name ?? 'redis',\n async write(record) {\n await client.eval(REDIS_WRITE_SCRIPT, 1, key, JSON.stringify(record), maxRecords, retentionMs);\n },\n async query(query = {}) {\n return paginate(await readAll(), query);\n },\n async purge(before: Date) {\n const records = await readAll();\n const kept = records.filter((record) => recordTime(record) >= before.getTime());\n const removed = records.length - kept.length;\n if (removed === 0) return 0;\n await client.eval(\n REDIS_REWRITE_SCRIPT,\n 1,\n key,\n retentionMs,\n ...kept.map((record) => JSON.stringify(record)),\n );\n return removed;\n },\n };\n}\n"]}