emilsoftware-utilities 2.0.0-dev.8 → 2.0.0-dev.80

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 (914) hide show
  1. package/README.MD +323 -38
  2. package/dist/ContractGenerator.d.ts +4 -3
  3. package/dist/ContractGenerator.js +15 -5
  4. package/dist/ContractGenerator.js.map +1 -1
  5. package/dist/DailyFileTransport.d.ts +21 -0
  6. package/dist/DailyFileTransport.js +74 -0
  7. package/dist/DailyFileTransport.js.map +1 -0
  8. package/dist/DatabaseUpdater.js +32 -29
  9. package/dist/DatabaseUpdater.js.map +1 -1
  10. package/dist/EmilsoftwareModule.d.ts +15 -1
  11. package/dist/EmilsoftwareModule.js +1 -1
  12. package/dist/EmilsoftwareModule.js.map +1 -1
  13. package/dist/ExecutionTimeLogger.d.ts +2 -2
  14. package/dist/ExecutionTimeLogger.js +5 -4
  15. package/dist/ExecutionTimeLogger.js.map +1 -1
  16. package/dist/Logger.d.ts +22 -11
  17. package/dist/Logger.js +132 -119
  18. package/dist/Logger.js.map +1 -1
  19. package/dist/Orm.d.ts +32 -6
  20. package/dist/Orm.js +148 -38
  21. package/dist/Orm.js.map +1 -1
  22. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  23. package/dist/Utilities.d.ts +18 -8
  24. package/dist/Utilities.js +143 -37
  25. package/dist/Utilities.js.map +1 -1
  26. package/dist/accessi/client/admin/index.d.ts +18 -0
  27. package/dist/accessi/client/admin/index.js +58 -0
  28. package/dist/accessi/client/admin/index.js.map +1 -0
  29. package/dist/accessi/client/createAccessiClient.d.ts +21 -0
  30. package/dist/accessi/client/createAccessiClient.js +31 -0
  31. package/dist/accessi/client/createAccessiClient.js.map +1 -0
  32. package/dist/accessi/client/generated/admin.d.ts +621 -0
  33. package/dist/accessi/client/generated/admin.js +591 -0
  34. package/dist/accessi/client/generated/admin.js.map +1 -0
  35. package/dist/accessi/client/generated/public.d.ts +121 -0
  36. package/dist/accessi/client/generated/public.js +119 -0
  37. package/dist/accessi/client/generated/public.js.map +1 -0
  38. package/dist/accessi/client/generated/service.d.ts +53 -0
  39. package/dist/accessi/client/generated/service.js +63 -0
  40. package/dist/accessi/client/generated/service.js.map +1 -0
  41. package/dist/accessi/client/index.d.ts +44 -0
  42. package/dist/accessi/client/index.js +99 -0
  43. package/dist/accessi/client/index.js.map +1 -0
  44. package/dist/accessi/client/public/index.d.ts +18 -0
  45. package/dist/accessi/client/public/index.js +58 -0
  46. package/dist/accessi/client/public/index.js.map +1 -0
  47. package/dist/accessi/client/service/index.d.ts +17 -0
  48. package/dist/accessi/client/service/index.js +57 -0
  49. package/dist/accessi/client/service/index.js.map +1 -0
  50. package/dist/accessi/console/index.d.ts +15 -0
  51. package/dist/accessi/console/index.js +25 -0
  52. package/dist/accessi/console/index.js.map +1 -0
  53. package/dist/accessi/contracts/dtos.d.ts +8 -0
  54. package/dist/accessi/contracts/dtos.js +25 -0
  55. package/dist/accessi/contracts/dtos.js.map +1 -0
  56. package/dist/accessi/contracts/index.d.ts +25 -0
  57. package/dist/accessi/contracts/index.js +28 -0
  58. package/dist/accessi/contracts/index.js.map +1 -0
  59. package/dist/accessi/openapi/index.d.ts +2 -0
  60. package/dist/accessi/openapi/index.js +19 -0
  61. package/dist/accessi/openapi/index.js.map +1 -0
  62. package/dist/accessi/resource-server/core.d.ts +6 -0
  63. package/dist/accessi/resource-server/core.js +23 -0
  64. package/dist/accessi/resource-server/core.js.map +1 -0
  65. package/dist/accessi/resource-server/errors.d.ts +10 -0
  66. package/dist/accessi/resource-server/errors.js +19 -0
  67. package/dist/accessi/resource-server/errors.js.map +1 -0
  68. package/dist/accessi/resource-server/express.d.ts +17 -0
  69. package/dist/accessi/resource-server/express.js +87 -0
  70. package/dist/accessi/resource-server/express.js.map +1 -0
  71. package/dist/accessi/resource-server/index.d.ts +3 -0
  72. package/dist/accessi/resource-server/index.js +20 -0
  73. package/dist/accessi/resource-server/index.js.map +1 -0
  74. package/dist/accessi/resource-server/introspection.d.ts +16 -0
  75. package/dist/accessi/resource-server/introspection.js +115 -0
  76. package/dist/accessi/resource-server/introspection.js.map +1 -0
  77. package/dist/accessi/resource-server/keys.d.ts +11 -0
  78. package/dist/accessi/resource-server/keys.js +22 -0
  79. package/dist/accessi/resource-server/keys.js.map +1 -0
  80. package/dist/accessi/resource-server/nest.d.ts +9 -0
  81. package/dist/accessi/resource-server/nest.js +75 -0
  82. package/dist/accessi/resource-server/nest.js.map +1 -0
  83. package/dist/accessi/resource-server/runtime.d.ts +27 -0
  84. package/dist/accessi/resource-server/runtime.js +179 -0
  85. package/dist/accessi/resource-server/runtime.js.map +1 -0
  86. package/dist/accessi/resource-server/token.d.ts +23 -0
  87. package/dist/accessi/resource-server/token.js +276 -0
  88. package/dist/accessi/resource-server/token.js.map +1 -0
  89. package/dist/accessi/resource-server/types.d.ts +114 -0
  90. package/dist/accessi/resource-server/types.js +3 -0
  91. package/dist/accessi/resource-server/types.js.map +1 -0
  92. package/dist/accessi/server/index.d.ts +12 -0
  93. package/dist/accessi/server/index.js +32 -0
  94. package/dist/accessi/server/index.js.map +1 -0
  95. package/dist/accessi/server/standalone.d.ts +39 -0
  96. package/dist/accessi/server/standalone.js +191 -0
  97. package/dist/accessi/server/standalone.js.map +1 -0
  98. package/dist/accessi/server/tenants.d.ts +97 -0
  99. package/dist/accessi/server/tenants.js +275 -0
  100. package/dist/accessi/server/tenants.js.map +1 -0
  101. package/dist/accessi/ui/index.d.ts +13 -0
  102. package/dist/accessi/ui/index.js +19 -0
  103. package/dist/accessi/ui/index.js.map +1 -0
  104. package/dist/accessi-module/AccessiModule.d.ts +225 -0
  105. package/dist/accessi-module/AccessiModule.js +49 -5
  106. package/dist/accessi-module/AccessiModule.js.map +1 -1
  107. package/dist/accessi-module/Console/accessiFetch.d.ts +59 -0
  108. package/dist/accessi-module/Console/accessiFetch.js +178 -0
  109. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  110. package/dist/accessi-module/Console/console.css +774 -0
  111. package/dist/accessi-module/Console/console.d.ts +1 -0
  112. package/dist/accessi-module/Console/console.js +4173 -0
  113. package/dist/accessi-module/Console/console.js.map +1 -0
  114. package/dist/accessi-module/Console/generated/emilsoftware-utilities.d.ts +781 -0
  115. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js +746 -0
  116. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  118. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  119. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  121. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  122. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.d.ts +16 -0
  124. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js +3 -0
  125. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  127. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  128. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.d.ts +14 -0
  130. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js +3 -0
  131. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.d.ts +10 -0
  133. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js +9 -0
  134. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  136. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  137. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  139. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  140. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  142. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  143. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  145. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  146. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.d.ts +17 -0
  148. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.d.ts +14 -0
  151. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js +3 -0
  152. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.d.ts +13 -0
  154. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js +9 -0
  155. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  157. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  158. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.d.ts +10 -0
  160. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js +9 -0
  161. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.d.ts +14 -0
  163. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js +3 -0
  164. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.d.ts +10 -0
  166. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.d.ts +14 -0
  169. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.d.ts +12 -0
  172. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js +9 -0
  173. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.d.ts +12 -0
  175. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  178. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  181. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  184. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  185. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  187. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  188. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  190. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  191. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +22 -0
  193. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  194. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  196. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  197. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  199. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  200. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/createScopeRequest.d.ts +18 -0
  202. package/dist/accessi-module/Console/generated/model/createScopeRequest.js +9 -0
  203. package/dist/accessi-module/Console/generated/model/createScopeRequest.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  205. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  206. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  208. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  209. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  211. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  212. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.d.ts +12 -0
  214. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/exportAuditOrder.d.ts +11 -0
  217. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js +15 -0
  218. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/exportAuditParams.d.ts +37 -0
  220. package/dist/accessi-module/Console/generated/model/exportAuditParams.js +3 -0
  221. package/dist/accessi-module/Console/generated/model/exportAuditParams.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.d.ts +15 -0
  223. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.d.ts +14 -0
  226. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js +3 -0
  227. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  229. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  230. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  235. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  236. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  237. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  238. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  239. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  240. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  241. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  242. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  243. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  244. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  245. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  246. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  247. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  248. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  249. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  250. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  251. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  252. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  253. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  254. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  255. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  256. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  257. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  258. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +16 -0
  259. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  260. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  261. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  262. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  263. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  264. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.d.ts +14 -0
  265. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js +3 -0
  266. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js.map +1 -0
  267. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  268. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  269. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  270. package/dist/accessi-module/Console/generated/model/getMenusParams.d.ts +12 -0
  271. package/dist/accessi-module/Console/generated/model/getMenusParams.js +9 -0
  272. package/dist/accessi-module/Console/generated/model/getMenusParams.js.map +1 -0
  273. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  274. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  275. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  276. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  277. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  278. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  279. package/dist/accessi-module/Console/generated/model/getSchemaResponse.d.ts +14 -0
  280. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js +3 -0
  281. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +1 -0
  282. package/dist/accessi-module/Console/generated/model/getScopesResponse.d.ts +14 -0
  283. package/dist/accessi-module/Console/generated/model/getScopesResponse.js +3 -0
  284. package/dist/accessi-module/Console/generated/model/getScopesResponse.js.map +1 -0
  285. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  286. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  287. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  288. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  289. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  290. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  291. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  292. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  293. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  294. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  295. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  296. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  297. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.d.ts +12 -0
  298. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js +9 -0
  299. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js.map +1 -0
  300. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  301. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  302. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  303. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  304. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  305. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  306. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  307. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  308. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  309. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  310. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  311. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  312. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  313. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  314. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  315. package/dist/accessi-module/Console/generated/model/index.d.ts +134 -0
  316. package/dist/accessi-module/Console/generated/model/index.js +151 -0
  317. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  318. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.d.ts +10 -0
  319. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js +9 -0
  320. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js.map +1 -0
  321. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.d.ts +14 -0
  322. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js +3 -0
  323. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js.map +1 -0
  324. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  325. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  326. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  327. package/dist/accessi-module/Console/generated/model/loginAsRequest.d.ts +10 -0
  328. package/dist/accessi-module/Console/generated/model/loginAsRequest.js +9 -0
  329. package/dist/accessi-module/Console/generated/model/loginAsRequest.js.map +1 -0
  330. package/dist/accessi-module/Console/generated/model/loginAsResponse.d.ts +14 -0
  331. package/dist/accessi-module/Console/generated/model/loginAsResponse.js +3 -0
  332. package/dist/accessi-module/Console/generated/model/loginAsResponse.js.map +1 -0
  333. package/dist/accessi-module/Console/generated/model/loginAsResult.d.ts +16 -0
  334. package/dist/accessi-module/Console/generated/model/loginAsResult.js +9 -0
  335. package/dist/accessi-module/Console/generated/model/loginAsResult.js.map +1 -0
  336. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +14 -0
  337. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  338. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  339. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  340. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  341. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  342. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +34 -0
  343. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  344. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  345. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  346. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  347. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  348. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  349. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  350. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  351. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  352. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  353. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  354. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  355. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  356. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  357. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  358. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  359. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  360. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  361. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  362. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  363. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  364. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  365. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  366. package/dist/accessi-module/Console/generated/model/queryAuditOrder.d.ts +11 -0
  367. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js +15 -0
  368. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js.map +1 -0
  369. package/dist/accessi-module/Console/generated/model/queryAuditParams.d.ts +37 -0
  370. package/dist/accessi-module/Console/generated/model/queryAuditParams.js +3 -0
  371. package/dist/accessi-module/Console/generated/model/queryAuditParams.js.map +1 -0
  372. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.d.ts +10 -0
  373. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js +9 -0
  374. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js.map +1 -0
  375. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.d.ts +14 -0
  376. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js +3 -0
  377. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js.map +1 -0
  378. package/dist/accessi-module/Console/generated/model/refreshTokenResult.d.ts +13 -0
  379. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js +3 -0
  380. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js.map +1 -0
  381. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  382. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  383. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  384. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  385. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  386. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  387. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  388. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  389. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  390. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.d.ts +10 -0
  391. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js +9 -0
  392. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js.map +1 -0
  393. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  394. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  395. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  396. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  397. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  398. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  399. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  400. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  401. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  402. package/dist/accessi-module/Console/generated/model/schemaDdlResult.d.ts +20 -0
  403. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js +3 -0
  404. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +1 -0
  405. package/dist/accessi-module/Console/generated/model/schemaDdlSection.d.ts +12 -0
  406. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js +9 -0
  407. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +1 -0
  408. package/dist/accessi-module/Console/generated/model/scopeEntity.d.ts +12 -0
  409. package/dist/accessi-module/Console/generated/model/scopeEntity.js +9 -0
  410. package/dist/accessi-module/Console/generated/model/scopeEntity.js.map +1 -0
  411. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  412. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  413. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  414. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  415. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  416. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  417. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  418. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  419. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  420. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.d.ts +10 -0
  421. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js +9 -0
  422. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js.map +1 -0
  423. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  424. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  425. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  426. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.d.ts +10 -0
  427. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js +9 -0
  428. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js.map +1 -0
  429. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  430. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  431. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  432. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  433. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  434. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  435. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.d.ts +14 -0
  436. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js +9 -0
  437. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js.map +1 -0
  438. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  439. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  440. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  441. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  442. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  443. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  444. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  445. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  446. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  447. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  448. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  449. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  450. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  451. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  452. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  453. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  454. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  455. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  456. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  457. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  458. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  459. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  460. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  461. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  462. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  463. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  464. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  465. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  466. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  467. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  468. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  469. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  470. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  471. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  472. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  473. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  474. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  475. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  476. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  477. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +17 -0
  478. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  479. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  480. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  481. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  482. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  483. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  484. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  485. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  486. package/dist/accessi-module/Console/generated/model/updateScopeRequest.d.ts +13 -0
  487. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js +9 -0
  488. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js.map +1 -0
  489. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  490. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  491. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  492. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  493. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  494. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  495. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  496. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  497. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  498. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  499. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  500. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  501. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +20 -0
  502. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  503. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  504. package/dist/accessi-module/Console/help.d.ts +13 -0
  505. package/dist/accessi-module/Console/help.js +417 -0
  506. package/dist/accessi-module/Console/help.js.map +1 -0
  507. package/dist/accessi-module/Console/index.html +141 -0
  508. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  509. package/dist/accessi-module/Console/wiki.js +867 -0
  510. package/dist/accessi-module/Console/wiki.js.map +1 -0
  511. package/dist/accessi-module/Controllers/AccessiAuditController.d.ts +16 -0
  512. package/dist/accessi-module/Controllers/AccessiAuditController.js +155 -0
  513. package/dist/accessi-module/Controllers/AccessiAuditController.js.map +1 -0
  514. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +25 -0
  515. package/dist/accessi-module/Controllers/AccessiConsoleController.js +169 -0
  516. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  517. package/dist/accessi-module/Controllers/AccessiIntrospectionController.d.ts +17 -0
  518. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +102 -0
  519. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +1 -0
  520. package/dist/accessi-module/Controllers/AuthController.d.ts +16 -6
  521. package/dist/accessi-module/Controllers/AuthController.js +435 -85
  522. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  523. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -5
  524. package/dist/accessi-module/Controllers/ConfiguratorController.js +26 -44
  525. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  526. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +16 -0
  527. package/dist/accessi-module/Controllers/ConsoleEntryController.js +159 -0
  528. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +1 -0
  529. package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
  530. package/dist/accessi-module/Controllers/EmailController.js +13 -15
  531. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  532. package/dist/accessi-module/Controllers/FiltriController.d.ts +12 -4
  533. package/dist/accessi-module/Controllers/FiltriController.js +153 -6
  534. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  535. package/dist/accessi-module/Controllers/PermissionController.d.ts +31 -5
  536. package/dist/accessi-module/Controllers/PermissionController.js +559 -66
  537. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  538. package/dist/accessi-module/Controllers/SchemaController.d.ts +9 -0
  539. package/dist/accessi-module/Controllers/SchemaController.js +79 -0
  540. package/dist/accessi-module/Controllers/SchemaController.js.map +1 -0
  541. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  542. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  543. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  544. package/dist/accessi-module/Controllers/UserController.d.ts +22 -5
  545. package/dist/accessi-module/Controllers/UserController.js +385 -33
  546. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  547. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  548. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  549. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  550. package/dist/accessi-module/Dtos/AdminBootstrapDtos.d.ts +26 -0
  551. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js +100 -0
  552. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +1 -0
  553. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  554. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  555. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
  556. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  557. package/dist/accessi-module/Dtos/AuditDtos.d.ts +10 -0
  558. package/dist/accessi-module/Dtos/AuditDtos.js +68 -0
  559. package/dist/accessi-module/Dtos/AuditDtos.js.map +1 -0
  560. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
  561. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
  562. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  563. package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
  564. package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
  565. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  566. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +64 -0
  567. package/dist/accessi-module/Dtos/CatalogDtos.js +322 -0
  568. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  569. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  570. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  571. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  572. package/dist/accessi-module/Dtos/ConsoleEntryDtos.d.ts +24 -0
  573. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js +77 -0
  574. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js.map +1 -0
  575. package/dist/accessi-module/Dtos/FederatedExchangeDtos.d.ts +21 -0
  576. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js +74 -0
  577. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js.map +1 -0
  578. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  579. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  580. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  581. package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
  582. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  583. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  584. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  585. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  586. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  587. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  588. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +27 -0
  589. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  590. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  591. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  592. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  593. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  594. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  595. package/dist/accessi-module/Dtos/IntrospectionDtos.d.ts +16 -0
  596. package/dist/accessi-module/Dtos/IntrospectionDtos.js +59 -0
  597. package/dist/accessi-module/Dtos/IntrospectionDtos.js.map +1 -0
  598. package/dist/accessi-module/Dtos/LoginAsDtos.d.ts +15 -0
  599. package/dist/accessi-module/Dtos/LoginAsDtos.js +68 -0
  600. package/dist/accessi-module/Dtos/LoginAsDtos.js.map +1 -0
  601. package/dist/accessi-module/Dtos/LoginRequest.d.ts +3 -1
  602. package/dist/accessi-module/Dtos/LoginRequest.js +13 -2
  603. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  604. package/dist/accessi-module/Dtos/LoginResponse.d.ts +7 -2
  605. package/dist/accessi-module/Dtos/LoginResponse.js +26 -7
  606. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  607. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  608. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  609. package/dist/accessi-module/Dtos/Permission.js +1 -0
  610. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  611. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  612. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
  613. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  614. package/dist/accessi-module/Dtos/RefreshTokenDtos.d.ts +12 -0
  615. package/dist/accessi-module/Dtos/RefreshTokenDtos.js +53 -0
  616. package/dist/accessi-module/Dtos/RefreshTokenDtos.js.map +1 -0
  617. package/dist/accessi-module/Dtos/RegisterRequest.d.ts +2 -4
  618. package/dist/accessi-module/Dtos/RegisterRequest.js +17 -27
  619. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  620. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  621. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  622. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  623. package/dist/accessi-module/Dtos/RevokeTokenRequest.d.ts +3 -0
  624. package/dist/accessi-module/Dtos/RevokeTokenRequest.js +27 -0
  625. package/dist/accessi-module/Dtos/RevokeTokenRequest.js.map +1 -0
  626. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  627. package/dist/accessi-module/Dtos/Role.js +4 -0
  628. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  629. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  630. package/dist/accessi-module/Dtos/SchemaDtos.d.ts +19 -0
  631. package/dist/accessi-module/Dtos/SchemaDtos.js +84 -0
  632. package/dist/accessi-module/Dtos/SchemaDtos.js.map +1 -0
  633. package/dist/accessi-module/Dtos/ScopeDtos.d.ts +28 -0
  634. package/dist/accessi-module/Dtos/ScopeDtos.js +103 -0
  635. package/dist/accessi-module/Dtos/ScopeDtos.js.map +1 -0
  636. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  637. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  638. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  639. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  640. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  641. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  642. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  643. package/dist/accessi-module/Dtos/SetUserPasswordRequest.d.ts +4 -0
  644. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js +32 -0
  645. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js.map +1 -0
  646. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  647. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  648. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  649. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  650. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  651. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  652. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +14 -0
  653. package/dist/accessi-module/Dtos/TwoFactorDtos.js +71 -0
  654. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  655. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  656. package/dist/accessi-module/Dtos/UserDto.d.ts +9 -4
  657. package/dist/accessi-module/Dtos/UserDto.js +37 -22
  658. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  659. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  660. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  661. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  662. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  663. package/dist/accessi-module/Dtos/index.d.ts +20 -0
  664. package/dist/accessi-module/Dtos/index.js +20 -0
  665. package/dist/accessi-module/Dtos/index.js.map +1 -1
  666. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +33 -0
  667. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +106 -0
  668. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +1 -0
  669. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +108 -5
  670. package/dist/accessi-module/Services/AuthService/AuthService.js +458 -54
  671. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  672. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  673. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  674. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  675. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  676. package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
  677. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  678. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  679. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
  680. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  681. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +107 -5
  682. package/dist/accessi-module/Services/PermissionService/PermissionService.js +788 -215
  683. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  684. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.d.ts +36 -0
  685. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js +125 -0
  686. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +1 -0
  687. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  688. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  689. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  690. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  691. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  692. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  693. package/dist/accessi-module/Services/UserService/UserService.d.ts +73 -5
  694. package/dist/accessi-module/Services/UserService/UserService.js +578 -337
  695. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  696. package/dist/accessi-module/Views/reset-password.html +229 -213
  697. package/dist/accessi-module/accessiRuntime.d.ts +45 -0
  698. package/dist/accessi-module/accessiRuntime.js +39 -0
  699. package/dist/accessi-module/accessiRuntime.js.map +1 -0
  700. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.d.ts +83 -0
  701. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js +360 -0
  702. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +1 -0
  703. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +58 -11
  704. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +504 -210
  705. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  706. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.d.ts +17 -0
  707. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +134 -0
  708. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -0
  709. package/dist/accessi-module/database-updates/accessiSchema.d.ts +67 -0
  710. package/dist/accessi-module/database-updates/accessiSchema.js +135 -0
  711. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  712. package/dist/accessi-module/database-updates/menuScopeSeed.d.ts +15 -0
  713. package/dist/accessi-module/database-updates/menuScopeSeed.js +386 -0
  714. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +1 -0
  715. package/dist/accessi-module/database-updates/menuScopeSeeder.d.ts +8 -0
  716. package/dist/accessi-module/database-updates/menuScopeSeeder.js +131 -0
  717. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +1 -0
  718. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  719. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  720. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  721. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.d.ts +1 -0
  722. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js +69 -0
  723. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  724. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +18 -53
  725. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  726. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +33 -0
  727. package/dist/accessi-module/federated-auth/FederatedAuthController.js +373 -0
  728. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  729. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.d.ts +15 -0
  730. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js +85 -0
  731. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js.map +1 -0
  732. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +102 -0
  733. package/dist/accessi-module/federated-auth/FederatedAuthService.js +472 -0
  734. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  735. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  736. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  737. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  738. package/dist/accessi-module/health/nest.d.ts +31 -0
  739. package/dist/accessi-module/health/nest.js +89 -0
  740. package/dist/accessi-module/health/nest.js.map +1 -0
  741. package/dist/accessi-module/health/readiness.d.ts +53 -0
  742. package/dist/accessi-module/health/readiness.js +110 -0
  743. package/dist/accessi-module/health/readiness.js.map +1 -0
  744. package/dist/accessi-module/index.d.ts +79 -1
  745. package/dist/accessi-module/index.js +224 -22
  746. package/dist/accessi-module/index.js.map +1 -1
  747. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  748. package/dist/accessi-module/jwt/jwt.strategy.js +21 -42
  749. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  750. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  751. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  752. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  753. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  754. package/dist/accessi-module/middleware/authenticateGen.js +68 -60
  755. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  756. package/dist/accessi-module/observability/metrics.d.ts +79 -0
  757. package/dist/accessi-module/observability/metrics.js +220 -0
  758. package/dist/accessi-module/observability/metrics.js.map +1 -0
  759. package/dist/accessi-module/observability/redisMetrics.d.ts +12 -0
  760. package/dist/accessi-module/observability/redisMetrics.js +44 -0
  761. package/dist/accessi-module/observability/redisMetrics.js.map +1 -0
  762. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  763. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +77 -0
  764. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  765. package/dist/accessi-module/security/accessControl.d.ts +48 -2
  766. package/dist/accessi-module/security/accessControl.js +84 -8
  767. package/dist/accessi-module/security/accessControl.js.map +1 -1
  768. package/dist/accessi-module/security/accessTokenRevocation.d.ts +47 -0
  769. package/dist/accessi-module/security/accessTokenRevocation.js +148 -0
  770. package/dist/accessi-module/security/accessTokenRevocation.js.map +1 -0
  771. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  772. package/dist/accessi-module/security/accessiValidation.js +41 -0
  773. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  774. package/dist/accessi-module/security/adminBootstrap.d.ts +8 -0
  775. package/dist/accessi-module/security/adminBootstrap.js +41 -0
  776. package/dist/accessi-module/security/adminBootstrap.js.map +1 -0
  777. package/dist/accessi-module/security/audit.d.ts +74 -0
  778. package/dist/accessi-module/security/audit.js +189 -0
  779. package/dist/accessi-module/security/audit.js.map +1 -0
  780. package/dist/accessi-module/security/auditSinks.d.ts +55 -0
  781. package/dist/accessi-module/security/auditSinks.js +228 -0
  782. package/dist/accessi-module/security/auditSinks.js.map +1 -0
  783. package/dist/accessi-module/security/authCookies.d.ts +104 -0
  784. package/dist/accessi-module/security/authCookies.js +240 -0
  785. package/dist/accessi-module/security/authCookies.js.map +1 -0
  786. package/dist/accessi-module/security/authenticatedToken.d.ts +23 -3
  787. package/dist/accessi-module/security/authenticatedToken.js +45 -5
  788. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  789. package/dist/accessi-module/security/consoleEntry.d.ts +63 -0
  790. package/dist/accessi-module/security/consoleEntry.js +202 -0
  791. package/dist/accessi-module/security/consoleEntry.js.map +1 -0
  792. package/dist/accessi-module/security/edgeRateLimit.d.ts +33 -0
  793. package/dist/accessi-module/security/edgeRateLimit.js +84 -0
  794. package/dist/accessi-module/security/edgeRateLimit.js.map +1 -0
  795. package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
  796. package/dist/accessi-module/security/emailConfiguration.js +41 -0
  797. package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
  798. package/dist/accessi-module/security/jwks.d.ts +33 -0
  799. package/dist/accessi-module/security/jwks.js +86 -0
  800. package/dist/accessi-module/security/jwks.js.map +1 -0
  801. package/dist/accessi-module/security/jwksBootstrap.d.ts +15 -0
  802. package/dist/accessi-module/security/jwksBootstrap.js +44 -0
  803. package/dist/accessi-module/security/jwksBootstrap.js.map +1 -0
  804. package/dist/accessi-module/security/jwtTokenOptions.d.ts +57 -0
  805. package/dist/accessi-module/security/jwtTokenOptions.js +173 -0
  806. package/dist/accessi-module/security/jwtTokenOptions.js.map +1 -0
  807. package/dist/accessi-module/security/loginAs.d.ts +8 -0
  808. package/dist/accessi-module/security/loginAs.js +45 -0
  809. package/dist/accessi-module/security/loginAs.js.map +1 -0
  810. package/dist/accessi-module/security/passwordPolicy.d.ts +21 -0
  811. package/dist/accessi-module/security/passwordPolicy.js +71 -0
  812. package/dist/accessi-module/security/passwordPolicy.js.map +1 -0
  813. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  814. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  815. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  816. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +10 -8
  817. package/dist/accessi-module/security/publicAuthRateLimit.js +71 -60
  818. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  819. package/dist/accessi-module/security/rateLimitStore.d.ts +34 -0
  820. package/dist/accessi-module/security/rateLimitStore.js +147 -0
  821. package/dist/accessi-module/security/rateLimitStore.js.map +1 -0
  822. package/dist/accessi-module/security/refreshTokenRotation.d.ts +80 -0
  823. package/dist/accessi-module/security/refreshTokenRotation.js +206 -0
  824. package/dist/accessi-module/security/refreshTokenRotation.js.map +1 -0
  825. package/dist/accessi-module/security/securityHeaders.d.ts +89 -0
  826. package/dist/accessi-module/security/securityHeaders.js +155 -0
  827. package/dist/accessi-module/security/securityHeaders.js.map +1 -0
  828. package/dist/accessi-module/security/serviceTokenGuard.d.ts +27 -0
  829. package/dist/accessi-module/security/serviceTokenGuard.js +90 -0
  830. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  831. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +9 -0
  832. package/dist/accessi-module/security/serviceTokenRateLimit.js +56 -0
  833. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  834. package/dist/accessi-module/security/sessionRevocation.d.ts +67 -0
  835. package/dist/accessi-module/security/sessionRevocation.js +174 -0
  836. package/dist/accessi-module/security/sessionRevocation.js.map +1 -0
  837. package/dist/accessi-module/security/validateOptions.d.ts +19 -0
  838. package/dist/accessi-module/security/validateOptions.js +176 -0
  839. package/dist/accessi-module/security/validateOptions.js.map +1 -0
  840. package/dist/accessi-module/startupLog.d.ts +7 -0
  841. package/dist/accessi-module/startupLog.js +29 -0
  842. package/dist/accessi-module/startupLog.js.map +1 -0
  843. package/dist/allegati-module/AllegatiModule.d.ts +11 -0
  844. package/dist/allegati-module/AllegatiModule.js +11 -1
  845. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  846. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  847. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  848. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  849. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  850. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  851. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  852. package/dist/allegati-module/Dtos/index.js.map +1 -1
  853. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  854. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  855. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  856. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  857. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  858. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  859. package/dist/allegati-module/index.js +2 -2
  860. package/dist/allegati-module/index.js.map +1 -1
  861. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  862. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  863. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  864. package/dist/angular-components/aree-disponibili/aree-disponibili.js +1336 -0
  865. package/dist/angular-components/aree-disponibili/demo.html +232 -0
  866. package/dist/autobind.d.ts +10 -3
  867. package/dist/autobind.js +24 -9
  868. package/dist/autobind.js.map +1 -1
  869. package/dist/emilsoftware-utilities-2.0.0-dev.80.tgz +0 -0
  870. package/dist/firebird-compat.d.ts +41 -0
  871. package/dist/firebird-compat.js +54 -3
  872. package/dist/firebird-compat.js.map +1 -1
  873. package/dist/index.d.ts +11 -1
  874. package/dist/index.js +11 -1
  875. package/dist/index.js.map +1 -1
  876. package/dist/initEmilsoftwareModule.d.ts +11 -1
  877. package/dist/initEmilsoftwareModule.js +66 -14
  878. package/dist/initEmilsoftwareModule.js.map +1 -1
  879. package/dist/openapi/OpenApiConfig.d.ts +68 -0
  880. package/dist/openapi/OpenApiConfig.js +157 -0
  881. package/dist/openapi/OpenApiConfig.js.map +1 -0
  882. package/dist/openapi/OpenApiMerge.d.ts +15 -0
  883. package/dist/openapi/OpenApiMerge.js +119 -0
  884. package/dist/openapi/OpenApiMerge.js.map +1 -0
  885. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  886. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  887. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  888. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  889. package/dist/scripts/generateAccessiWiki.js +131 -0
  890. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  891. package/dist/scripts/startAccessiService.d.ts +1 -0
  892. package/dist/scripts/startAccessiService.js +11 -0
  893. package/dist/scripts/startAccessiService.js.map +1 -0
  894. package/docs/accessi-openapi-baseline.json +4500 -0
  895. package/docs/accessi-openapi-breaking-allowlist.json +1 -0
  896. package/docs/accessi-openapi-fingerprint.json +192 -0
  897. package/docs/adr/0001-split-package.md +79 -0
  898. package/docs/adr/0002-multi-tenancy.md +154 -0
  899. package/docs/audit.md +136 -0
  900. package/docs/auth-cookies.md +123 -0
  901. package/docs/gateway-rate-limit.md +98 -0
  902. package/docs/import-migration.md +65 -0
  903. package/docs/jwt-key-rotation.md +143 -0
  904. package/docs/metrics.md +153 -0
  905. package/docs/multi-tenancy.md +305 -0
  906. package/docs/proxy-ip.md +99 -0
  907. package/docs/redis-load-testing.md +88 -0
  908. package/docs/security-headers.md +151 -0
  909. package/docs/standalone-service.md +201 -0
  910. package/integration-prompt.md +776 -0
  911. package/package.json +237 -83
  912. package/dist/swagger/SwaggerConfig.d.ts +0 -2
  913. package/dist/swagger/SwaggerConfig.js +0 -26
  914. package/dist/swagger/SwaggerConfig.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceTokenGuard.js","sourceRoot":"","sources":["../../../src/accessi-module/security/serviceTokenGuard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,wDAMC;AA/BD,2CAQwB;AACxB,uCAAyC;AAGzC,6FAAsI;AACtI,6DAAiE;AACjE,mEAAsE;AAEtE,iEAAiE;AACpD,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAE5E,2EAA2E;AACpE,MAAM,yBAAyB,GAAG,CAAC,GAAG,MAAgB,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,qCAA6B,EAAE,MAAM,CAAC,CAAC;AAAxG,QAAA,yBAAyB,6BAA+E;AAIrH,iGAAiG;AACjG,SAAgB,sBAAsB,CAAC,GAAY;IACjD,MAAM,QAAQ,GAAI,GAAkC,CAAC,mBAAmB,CAAC;IACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,8BAAqB,CAAC,mCAAmC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC5B,YACmB,mBAAwC,EACxC,SAAoB,EACO,cAA8B;QAFzD,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,cAAS,GAAT,SAAS,CAAW;QACO,mBAAc,GAAd,cAAc,CAAgB;IACzE,CAAC;IAEE,WAAW,CAAC,OAAyB;;;YACzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAW,CAAC;YAC7D,MAAM,EAAE,GAAG,MAAA,MAAA,OAAO,CAAC,EAAE,mCAAI,MAAA,OAAO,CAAC,MAAM,0CAAE,aAAa,mCAAI,SAAS,CAAC;YACpE,MAAM,IAAA,mDAA2B,EAAC,EAAE,EAAE,MAAA,IAAI,CAAC,cAAc,CAAC,aAAa,0CAAE,cAAc,CAAC,CAAC;YAEzF,MAAM,KAAK,GAAG,IAAA,8CAAyB,EAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,8BAAqB,CAAC,6BAA6B,CAAC,CAAC;YACjE,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,8BAAqB,CAAC,mDAAmD,CAAC,CAAC;YACvF,CAAC;YAEA,OAAsC,CAAC,mBAAmB,GAAG,QAAQ,CAAC;YAEvE,MAAM,cAAc,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAW,qCAA6B,EAAE;gBAC/F,OAAO,CAAC,UAAU,EAAE;gBACpB,OAAO,CAAC,QAAQ,EAAE;aACnB,CAAC,mCAAI,EAAE,CAAC;YACT,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAA,0CAAoB,EAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;YACnG,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,2BAAkB,CAAC,UAAU,YAAY,qCAAqC,CAAC,CAAC;YAC5F,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;CACF,CAAA;AAnCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;qCAFY,yCAAmB;QAC7B,gBAAS;GAH5B,iBAAiB,CAmC7B","sourcesContent":["import {\n CanActivate,\n ExecutionContext,\n ForbiddenException,\n Inject,\n Injectable,\n SetMetadata,\n UnauthorizedException,\n} from '@nestjs/common';\nimport { Reflector } from '@nestjs/core';\nimport type { Request } from 'express';\nimport type { AccessiOptions } from '../AccessiModule';\nimport { ServiceTokenService, serviceTokenHasScope, VerifiedServiceToken } from '../Services/ServiceTokenService/ServiceTokenService';\nimport { extractAccessiBearerToken } from './authenticatedToken';\nimport { assertServiceTokenRateLimit } from './serviceTokenRateLimit';\n\n/** Chiave dei metadata usata da `@RequireServiceTokenScopes`. */\nexport const SERVICE_TOKEN_SCOPES_METADATA = 'accessi:service-token-scopes';\n\n/** Richiede che il token di servizio presenti tutti gli scope indicati. */\nexport const RequireServiceTokenScopes = (...scopes: string[]) => SetMetadata(SERVICE_TOKEN_SCOPES_METADATA, scopes);\n\nexport type AccessiServiceTokenRequest = Request & { accessiServiceToken?: VerifiedServiceToken };\n\n/** Restituisce il token di servizio verificato da `ServiceTokenGuard`; lancia 401 se assente. */\nexport function getAccessiServiceToken(req: Request): VerifiedServiceToken {\n const verified = (req as AccessiServiceTokenRequest).accessiServiceToken;\n if (!verified) {\n throw new UnauthorizedException('Token di servizio non verificato.');\n }\n return verified;\n}\n\n/**\n * Autentica le chiamate tecniche macchina-a-macchina tramite `Authorization: Bearer <token>`.\n *\n * Il token e per installazione/servizio, non legato a un utente. Gli scope richiesti si dichiarano\n * con `@RequireServiceTokenScopes('ia')`.\n */\n@Injectable()\nexport class ServiceTokenGuard implements CanActivate {\n constructor(\n private readonly serviceTokenService: ServiceTokenService,\n private readonly reflector: Reflector,\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions,\n ) {}\n\n async canActivate(context: ExecutionContext): Promise<boolean> {\n const request = context.switchToHttp().getRequest<Request>();\n const ip = request.ip ?? request.socket?.remoteAddress ?? 'unknown';\n await assertServiceTokenRateLimit(ip, this.accessiOptions.serviceTokens?.rateLimitStore);\n\n const token = extractAccessiBearerToken(request.headers['authorization']);\n if (!token) {\n throw new UnauthorizedException('Token di servizio mancante.');\n }\n\n const verified = await this.serviceTokenService.verify(token, { ip });\n if (!verified) {\n throw new UnauthorizedException('Token di servizio non valido, scaduto o revocato.');\n }\n\n (request as AccessiServiceTokenRequest).accessiServiceToken = verified;\n\n const requiredScopes = this.reflector.getAllAndOverride<string[]>(SERVICE_TOKEN_SCOPES_METADATA, [\n context.getHandler(),\n context.getClass(),\n ]) ?? [];\n const missingScope = requiredScopes.find((scope) => !serviceTokenHasScope(verified.scopes, scope));\n if (missingScope) {\n throw new ForbiddenException(`Scope '${missingScope}' non autorizzato per questo token.`);\n }\n\n return true;\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { RateLimitStore } from './rateLimitStore';
2
+ export declare function checkServiceTokenRateLimit(identifier: string, store?: RateLimitStore): Promise<{
3
+ allowed: boolean;
4
+ retryAfterSeconds: number;
5
+ }>;
6
+ /** Svuota i bucket dello store di default (usato nei test). */
7
+ export declare function resetServiceTokenRateLimit(): void;
8
+ /** Lancia 429 con `Retry-After` quando il limite e superato. */
9
+ export declare function assertServiceTokenRateLimit(identifier: string, store?: RateLimitStore): Promise<void>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.checkServiceTokenRateLimit = checkServiceTokenRateLimit;
13
+ exports.resetServiceTokenRateLimit = resetServiceTokenRateLimit;
14
+ exports.assertServiceTokenRateLimit = assertServiceTokenRateLimit;
15
+ const common_1 = require("@nestjs/common");
16
+ const rateLimitStore_1 = require("./rateLimitStore");
17
+ const metrics_1 = require("../observability/metrics");
18
+ /**
19
+ * Limite anti-abuso per la verifica dei token di servizio.
20
+ *
21
+ * Il segreto ha 256 bit di entropia (brute force non praticabile), ma il limite evita
22
+ * che un client difettoso o malevolo martelli l'endpoint. Con `serviceTokens.rateLimitStore`
23
+ * e possibile usare uno store condiviso in cluster.
24
+ */
25
+ const WINDOW_MS = 60000;
26
+ const MAX_ATTEMPTS = 120;
27
+ function checkServiceTokenRateLimit(identifier_1) {
28
+ return __awaiter(this, arguments, void 0, function* (identifier, store = (0, rateLimitStore_1.getDefaultRateLimitStore)()) {
29
+ const key = identifier && identifier.trim() !== '' ? identifier.trim() : 'unknown';
30
+ try {
31
+ return yield store.consume(`service-token|${key}`, WINDOW_MS, MAX_ATTEMPTS);
32
+ }
33
+ catch (_a) {
34
+ (0, metrics_1.recordAccessiMetric)('accessi_store_errors_total', 1, { store: 'service_token_rate_limit' });
35
+ throw new common_1.HttpException({
36
+ code: 'ACCESSI_RATE_LIMIT_UNAVAILABLE',
37
+ message: 'Rate limit non disponibile. Riprova piu tardi.',
38
+ }, common_1.HttpStatus.SERVICE_UNAVAILABLE);
39
+ }
40
+ });
41
+ }
42
+ /** Svuota i bucket dello store di default (usato nei test). */
43
+ function resetServiceTokenRateLimit() {
44
+ (0, rateLimitStore_1.getDefaultRateLimitStore)().reset();
45
+ }
46
+ /** Lancia 429 con `Retry-After` quando il limite e superato. */
47
+ function assertServiceTokenRateLimit(identifier, store) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ const decision = yield checkServiceTokenRateLimit(identifier, store);
50
+ if (!decision.allowed) {
51
+ (0, metrics_1.recordAccessiMetric)('accessi_rate_limit_blocked_total', 1, { layer: 'service_token' });
52
+ throw new common_1.HttpException({ code: 'ACCESSI_SERVICE_TOKEN_RATE_LIMITED', message: 'Troppi tentativi. Riprova piu tardi.' }, common_1.HttpStatus.TOO_MANY_REQUESTS);
53
+ }
54
+ });
55
+ }
56
+ //# sourceMappingURL=serviceTokenRateLimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceTokenRateLimit.js","sourceRoot":"","sources":["../../../src/accessi-module/security/serviceTokenRateLimit.ts"],"names":[],"mappings":";;;;;;;;;;;AAeA,gEAiBC;AAGD,gEAEC;AAGD,kEAYC;AApDD,2CAA2D;AAC3D,qDAA4D;AAE5D,sDAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,KAAM,CAAC;AACzB,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,SAAsB,0BAA0B;yDAC9C,UAAkB,EAClB,QAAwB,IAAA,yCAAwB,GAAE;QAElD,MAAM,GAAG,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9E,CAAC;QAAC,WAAM,CAAC;YACP,IAAA,6BAAmB,EAAC,4BAA4B,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;YAC5F,MAAM,IAAI,sBAAa,CACrB;gBACE,IAAI,EAAE,gCAAgC;gBACtC,OAAO,EAAE,gDAAgD;aAC1D,EACD,mBAAU,CAAC,mBAAmB,CAC/B,CAAC;QACJ,CAAC;IACH,CAAC;CAAA;AAED,+DAA+D;AAC/D,SAAgB,0BAA0B;IACxC,IAAA,yCAAwB,GAAE,CAAC,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,gEAAgE;AAChE,SAAsB,2BAA2B,CAC/C,UAAkB,EAClB,KAAsB;;QAEtB,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,IAAA,6BAAmB,EAAC,kCAAkC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACvF,MAAM,IAAI,sBAAa,CACrB,EAAE,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,sCAAsC,EAAE,EAC/F,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;QACJ,CAAC;IACH,CAAC;CAAA","sourcesContent":["import { HttpException, HttpStatus } from '@nestjs/common';\nimport { getDefaultRateLimitStore } from './rateLimitStore';\nimport type { RateLimitStore } from './rateLimitStore';\nimport { recordAccessiMetric } from '../observability/metrics';\n\n/**\n * Limite anti-abuso per la verifica dei token di servizio.\n *\n * Il segreto ha 256 bit di entropia (brute force non praticabile), ma il limite evita\n * che un client difettoso o malevolo martelli l'endpoint. Con `serviceTokens.rateLimitStore`\n * e possibile usare uno store condiviso in cluster.\n */\nconst WINDOW_MS = 60_000;\nconst MAX_ATTEMPTS = 120;\n\nexport async function checkServiceTokenRateLimit(\n identifier: string,\n store: RateLimitStore = getDefaultRateLimitStore(),\n): Promise<{ allowed: boolean; retryAfterSeconds: number }> {\n const key = identifier && identifier.trim() !== '' ? identifier.trim() : 'unknown';\n try {\n return await store.consume(`service-token|${key}`, WINDOW_MS, MAX_ATTEMPTS);\n } catch {\n recordAccessiMetric('accessi_store_errors_total', 1, { store: 'service_token_rate_limit' });\n throw new HttpException(\n {\n code: 'ACCESSI_RATE_LIMIT_UNAVAILABLE',\n message: 'Rate limit non disponibile. Riprova piu tardi.',\n },\n HttpStatus.SERVICE_UNAVAILABLE,\n );\n }\n}\n\n/** Svuota i bucket dello store di default (usato nei test). */\nexport function resetServiceTokenRateLimit(): void {\n getDefaultRateLimitStore().reset();\n}\n\n/** Lancia 429 con `Retry-After` quando il limite e superato. */\nexport async function assertServiceTokenRateLimit(\n identifier: string,\n store?: RateLimitStore,\n): Promise<void> {\n const decision = await checkServiceTokenRateLimit(identifier, store);\n if (!decision.allowed) {\n recordAccessiMetric('accessi_rate_limit_blocked_total', 1, { layer: 'service_token' });\n throw new HttpException(\n { code: 'ACCESSI_SERVICE_TOKEN_RATE_LIMITED', message: 'Troppi tentativi. Riprova piu tardi.' },\n HttpStatus.TOO_MANY_REQUESTS,\n );\n }\n}\n"]}
@@ -0,0 +1,67 @@
1
+ import type { AccessiOptions } from '../AccessiModule';
2
+ /**
3
+ * Revoca delle sessioni per utente.
4
+ *
5
+ * La revoca e un timestamp: un token emesso prima del cutoff viene rifiutato.
6
+ * I token emessi dopo il cutoff restano validi. I token includono `iatMs`
7
+ * (millisecondi) per rendere la revoca deterministica anche quando il cambio
8
+ * password e il login avvengono nello stesso secondo; per i token legacy senza
9
+ * `iatMs` si usa `iat` in secondi.
10
+ */
11
+ export interface SessionRevocationStore {
12
+ revokeUser(codiceUtente: number, revokedAtMs: number): Promise<void>;
13
+ getUserRevocation(codiceUtente: number): Promise<number | null>;
14
+ /** Health check opzionale per readiness del servizio. */
15
+ healthCheck?(): Promise<boolean>;
16
+ }
17
+ export interface SessionRevocationOptions {
18
+ /** Default: disabilitata se non viene fornito uno store. */
19
+ enabled?: boolean;
20
+ /** Store condiviso (es. Redis) per invalidare le sessioni tra istanze. */
21
+ store?: SessionRevocationStore;
22
+ /** TTL delle chiavi Redis. Default: 365 giorni. */
23
+ ttlMs?: number;
24
+ }
25
+ export interface MemorySessionRevocationStore extends SessionRevocationStore {
26
+ clear(): void;
27
+ }
28
+ export declare function createMemorySessionRevocationStore(): MemorySessionRevocationStore;
29
+ export interface SessionRevocationRedisClient {
30
+ eval(script: string, numKeys: number, ...args: Array<string | number>): Promise<unknown>;
31
+ }
32
+ export interface RedisSessionRevocationStoreOptions {
33
+ client: SessionRevocationRedisClient;
34
+ /** Default: `accessi:revoked-user:`. */
35
+ keyPrefix?: string;
36
+ /** Default: 365 giorni. */
37
+ ttlMs?: number;
38
+ }
39
+ /**
40
+ * Store Redis per la revoca sessioni.
41
+ *
42
+ * `revokeUser` scrive un timestamp con TTL; `getUserRevocation` lo legge.
43
+ * Il TTL deve essere maggiore della durata massima dei token.
44
+ */
45
+ export declare function createRedisSessionRevocationStore(options: RedisSessionRevocationStoreOptions): SessionRevocationStore;
46
+ /** Store di default in memoria, usato quando `sessionRevocation.store` non e configurato ma la revoca e abilitata. */
47
+ export declare function getSessionRevocationStore(options: AccessiOptions): SessionRevocationStore | undefined;
48
+ /**
49
+ * Issued-at in millisecondi. I token emessi da questa versione includono `iatMs`;
50
+ * per quelli legacy si ricade su `iat` (secondi) per restare compatibili.
51
+ */
52
+ export declare function resolveAccessiTokenIssuedAtMs(payload: Record<string, unknown>): number | null;
53
+ /**
54
+ * True se il token e stato revocato: famiglia refresh revocata, `jti` revocato
55
+ * oppure sessione utente revocata prima dell'emissione del token.
56
+ */
57
+ export declare function isAccessiTokenRevoked(options: AccessiOptions, payload: Record<string, unknown>, codiceUtente: number): Promise<boolean>;
58
+ /** Revoca tutte le sessioni dell'utente. Richiede uno store configurato. */
59
+ export declare function revokeAccessiUserSessions(options: AccessiOptions, codiceUtente: number, revokedAtMs?: number, reason?: string): Promise<void>;
60
+ /**
61
+ * Variante per i flussi applicativi (cambio password, blocco, cancellazione):
62
+ * se la revoca non e configurata non fallisce, perche quei flussi devono
63
+ * continuare a funzionare anche senza store condiviso.
64
+ */
65
+ export declare function revokeAccessiUserSessionsIfConfigured(options: AccessiOptions, codiceUtente: number, reason?: string, revokedAtMs?: number): Promise<boolean>;
66
+ /** Solo per test: azzera lo store in memoria di default. */
67
+ export declare function clearDefaultSessionRevocations(): void;
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.createMemorySessionRevocationStore = createMemorySessionRevocationStore;
13
+ exports.createRedisSessionRevocationStore = createRedisSessionRevocationStore;
14
+ exports.getSessionRevocationStore = getSessionRevocationStore;
15
+ exports.resolveAccessiTokenIssuedAtMs = resolveAccessiTokenIssuedAtMs;
16
+ exports.isAccessiTokenRevoked = isAccessiTokenRevoked;
17
+ exports.revokeAccessiUserSessions = revokeAccessiUserSessions;
18
+ exports.revokeAccessiUserSessionsIfConfigured = revokeAccessiUserSessionsIfConfigured;
19
+ exports.clearDefaultSessionRevocations = clearDefaultSessionRevocations;
20
+ const redisMetrics_1 = require("../observability/redisMetrics");
21
+ const audit_1 = require("./audit");
22
+ const metrics_1 = require("../observability/metrics");
23
+ const accessTokenRevocation_1 = require("./accessTokenRevocation");
24
+ const refreshTokenRotation_1 = require("./refreshTokenRotation");
25
+ const REVOKE_USER_SCRIPT = "if tonumber(ARGV[2]) > 0 then return redis.call('SET', KEYS[1], ARGV[1], 'PX', ARGV[2]) else return redis.call('SET', KEYS[1], ARGV[1]) end";
26
+ const GET_USER_SCRIPT = "return redis.call('GET', KEYS[1])";
27
+ function createMemorySessionRevocationStore() {
28
+ const revokedAt = new Map();
29
+ return {
30
+ revokeUser(codiceUtente, timestamp) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ revokedAt.set(codiceUtente, timestamp);
33
+ });
34
+ },
35
+ getUserRevocation(codiceUtente) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ var _a;
38
+ return (_a = revokedAt.get(codiceUtente)) !== null && _a !== void 0 ? _a : null;
39
+ });
40
+ },
41
+ healthCheck() {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ return true;
44
+ });
45
+ },
46
+ clear() {
47
+ revokedAt.clear();
48
+ },
49
+ };
50
+ }
51
+ /**
52
+ * Store Redis per la revoca sessioni.
53
+ *
54
+ * `revokeUser` scrive un timestamp con TTL; `getUserRevocation` lo legge.
55
+ * Il TTL deve essere maggiore della durata massima dei token.
56
+ */
57
+ function createRedisSessionRevocationStore(options) {
58
+ var _a, _b;
59
+ if (!(options === null || options === void 0 ? void 0 : options.client) || typeof options.client.eval !== 'function') {
60
+ throw new Error('Redis session revocation store: client.eval non configurato.');
61
+ }
62
+ const keyPrefix = ((_a = options.keyPrefix) !== null && _a !== void 0 ? _a : 'accessi:revoked-user:').replace(/:+$/, ':');
63
+ const ttlMs = Math.max(0, Math.trunc((_b = options.ttlMs) !== null && _b !== void 0 ? _b : 365 * 24 * 60 * 60 * 1000));
64
+ const client = (0, redisMetrics_1.instrumentAccessiRedisClient)('session_revocation', options.client);
65
+ return {
66
+ revokeUser(codiceUtente, revokedAtMs) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ yield client.eval(REVOKE_USER_SCRIPT, 1, `${keyPrefix}${codiceUtente}`, String(revokedAtMs), ttlMs);
69
+ });
70
+ },
71
+ getUserRevocation(codiceUtente) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const value = yield client.eval(GET_USER_SCRIPT, 1, `${keyPrefix}${codiceUtente}`);
74
+ if (typeof value !== 'string' && typeof value !== 'number')
75
+ return null;
76
+ const timestamp = Number(value);
77
+ return Number.isFinite(timestamp) ? timestamp : null;
78
+ });
79
+ },
80
+ healthCheck() {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ try {
83
+ const result = yield client.eval("return redis.call('PING')", 0);
84
+ return String(result).toUpperCase() === 'PONG';
85
+ }
86
+ catch (_a) {
87
+ return false;
88
+ }
89
+ });
90
+ },
91
+ };
92
+ }
93
+ const defaultMemoryStore = createMemorySessionRevocationStore();
94
+ /** Store di default in memoria, usato quando `sessionRevocation.store` non e configurato ma la revoca e abilitata. */
95
+ function getSessionRevocationStore(options) {
96
+ var _a, _b, _c;
97
+ if (((_a = options.sessionRevocation) === null || _a === void 0 ? void 0 : _a.enabled) === false)
98
+ return undefined;
99
+ if ((_b = options.sessionRevocation) === null || _b === void 0 ? void 0 : _b.store)
100
+ return options.sessionRevocation.store;
101
+ return ((_c = options.sessionRevocation) === null || _c === void 0 ? void 0 : _c.enabled) === true ? defaultMemoryStore : undefined;
102
+ }
103
+ /**
104
+ * Issued-at in millisecondi. I token emessi da questa versione includono `iatMs`;
105
+ * per quelli legacy si ricade su `iat` (secondi) per restare compatibili.
106
+ */
107
+ function resolveAccessiTokenIssuedAtMs(payload) {
108
+ const issuedAtMs = Number(payload.iatMs);
109
+ if (Number.isFinite(issuedAtMs) && issuedAtMs > 0)
110
+ return issuedAtMs;
111
+ const issuedAt = Number(payload.iat);
112
+ if (!Number.isFinite(issuedAt))
113
+ return null;
114
+ return issuedAt * 1000;
115
+ }
116
+ /**
117
+ * True se il token e stato revocato: famiglia refresh revocata, `jti` revocato
118
+ * oppure sessione utente revocata prima dell'emissione del token.
119
+ */
120
+ function isAccessiTokenRevoked(options, payload, codiceUtente) {
121
+ return __awaiter(this, void 0, void 0, function* () {
122
+ if (yield (0, refreshTokenRotation_1.isRefreshTokenFamilyRevoked)(options, payload.fid))
123
+ return true;
124
+ if (yield (0, accessTokenRevocation_1.isAccessiAccessTokenRevoked)(options, payload))
125
+ return true;
126
+ const store = getSessionRevocationStore(options);
127
+ if (!store)
128
+ return false;
129
+ const issuedAtMs = resolveAccessiTokenIssuedAtMs(payload);
130
+ if (issuedAtMs === null)
131
+ return true;
132
+ const revokedAt = yield store.getUserRevocation(codiceUtente);
133
+ if (revokedAt === null)
134
+ return false;
135
+ // I token emessi da questa versione hanno `iatMs`: un token emesso nello
136
+ // stesso millisecondo della revoca e considerato revocato. Per i token
137
+ // legacy (solo `iat`, secondi) si mantiene il confronto per secondo.
138
+ const preciseIssuedAtMs = Number(payload.iatMs);
139
+ if (Number.isFinite(preciseIssuedAtMs) && preciseIssuedAtMs > 0) {
140
+ return issuedAtMs <= revokedAt;
141
+ }
142
+ return issuedAtMs < Math.floor(revokedAt / 1000) * 1000;
143
+ });
144
+ }
145
+ /** Revoca tutte le sessioni dell'utente. Richiede uno store configurato. */
146
+ function revokeAccessiUserSessions(options_1, codiceUtente_1) {
147
+ return __awaiter(this, arguments, void 0, function* (options, codiceUtente, revokedAtMs = Date.now(), reason = 'manual') {
148
+ const store = getSessionRevocationStore(options);
149
+ if (!store) {
150
+ throw new Error('Session revocation store non configurato.');
151
+ }
152
+ yield store.revokeUser(codiceUtente, revokedAtMs);
153
+ (0, audit_1.auditAccessi)('accessi_sessions_revoked', { codiceUtente, revokedAtMs, reason });
154
+ (0, metrics_1.countAccessiMetric)(options, 'sessions_revoked_total', { reason });
155
+ });
156
+ }
157
+ /**
158
+ * Variante per i flussi applicativi (cambio password, blocco, cancellazione):
159
+ * se la revoca non e configurata non fallisce, perche quei flussi devono
160
+ * continuare a funzionare anche senza store condiviso.
161
+ */
162
+ function revokeAccessiUserSessionsIfConfigured(options_1, codiceUtente_1) {
163
+ return __awaiter(this, arguments, void 0, function* (options, codiceUtente, reason = 'manual', revokedAtMs = Date.now()) {
164
+ if (!getSessionRevocationStore(options))
165
+ return false;
166
+ yield revokeAccessiUserSessions(options, codiceUtente, revokedAtMs, reason);
167
+ return true;
168
+ });
169
+ }
170
+ /** Solo per test: azzera lo store in memoria di default. */
171
+ function clearDefaultSessionRevocations() {
172
+ defaultMemoryStore.clear();
173
+ }
174
+ //# sourceMappingURL=sessionRevocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionRevocation.js","sourceRoot":"","sources":["../../../src/accessi-module/security/sessionRevocation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AccessiOptions } from '../AccessiModule';\nimport { instrumentAccessiRedisClient } from '../observability/redisMetrics';\nimport { auditAccessi } from './audit';\nimport { countAccessiMetric } from '../observability/metrics';import { isAccessiAccessTokenRevoked } from './accessTokenRevocation';\nimport { isRefreshTokenFamilyRevoked } from './refreshTokenRotation';\n\n/**\n * Revoca delle sessioni per utente.\n *\n * La revoca e un timestamp: un token emesso prima del cutoff viene rifiutato.\n * I token emessi dopo il cutoff restano validi. I token includono `iatMs`\n * (millisecondi) per rendere la revoca deterministica anche quando il cambio\n * password e il login avvengono nello stesso secondo; per i token legacy senza\n * `iatMs` si usa `iat` in secondi.\n */\nexport interface SessionRevocationStore {\n revokeUser(codiceUtente: number, revokedAtMs: number): Promise<void>;\n getUserRevocation(codiceUtente: number): Promise<number | null>;\n /** Health check opzionale per readiness del servizio. */\n healthCheck?(): Promise<boolean>;\n}\n\nexport interface SessionRevocationOptions {\n /** Default: disabilitata se non viene fornito uno store. */\n enabled?: boolean;\n /** Store condiviso (es. Redis) per invalidare le sessioni tra istanze. */\n store?: SessionRevocationStore;\n /** TTL delle chiavi Redis. Default: 365 giorni. */\n ttlMs?: number;\n}\n\nexport interface MemorySessionRevocationStore extends SessionRevocationStore {\n clear(): void;\n}\n\nconst REVOKE_USER_SCRIPT =\n \"if tonumber(ARGV[2]) > 0 then return redis.call('SET', KEYS[1], ARGV[1], 'PX', ARGV[2]) else return redis.call('SET', KEYS[1], ARGV[1]) end\";\nconst GET_USER_SCRIPT = \"return redis.call('GET', KEYS[1])\";\n\nexport function createMemorySessionRevocationStore(): MemorySessionRevocationStore {\n const revokedAt = new Map<number, number>();\n return {\n async revokeUser(codiceUtente, timestamp) {\n revokedAt.set(codiceUtente, timestamp);\n },\n async getUserRevocation(codiceUtente) {\n return revokedAt.get(codiceUtente) ?? null;\n },\n async healthCheck() {\n return true;\n },\n clear() {\n revokedAt.clear();\n },\n };\n}\n\nexport interface SessionRevocationRedisClient {\n eval(script: string, numKeys: number, ...args: Array<string | number>): Promise<unknown>;\n}\n\nexport interface RedisSessionRevocationStoreOptions {\n client: SessionRevocationRedisClient;\n /** Default: `accessi:revoked-user:`. */\n keyPrefix?: string;\n /** Default: 365 giorni. */\n ttlMs?: number;\n}\n\n/**\n * Store Redis per la revoca sessioni.\n *\n * `revokeUser` scrive un timestamp con TTL; `getUserRevocation` lo legge.\n * Il TTL deve essere maggiore della durata massima dei token.\n */\nexport function createRedisSessionRevocationStore(\n options: RedisSessionRevocationStoreOptions,\n): SessionRevocationStore {\n if (!options?.client || typeof options.client.eval !== 'function') {\n throw new Error('Redis session revocation store: client.eval non configurato.');\n }\n\n const keyPrefix = (options.keyPrefix ?? 'accessi:revoked-user:').replace(/:+$/, ':');\n const ttlMs = Math.max(0, Math.trunc(options.ttlMs ?? 365 * 24 * 60 * 60 * 1000));\n const client = instrumentAccessiRedisClient('session_revocation', options.client);\n\n return {\n async revokeUser(codiceUtente, revokedAtMs) {\n await client.eval(\n REVOKE_USER_SCRIPT,\n 1,\n `${keyPrefix}${codiceUtente}`,\n String(revokedAtMs),\n ttlMs,\n );\n },\n\n async getUserRevocation(codiceUtente) {\n const value = await client.eval(\n GET_USER_SCRIPT,\n 1,\n `${keyPrefix}${codiceUtente}`,\n );\n if (typeof value !== 'string' && typeof value !== 'number') return null;\n const timestamp = Number(value);\n return Number.isFinite(timestamp) ? timestamp : null;\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 = createMemorySessionRevocationStore();\n\n/** Store di default in memoria, usato quando `sessionRevocation.store` non e configurato ma la revoca e abilitata. */\nexport function getSessionRevocationStore(options: AccessiOptions): SessionRevocationStore | undefined {\n if (options.sessionRevocation?.enabled === false) return undefined;\n if (options.sessionRevocation?.store) return options.sessionRevocation.store;\n return options.sessionRevocation?.enabled === true ? defaultMemoryStore : undefined;\n}\n\n/**\n * Issued-at in millisecondi. I token emessi da questa versione includono `iatMs`;\n * per quelli legacy si ricade su `iat` (secondi) per restare compatibili.\n */\nexport function resolveAccessiTokenIssuedAtMs(payload: Record<string, unknown>): number | null {\n const issuedAtMs = Number(payload.iatMs);\n if (Number.isFinite(issuedAtMs) && issuedAtMs > 0) return issuedAtMs;\n\n const issuedAt = Number(payload.iat);\n if (!Number.isFinite(issuedAt)) return null;\n return issuedAt * 1000;\n}\n\n/**\n * True se il token e stato revocato: famiglia refresh revocata, `jti` revocato\n * oppure sessione utente revocata prima dell'emissione del token.\n */\nexport async function isAccessiTokenRevoked(\n options: AccessiOptions,\n payload: Record<string, unknown>,\n codiceUtente: number,\n): Promise<boolean> {\n if (await isRefreshTokenFamilyRevoked(options, payload.fid)) return true;\n if (await isAccessiAccessTokenRevoked(options, payload)) return true;\n\n const store = getSessionRevocationStore(options);\n if (!store) return false;\n\n const issuedAtMs = resolveAccessiTokenIssuedAtMs(payload);\n if (issuedAtMs === null) return true;\n\n const revokedAt = await store.getUserRevocation(codiceUtente);\n if (revokedAt === null) return false;\n\n // I token emessi da questa versione hanno `iatMs`: un token emesso nello\n // stesso millisecondo della revoca e considerato revocato. Per i token\n // legacy (solo `iat`, secondi) si mantiene il confronto per secondo.\n const preciseIssuedAtMs = Number(payload.iatMs);\n if (Number.isFinite(preciseIssuedAtMs) && preciseIssuedAtMs > 0) {\n return issuedAtMs <= revokedAt;\n }\n return issuedAtMs < Math.floor(revokedAt / 1000) * 1000;\n}\n\n/** Revoca tutte le sessioni dell'utente. Richiede uno store configurato. */\nexport async function revokeAccessiUserSessions(\n options: AccessiOptions,\n codiceUtente: number,\n revokedAtMs: number = Date.now(),\n reason: string = 'manual',\n): Promise<void> {\n const store = getSessionRevocationStore(options);\n if (!store) {\n throw new Error('Session revocation store non configurato.');\n }\n await store.revokeUser(codiceUtente, revokedAtMs);\n auditAccessi('accessi_sessions_revoked', { codiceUtente, revokedAtMs, reason });\n countAccessiMetric(options, 'sessions_revoked_total', { reason });\n}\n\n/**\n * Variante per i flussi applicativi (cambio password, blocco, cancellazione):\n * se la revoca non e configurata non fallisce, perche quei flussi devono\n * continuare a funzionare anche senza store condiviso.\n */\nexport async function revokeAccessiUserSessionsIfConfigured(\n options: AccessiOptions,\n codiceUtente: number,\n reason: string = 'manual',\n revokedAtMs: number = Date.now(),\n): Promise<boolean> {\n if (!getSessionRevocationStore(options)) return false;\n await revokeAccessiUserSessions(options, codiceUtente, revokedAtMs, reason);\n return true;\n}\n\n/** Solo per test: azzera lo store in memoria di default. */\nexport function clearDefaultSessionRevocations(): void {\n defaultMemoryStore.clear();\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { AccessiOptions } from '../AccessiModule';
2
+ export interface AccessiOptionsValidationIssue {
3
+ code: string;
4
+ message: string;
5
+ }
6
+ export interface AccessiOptionsValidationResult {
7
+ errors: AccessiOptionsValidationIssue[];
8
+ warnings: AccessiOptionsValidationIssue[];
9
+ }
10
+ /**
11
+ * Validazione fail-fast della configurazione Accessi.
12
+ *
13
+ * `createAccessiService` usa `assertValidAccessiOptions`; i bootstrap esistenti
14
+ * possono usare `validateAccessiOptions` per loggare warning senza rompere il
15
+ * comportamento storico.
16
+ */
17
+ export declare function validateAccessiOptions(options: AccessiOptions): AccessiOptionsValidationResult;
18
+ /** Lancia un errore aggregato se la configurazione non e valida. */
19
+ export declare function assertValidAccessiOptions(options: AccessiOptions): void;
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAccessiOptions = validateAccessiOptions;
4
+ exports.assertValidAccessiOptions = assertValidAccessiOptions;
5
+ const crypto_1 = require("crypto");
6
+ const authCookies_1 = require("./authCookies");
7
+ function isHttpUrl(value) {
8
+ if (!value)
9
+ return false;
10
+ try {
11
+ const url = new URL(value);
12
+ return url.protocol === 'http:' || url.protocol === 'https:';
13
+ }
14
+ catch (_a) {
15
+ return false;
16
+ }
17
+ }
18
+ function positive(value) {
19
+ return typeof value === 'number' && Number.isFinite(value) && value > 0;
20
+ }
21
+ /**
22
+ * Validazione fail-fast della configurazione Accessi.
23
+ *
24
+ * `createAccessiService` usa `assertValidAccessiOptions`; i bootstrap esistenti
25
+ * possono usare `validateAccessiOptions` per loggare warning senza rompere il
26
+ * comportamento storico.
27
+ */
28
+ function validateAccessiOptions(options) {
29
+ var _a, _b, _c, _d, _e;
30
+ const errors = [];
31
+ const warnings = [];
32
+ const addError = (code, message) => errors.push({ code, message });
33
+ const addWarning = (code, message) => warnings.push({ code, message });
34
+ if (!(options === null || options === void 0 ? void 0 : options.databaseOptions)) {
35
+ addError('ACCESSI_DB_OPTIONS_MISSING', 'databaseOptions e obbligatorio.');
36
+ }
37
+ const jwt = options === null || options === void 0 ? void 0 : options.jwtOptions;
38
+ const secret = (jwt === null || jwt === void 0 ? void 0 : jwt.secret) || process.env.ACC_JWT_SECRET;
39
+ if (!secret) {
40
+ addError('ACCESSI_JWT_SECRET_MISSING', 'jwtOptions.secret e obbligatorio.');
41
+ }
42
+ else if (secret.length < 32) {
43
+ addWarning('ACCESSI_JWT_SECRET_WEAK', 'jwtOptions.secret dovrebbe avere almeno 32 caratteri.');
44
+ }
45
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.expiresIn)) {
46
+ addError('ACCESSI_JWT_EXPIRES_MISSING', 'jwtOptions.expiresIn e obbligatorio.');
47
+ }
48
+ const algorithm = (_a = jwt === null || jwt === void 0 ? void 0 : jwt.algorithm) !== null && _a !== void 0 ? _a : 'HS256';
49
+ if (algorithm.startsWith('HS')) {
50
+ if ((jwt === null || jwt === void 0 ? void 0 : jwt.privateKey) || (jwt === null || jwt === void 0 ? void 0 : jwt.publicKey)) {
51
+ addWarning('ACCESSI_JWT_ASYMMETRIC_KEYS_WITH_HMAC', 'Sono configurate chiavi asimmetriche ma algorithm e HS256: verranno ignorate.');
52
+ }
53
+ }
54
+ else {
55
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.privateKey)) {
56
+ addError('ACCESSI_JWT_PRIVATE_KEY_MISSING', `jwtOptions.privateKey e obbligatoria per ${algorithm}.`);
57
+ }
58
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.publicKey) && !(jwt === null || jwt === void 0 ? void 0 : jwt.privateKey)) {
59
+ addError('ACCESSI_JWT_PUBLIC_KEY_MISSING', `jwtOptions.publicKey e obbligatoria per ${algorithm}.`);
60
+ }
61
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.keyId)) {
62
+ addWarning('ACCESSI_JWT_KEY_ID_MISSING', 'jwtOptions.keyId e consigliato per la rotazione JWKS.');
63
+ }
64
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.jwksPath)) {
65
+ addWarning('ACCESSI_JWKS_PATH_DEFAULT', 'jwksPath non configurato: verra usato accessi/.well-known/jwks.json.');
66
+ }
67
+ }
68
+ const previousKeys = (_b = jwt === null || jwt === void 0 ? void 0 : jwt.previousPublicKeys) !== null && _b !== void 0 ? _b : [];
69
+ if (previousKeys.length > 0 && algorithm.startsWith('HS')) {
70
+ addWarning('ACCESSI_JWT_PREVIOUS_KEYS_WITH_HMAC', 'previousPublicKeys e configurato ma algorithm e HS*: le chiavi verranno ignorate.');
71
+ }
72
+ if (!algorithm.startsWith('HS') && previousKeys.length > 0) {
73
+ const knownKeyIds = new Set();
74
+ if (jwt === null || jwt === void 0 ? void 0 : jwt.keyId)
75
+ knownKeyIds.add(jwt.keyId);
76
+ previousKeys.forEach((previous, index) => {
77
+ try {
78
+ (0, crypto_1.createPublicKey)(previous.publicKey);
79
+ }
80
+ catch (_a) {
81
+ addError('ACCESSI_JWT_PREVIOUS_KEY_INVALID', `previousPublicKeys[${index}] non e una chiave pubblica PEM valida.`);
82
+ }
83
+ if (!previous.keyId) {
84
+ addWarning('ACCESSI_JWT_PREVIOUS_KEY_ID_MISSING', `previousPublicKeys[${index}] non ha keyId: verra usato il fingerprint della chiave.`);
85
+ return;
86
+ }
87
+ if (knownKeyIds.has(previous.keyId)) {
88
+ addWarning('ACCESSI_JWT_PREVIOUS_KEY_DUPLICATE_KID', `previousPublicKeys[${index}].keyId "${previous.keyId}" e duplicato: vince la chiave corrente.`);
89
+ return;
90
+ }
91
+ knownKeyIds.add(previous.keyId);
92
+ });
93
+ }
94
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.issuer)) {
95
+ addWarning('ACCESSI_JWT_ISSUER_MISSING', 'jwtOptions.issuer e consigliato in multi-servizio.');
96
+ }
97
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.audience)) {
98
+ addWarning('ACCESSI_JWT_AUDIENCE_MISSING', 'jwtOptions.audience e consigliato in multi-servizio.');
99
+ }
100
+ if (!(options === null || options === void 0 ? void 0 : options.encryptionKey)) {
101
+ addError('ACCESSI_ENCRYPTION_KEY_MISSING', 'encryptionKey e obbligatoria.');
102
+ }
103
+ else if (options.encryptionKey.length < 16) {
104
+ addWarning('ACCESSI_ENCRYPTION_KEY_WEAK', 'encryptionKey dovrebbe avere almeno 16 caratteri.');
105
+ }
106
+ if (!isHttpUrl(options === null || options === void 0 ? void 0 : options.confirmationEmailUrl)) {
107
+ addWarning('ACCESSI_CONFIRMATION_URL_INVALID', 'confirmationEmailUrl dovrebbe essere un URL http/https.');
108
+ }
109
+ if (!isHttpUrl(options === null || options === void 0 ? void 0 : options.confirmationEmailReturnUrl)) {
110
+ addWarning('ACCESSI_CONFIRMATION_RETURN_URL_INVALID', 'confirmationEmailReturnUrl dovrebbe essere un URL http/https.');
111
+ }
112
+ if ((options === null || options === void 0 ? void 0 : options.publicBaseUrl) && !isHttpUrl(options.publicBaseUrl)) {
113
+ addWarning('ACCESSI_PUBLIC_BASE_URL_INVALID', 'publicBaseUrl dovrebbe essere un URL http/https.');
114
+ }
115
+ if (((_c = options === null || options === void 0 ? void 0 : options.publicAuthRateLimit) === null || _c === void 0 ? void 0 : _c.login) && !positive(options.publicAuthRateLimit.login.windowMs)) {
116
+ addError('ACCESSI_RATE_LIMIT_WINDOW_INVALID', 'publicAuthRateLimit.login.windowMs deve essere positivo.');
117
+ }
118
+ if (((_d = options === null || options === void 0 ? void 0 : options.publicAuthRateLimit) === null || _d === void 0 ? void 0 : _d.login) && !positive(options.publicAuthRateLimit.login.maxAttempts)) {
119
+ addError('ACCESSI_RATE_LIMIT_ATTEMPTS_INVALID', 'publicAuthRateLimit.login.maxAttempts deve essere positivo.');
120
+ }
121
+ if (options === null || options === void 0 ? void 0 : options.edgeRateLimit) {
122
+ if (options.edgeRateLimit.windowMs !== undefined && !positive(options.edgeRateLimit.windowMs)) {
123
+ addError('ACCESSI_EDGE_RATE_LIMIT_WINDOW_INVALID', 'edgeRateLimit.windowMs deve essere positivo.');
124
+ }
125
+ if (options.edgeRateLimit.maxAttempts !== undefined && !positive(options.edgeRateLimit.maxAttempts)) {
126
+ addError('ACCESSI_EDGE_RATE_LIMIT_ATTEMPTS_INVALID', 'edgeRateLimit.maxAttempts deve essere positivo.');
127
+ }
128
+ }
129
+ if (((_e = options === null || options === void 0 ? void 0 : options.consoleEntry) === null || _e === void 0 ? void 0 : _e.ttlMs) !== undefined && !positive(options.consoleEntry.ttlMs)) {
130
+ addError('ACCESSI_CONSOLE_ENTRY_TTL_INVALID', 'consoleEntry.ttlMs deve essere positivo.');
131
+ }
132
+ const authCookie = (0, authCookies_1.resolveAccessiAuthCookieOptions)(options !== null && options !== void 0 ? options : {});
133
+ if (authCookie) {
134
+ const names = (0, authCookies_1.accessiCookieNames)(authCookie);
135
+ names.forEach((name, index) => {
136
+ if (!(0, authCookies_1.isValidAccessiCookieName)(name)) {
137
+ addError('ACCESSI_AUTH_COOKIE_NAME_INVALID', `Il nome cookie "${names[index]}" non e valido.`);
138
+ }
139
+ });
140
+ if (new Set(names).size !== names.length) {
141
+ addError('ACCESSI_AUTH_COOKIE_NAME_DUPLICATE', 'I nomi dei cookie access, refresh e CSRF devono essere diversi.');
142
+ }
143
+ if (authCookie.sameSite === 'none' && !authCookie.secure) {
144
+ addError('ACCESSI_AUTH_COOKIE_SAMESITE_NONE_INSECURE', 'SameSite=None richiede secure: true.');
145
+ }
146
+ if (!authCookie.accessPath.startsWith('/')) {
147
+ addError('ACCESSI_AUTH_COOKIE_PATH_INVALID', 'accessPath deve iniziare con "/".');
148
+ }
149
+ if (!authCookie.refreshPath.startsWith('/')) {
150
+ addError('ACCESSI_AUTH_COOKIE_PATH_INVALID', 'refreshPath deve iniziare con "/".');
151
+ }
152
+ if (!authCookie.csrfPath.startsWith('/')) {
153
+ addError('ACCESSI_AUTH_COOKIE_PATH_INVALID', 'csrfPath deve iniziare con "/".');
154
+ }
155
+ if (authCookie.csrf === 'off') {
156
+ addWarning('ACCESSI_AUTH_COOKIE_CSRF_DISABLED', 'CSRF disattivato in modalita cookie: l host deve applicare una propria protezione.');
157
+ }
158
+ if (authCookie.exposeTokens) {
159
+ addWarning('ACCESSI_AUTH_COOKIE_TOKENS_EXPOSED', 'exposeTokens restituisce i token nel body: riduce il beneficio di httpOnly.');
160
+ }
161
+ if (!(jwt === null || jwt === void 0 ? void 0 : jwt.refreshExpiresIn) && authCookie.refreshFromCookie) {
162
+ addWarning('ACCESSI_AUTH_COOKIE_REFRESH_DISABLED', 'refreshFromCookie e attivo ma jwtOptions.refreshExpiresIn non e configurato.');
163
+ }
164
+ }
165
+ return { errors, warnings };
166
+ }
167
+ /** Lancia un errore aggregato se la configurazione non e valida. */
168
+ function assertValidAccessiOptions(options) {
169
+ const result = validateAccessiOptions(options);
170
+ if (result.errors.length === 0)
171
+ return;
172
+ throw new Error(`Configurazione Accessi non valida:\n${result.errors
173
+ .map((issue) => `- ${issue.code}: ${issue.message}`)
174
+ .join('\n')}`);
175
+ }
176
+ //# sourceMappingURL=validateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOptions.js","sourceRoot":"","sources":["../../../src/accessi-module/security/validateOptions.ts"],"names":[],"mappings":"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","sourcesContent":["import { createPublicKey } from 'crypto';\nimport type { AccessiOptions } from '../AccessiModule';\nimport {\n accessiCookieNames,\n isValidAccessiCookieName,\n resolveAccessiAuthCookieOptions,\n} from './authCookies';\n\nexport interface AccessiOptionsValidationIssue {\n code: string;\n message: string;\n}\n\nexport interface AccessiOptionsValidationResult {\n errors: AccessiOptionsValidationIssue[];\n warnings: AccessiOptionsValidationIssue[];\n}\n\nfunction isHttpUrl(value: string | undefined): boolean {\n if (!value) return false;\n try {\n const url = new URL(value);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}\n\nfunction positive(value: number | undefined): boolean {\n return typeof value === 'number' && Number.isFinite(value) && value > 0;\n}\n\n/**\n * Validazione fail-fast della configurazione Accessi.\n *\n * `createAccessiService` usa `assertValidAccessiOptions`; i bootstrap esistenti\n * possono usare `validateAccessiOptions` per loggare warning senza rompere il\n * comportamento storico.\n */\nexport function validateAccessiOptions(options: AccessiOptions): AccessiOptionsValidationResult {\n const errors: AccessiOptionsValidationIssue[] = [];\n const warnings: AccessiOptionsValidationIssue[] = [];\n\n const addError = (code: string, message: string) => errors.push({ code, message });\n const addWarning = (code: string, message: string) => warnings.push({ code, message });\n\n if (!options?.databaseOptions) {\n addError('ACCESSI_DB_OPTIONS_MISSING', 'databaseOptions e obbligatorio.');\n }\n\n const jwt = options?.jwtOptions;\n const secret = jwt?.secret || process.env.ACC_JWT_SECRET;\n if (!secret) {\n addError('ACCESSI_JWT_SECRET_MISSING', 'jwtOptions.secret e obbligatorio.');\n } else if (secret.length < 32) {\n addWarning('ACCESSI_JWT_SECRET_WEAK', 'jwtOptions.secret dovrebbe avere almeno 32 caratteri.');\n }\n\n if (!jwt?.expiresIn) {\n addError('ACCESSI_JWT_EXPIRES_MISSING', 'jwtOptions.expiresIn e obbligatorio.');\n }\n\n const algorithm = jwt?.algorithm ?? 'HS256';\n if (algorithm.startsWith('HS')) {\n if (jwt?.privateKey || jwt?.publicKey) {\n addWarning(\n 'ACCESSI_JWT_ASYMMETRIC_KEYS_WITH_HMAC',\n 'Sono configurate chiavi asimmetriche ma algorithm e HS256: verranno ignorate.',\n );\n }\n } else {\n if (!jwt?.privateKey) {\n addError('ACCESSI_JWT_PRIVATE_KEY_MISSING', `jwtOptions.privateKey e obbligatoria per ${algorithm}.`);\n }\n if (!jwt?.publicKey && !jwt?.privateKey) {\n addError('ACCESSI_JWT_PUBLIC_KEY_MISSING', `jwtOptions.publicKey e obbligatoria per ${algorithm}.`);\n }\n if (!jwt?.keyId) {\n addWarning('ACCESSI_JWT_KEY_ID_MISSING', 'jwtOptions.keyId e consigliato per la rotazione JWKS.');\n }\n if (!jwt?.jwksPath) {\n addWarning(\n 'ACCESSI_JWKS_PATH_DEFAULT',\n 'jwksPath non configurato: verra usato accessi/.well-known/jwks.json.',\n );\n }\n }\n\n const previousKeys = jwt?.previousPublicKeys ?? [];\n if (previousKeys.length > 0 && algorithm.startsWith('HS')) {\n addWarning(\n 'ACCESSI_JWT_PREVIOUS_KEYS_WITH_HMAC',\n 'previousPublicKeys e configurato ma algorithm e HS*: le chiavi verranno ignorate.',\n );\n }\n if (!algorithm.startsWith('HS') && previousKeys.length > 0) {\n const knownKeyIds = new Set<string>();\n if (jwt?.keyId) knownKeyIds.add(jwt.keyId);\n previousKeys.forEach((previous, index) => {\n try {\n createPublicKey(previous.publicKey);\n } catch {\n addError(\n 'ACCESSI_JWT_PREVIOUS_KEY_INVALID',\n `previousPublicKeys[${index}] non e una chiave pubblica PEM valida.`,\n );\n }\n if (!previous.keyId) {\n addWarning(\n 'ACCESSI_JWT_PREVIOUS_KEY_ID_MISSING',\n `previousPublicKeys[${index}] non ha keyId: verra usato il fingerprint della chiave.`,\n );\n return;\n }\n if (knownKeyIds.has(previous.keyId)) {\n addWarning(\n 'ACCESSI_JWT_PREVIOUS_KEY_DUPLICATE_KID',\n `previousPublicKeys[${index}].keyId \"${previous.keyId}\" e duplicato: vince la chiave corrente.`,\n );\n return;\n }\n knownKeyIds.add(previous.keyId);\n });\n }\n\n if (!jwt?.issuer) {\n addWarning('ACCESSI_JWT_ISSUER_MISSING', 'jwtOptions.issuer e consigliato in multi-servizio.');\n }\n if (!jwt?.audience) {\n addWarning('ACCESSI_JWT_AUDIENCE_MISSING', 'jwtOptions.audience e consigliato in multi-servizio.');\n }\n\n if (!options?.encryptionKey) {\n addError('ACCESSI_ENCRYPTION_KEY_MISSING', 'encryptionKey e obbligatoria.');\n } else if (options.encryptionKey.length < 16) {\n addWarning('ACCESSI_ENCRYPTION_KEY_WEAK', 'encryptionKey dovrebbe avere almeno 16 caratteri.');\n }\n\n if (!isHttpUrl(options?.confirmationEmailUrl)) {\n addWarning('ACCESSI_CONFIRMATION_URL_INVALID', 'confirmationEmailUrl dovrebbe essere un URL http/https.');\n }\n if (!isHttpUrl(options?.confirmationEmailReturnUrl)) {\n addWarning('ACCESSI_CONFIRMATION_RETURN_URL_INVALID', 'confirmationEmailReturnUrl dovrebbe essere un URL http/https.');\n }\n if (options?.publicBaseUrl && !isHttpUrl(options.publicBaseUrl)) {\n addWarning('ACCESSI_PUBLIC_BASE_URL_INVALID', 'publicBaseUrl dovrebbe essere un URL http/https.');\n }\n\n if (options?.publicAuthRateLimit?.login && !positive(options.publicAuthRateLimit.login.windowMs)) {\n addError('ACCESSI_RATE_LIMIT_WINDOW_INVALID', 'publicAuthRateLimit.login.windowMs deve essere positivo.');\n }\n if (options?.publicAuthRateLimit?.login && !positive(options.publicAuthRateLimit.login.maxAttempts)) {\n addError('ACCESSI_RATE_LIMIT_ATTEMPTS_INVALID', 'publicAuthRateLimit.login.maxAttempts deve essere positivo.');\n }\n if (options?.edgeRateLimit) {\n if (options.edgeRateLimit.windowMs !== undefined && !positive(options.edgeRateLimit.windowMs)) {\n addError('ACCESSI_EDGE_RATE_LIMIT_WINDOW_INVALID', 'edgeRateLimit.windowMs deve essere positivo.');\n }\n if (options.edgeRateLimit.maxAttempts !== undefined && !positive(options.edgeRateLimit.maxAttempts)) {\n addError('ACCESSI_EDGE_RATE_LIMIT_ATTEMPTS_INVALID', 'edgeRateLimit.maxAttempts deve essere positivo.');\n }\n }\n if (options?.consoleEntry?.ttlMs !== undefined && !positive(options.consoleEntry.ttlMs)) {\n addError('ACCESSI_CONSOLE_ENTRY_TTL_INVALID', 'consoleEntry.ttlMs deve essere positivo.');\n }\n\n const authCookie = resolveAccessiAuthCookieOptions(options ?? {});\n if (authCookie) {\n const names = accessiCookieNames(authCookie);\n names.forEach((name, index) => {\n if (!isValidAccessiCookieName(name)) {\n addError(\n 'ACCESSI_AUTH_COOKIE_NAME_INVALID',\n `Il nome cookie \"${names[index]}\" non e valido.`,\n );\n }\n });\n if (new Set(names).size !== names.length) {\n addError(\n 'ACCESSI_AUTH_COOKIE_NAME_DUPLICATE',\n 'I nomi dei cookie access, refresh e CSRF devono essere diversi.',\n );\n }\n if (authCookie.sameSite === 'none' && !authCookie.secure) {\n addError(\n 'ACCESSI_AUTH_COOKIE_SAMESITE_NONE_INSECURE',\n 'SameSite=None richiede secure: true.',\n );\n }\n if (!authCookie.accessPath.startsWith('/')) {\n addError('ACCESSI_AUTH_COOKIE_PATH_INVALID', 'accessPath deve iniziare con \"/\".');\n }\n if (!authCookie.refreshPath.startsWith('/')) {\n addError('ACCESSI_AUTH_COOKIE_PATH_INVALID', 'refreshPath deve iniziare con \"/\".');\n }\n if (!authCookie.csrfPath.startsWith('/')) {\n addError('ACCESSI_AUTH_COOKIE_PATH_INVALID', 'csrfPath deve iniziare con \"/\".');\n }\n if (authCookie.csrf === 'off') {\n addWarning(\n 'ACCESSI_AUTH_COOKIE_CSRF_DISABLED',\n 'CSRF disattivato in modalita cookie: l host deve applicare una propria protezione.',\n );\n }\n if (authCookie.exposeTokens) {\n addWarning(\n 'ACCESSI_AUTH_COOKIE_TOKENS_EXPOSED',\n 'exposeTokens restituisce i token nel body: riduce il beneficio di httpOnly.',\n );\n }\n if (!jwt?.refreshExpiresIn && authCookie.refreshFromCookie) {\n addWarning(\n 'ACCESSI_AUTH_COOKIE_REFRESH_DISABLED',\n 'refreshFromCookie e attivo ma jwtOptions.refreshExpiresIn non e configurato.',\n );\n }\n }\n\n return { errors, warnings };\n}\n\n/** Lancia un errore aggregato se la configurazione non e valida. */\nexport function assertValidAccessiOptions(options: AccessiOptions): void {\n const result = validateAccessiOptions(options);\n if (result.errors.length === 0) return;\n throw new Error(\n `Configurazione Accessi non valida:\\n${result.errors\n .map((issue) => `- ${issue.code}: ${issue.message}`)\n .join('\\n')}`,\n );\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { AccessiOptions } from './AccessiModule';
2
+ import type { ResolvedOpenApiSetupOptions } from '../openapi/OpenApiConfig';
3
+ /**
4
+ * Logga gli indirizzi utili del modulo Accessi appena il bootstrap e completato, cosi che
5
+ * console, OpenAPI e API siano visibili insieme nei log di avvio.
6
+ */
7
+ export declare function logAccessiStartup(options: AccessiOptions, openApiOverride?: ResolvedOpenApiSetupOptions): void;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logAccessiStartup = logAccessiStartup;
4
+ const Logger_1 = require("../Logger");
5
+ const adminBootstrap_1 = require("./security/adminBootstrap");
6
+ const OpenApiConfig_1 = require("../openapi/OpenApiConfig");
7
+ /**
8
+ * Logga gli indirizzi utili del modulo Accessi appena il bootstrap e completato, cosi che
9
+ * console, OpenAPI e API siano visibili insieme nei log di avvio.
10
+ */
11
+ function logAccessiStartup(options, openApiOverride) {
12
+ var _a, _b;
13
+ const logger = new Logger_1.Logger('Accessi');
14
+ const base = ((_a = options.publicBaseUrl) !== null && _a !== void 0 ? _a : '').replace(/\/+$/, '');
15
+ const url = (path) => `${base}${path}`;
16
+ const openApi = openApiOverride !== null && openApiOverride !== void 0 ? openApiOverride : (0, OpenApiConfig_1.resolveAccessiOpenApiOptions)(options.openapi);
17
+ logger.info('Accessi pronto. Indirizzi utili:');
18
+ logger.info(` Console: ${url('/api/accessi/console')}`);
19
+ if (openApi.enabled) {
20
+ logger.info(` OpenAPI UI: ${url(`/${openApi.openApiPath}`)}`);
21
+ logger.info(` OpenAPI JSON: ${url(`/${openApi.openApiJsonPath}`)}`);
22
+ }
23
+ logger.info(` API: ${url('/api/accessi')}`);
24
+ if (((_b = options.adminBootstrap) === null || _b === void 0 ? void 0 : _b.enabled) === true) {
25
+ const token = (0, adminBootstrap_1.getOrCreateAdminBootstrapToken)();
26
+ logger.warning(` Bootstrap admin abilitato. Token di avvio (monouso, valido fino al riavvio): ${token}`);
27
+ }
28
+ }
29
+ //# sourceMappingURL=startupLog.js.map