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

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 (920) 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 +13 -0
  93. package/dist/accessi/server/index.js +33 -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/tenantStores.d.ts +74 -0
  99. package/dist/accessi/server/tenantStores.js +84 -0
  100. package/dist/accessi/server/tenantStores.js.map +1 -0
  101. package/dist/accessi/server/tenants.d.ts +186 -0
  102. package/dist/accessi/server/tenants.js +357 -0
  103. package/dist/accessi/server/tenants.js.map +1 -0
  104. package/dist/accessi/ui/index.d.ts +13 -0
  105. package/dist/accessi/ui/index.js +19 -0
  106. package/dist/accessi/ui/index.js.map +1 -0
  107. package/dist/accessi-module/AccessiModule.d.ts +225 -0
  108. package/dist/accessi-module/AccessiModule.js +49 -5
  109. package/dist/accessi-module/AccessiModule.js.map +1 -1
  110. package/dist/accessi-module/Console/accessiFetch.d.ts +59 -0
  111. package/dist/accessi-module/Console/accessiFetch.js +178 -0
  112. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  113. package/dist/accessi-module/Console/console.css +774 -0
  114. package/dist/accessi-module/Console/console.d.ts +1 -0
  115. package/dist/accessi-module/Console/console.js +4173 -0
  116. package/dist/accessi-module/Console/console.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/emilsoftware-utilities.d.ts +781 -0
  118. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js +746 -0
  119. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  121. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  122. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  124. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  125. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.d.ts +16 -0
  127. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js +3 -0
  128. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  130. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  131. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js +3 -0
  134. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.d.ts +10 -0
  136. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js +9 -0
  137. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  139. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  140. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  142. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  143. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  145. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  146. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  148. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.d.ts +17 -0
  151. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js +9 -0
  152. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.d.ts +14 -0
  154. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js +3 -0
  155. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.d.ts +13 -0
  157. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js +9 -0
  158. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  160. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  161. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.d.ts +10 -0
  163. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js +9 -0
  164. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.d.ts +14 -0
  166. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.d.ts +10 -0
  169. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.d.ts +14 -0
  172. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js +3 -0
  173. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.d.ts +12 -0
  175. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.d.ts +12 -0
  178. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  181. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  184. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  185. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  187. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  188. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  190. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  191. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  193. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  194. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +22 -0
  196. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  197. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  199. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  200. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  202. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  203. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/createScopeRequest.d.ts +18 -0
  205. package/dist/accessi-module/Console/generated/model/createScopeRequest.js +9 -0
  206. package/dist/accessi-module/Console/generated/model/createScopeRequest.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  208. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  209. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  211. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  212. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  214. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.d.ts +12 -0
  217. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/exportAuditOrder.d.ts +11 -0
  220. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js +15 -0
  221. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/exportAuditParams.d.ts +37 -0
  223. package/dist/accessi-module/Console/generated/model/exportAuditParams.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/exportAuditParams.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.d.ts +15 -0
  226. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js +3 -0
  227. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.d.ts +14 -0
  229. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js +3 -0
  230. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  235. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  236. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  237. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  238. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  239. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  240. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  241. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  242. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  243. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  244. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  245. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  246. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  247. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  248. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  249. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  250. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  251. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  252. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  253. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  254. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  255. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  256. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  257. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  258. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  259. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  260. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  261. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +16 -0
  262. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  263. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  264. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  265. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  266. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  267. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.d.ts +14 -0
  268. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js +3 -0
  269. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js.map +1 -0
  270. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  271. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  272. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  273. package/dist/accessi-module/Console/generated/model/getMenusParams.d.ts +12 -0
  274. package/dist/accessi-module/Console/generated/model/getMenusParams.js +9 -0
  275. package/dist/accessi-module/Console/generated/model/getMenusParams.js.map +1 -0
  276. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  277. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  278. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  279. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  280. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  281. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  282. package/dist/accessi-module/Console/generated/model/getSchemaResponse.d.ts +14 -0
  283. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js +3 -0
  284. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +1 -0
  285. package/dist/accessi-module/Console/generated/model/getScopesResponse.d.ts +14 -0
  286. package/dist/accessi-module/Console/generated/model/getScopesResponse.js +3 -0
  287. package/dist/accessi-module/Console/generated/model/getScopesResponse.js.map +1 -0
  288. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  289. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  290. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  291. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  292. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  293. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  294. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  295. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  296. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  297. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  298. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  299. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  300. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.d.ts +12 -0
  301. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js +9 -0
  302. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js.map +1 -0
  303. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  304. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  305. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  306. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  307. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  308. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  309. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  310. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  311. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  312. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  313. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  314. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  315. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  316. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  317. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  318. package/dist/accessi-module/Console/generated/model/index.d.ts +134 -0
  319. package/dist/accessi-module/Console/generated/model/index.js +151 -0
  320. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  321. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.d.ts +10 -0
  322. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js +9 -0
  323. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js.map +1 -0
  324. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.d.ts +14 -0
  325. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js +3 -0
  326. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js.map +1 -0
  327. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  328. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  329. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  330. package/dist/accessi-module/Console/generated/model/loginAsRequest.d.ts +10 -0
  331. package/dist/accessi-module/Console/generated/model/loginAsRequest.js +9 -0
  332. package/dist/accessi-module/Console/generated/model/loginAsRequest.js.map +1 -0
  333. package/dist/accessi-module/Console/generated/model/loginAsResponse.d.ts +14 -0
  334. package/dist/accessi-module/Console/generated/model/loginAsResponse.js +3 -0
  335. package/dist/accessi-module/Console/generated/model/loginAsResponse.js.map +1 -0
  336. package/dist/accessi-module/Console/generated/model/loginAsResult.d.ts +16 -0
  337. package/dist/accessi-module/Console/generated/model/loginAsResult.js +9 -0
  338. package/dist/accessi-module/Console/generated/model/loginAsResult.js.map +1 -0
  339. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +14 -0
  340. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  341. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  342. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  343. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  344. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  345. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +34 -0
  346. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  347. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  348. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  349. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  350. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  351. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  352. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  353. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  354. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  355. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  356. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  357. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  358. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  359. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  360. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  361. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  362. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  363. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  364. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  365. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  366. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  367. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  368. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  369. package/dist/accessi-module/Console/generated/model/queryAuditOrder.d.ts +11 -0
  370. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js +15 -0
  371. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js.map +1 -0
  372. package/dist/accessi-module/Console/generated/model/queryAuditParams.d.ts +37 -0
  373. package/dist/accessi-module/Console/generated/model/queryAuditParams.js +3 -0
  374. package/dist/accessi-module/Console/generated/model/queryAuditParams.js.map +1 -0
  375. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.d.ts +10 -0
  376. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js +9 -0
  377. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js.map +1 -0
  378. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.d.ts +14 -0
  379. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js +3 -0
  380. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js.map +1 -0
  381. package/dist/accessi-module/Console/generated/model/refreshTokenResult.d.ts +13 -0
  382. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js +3 -0
  383. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js.map +1 -0
  384. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  385. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  386. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  387. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  388. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  389. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  390. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  391. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  392. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  393. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.d.ts +10 -0
  394. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js +9 -0
  395. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js.map +1 -0
  396. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  397. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  398. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  399. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  400. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  401. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  402. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  403. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  404. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  405. package/dist/accessi-module/Console/generated/model/schemaDdlResult.d.ts +20 -0
  406. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js +3 -0
  407. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +1 -0
  408. package/dist/accessi-module/Console/generated/model/schemaDdlSection.d.ts +12 -0
  409. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js +9 -0
  410. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +1 -0
  411. package/dist/accessi-module/Console/generated/model/scopeEntity.d.ts +12 -0
  412. package/dist/accessi-module/Console/generated/model/scopeEntity.js +9 -0
  413. package/dist/accessi-module/Console/generated/model/scopeEntity.js.map +1 -0
  414. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  415. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  416. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  417. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  418. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  419. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  420. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  421. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  422. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  423. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.d.ts +10 -0
  424. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js +9 -0
  425. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js.map +1 -0
  426. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  427. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  428. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  429. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.d.ts +10 -0
  430. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js +9 -0
  431. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js.map +1 -0
  432. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  433. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  434. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  435. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  436. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  437. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  438. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.d.ts +14 -0
  439. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js +9 -0
  440. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js.map +1 -0
  441. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  442. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  443. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  444. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  445. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  446. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  447. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  448. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  449. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  450. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  451. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  452. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  453. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  454. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  455. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  456. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  457. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  458. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  459. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  460. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  461. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  462. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  463. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  464. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  465. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  466. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  467. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  468. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  469. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  470. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  471. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  472. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  473. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  474. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  475. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  476. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  477. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  478. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  479. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  480. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +17 -0
  481. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  482. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  483. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  484. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  485. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  486. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  487. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  488. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  489. package/dist/accessi-module/Console/generated/model/updateScopeRequest.d.ts +13 -0
  490. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js +9 -0
  491. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js.map +1 -0
  492. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  493. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  494. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  495. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  496. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  497. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  498. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  499. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  500. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  501. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  502. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  503. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  504. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +20 -0
  505. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  506. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  507. package/dist/accessi-module/Console/help.d.ts +13 -0
  508. package/dist/accessi-module/Console/help.js +417 -0
  509. package/dist/accessi-module/Console/help.js.map +1 -0
  510. package/dist/accessi-module/Console/index.html +141 -0
  511. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  512. package/dist/accessi-module/Console/wiki.js +867 -0
  513. package/dist/accessi-module/Console/wiki.js.map +1 -0
  514. package/dist/accessi-module/Controllers/AccessiAuditController.d.ts +16 -0
  515. package/dist/accessi-module/Controllers/AccessiAuditController.js +155 -0
  516. package/dist/accessi-module/Controllers/AccessiAuditController.js.map +1 -0
  517. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +25 -0
  518. package/dist/accessi-module/Controllers/AccessiConsoleController.js +169 -0
  519. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  520. package/dist/accessi-module/Controllers/AccessiIntrospectionController.d.ts +17 -0
  521. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +102 -0
  522. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +1 -0
  523. package/dist/accessi-module/Controllers/AuthController.d.ts +16 -6
  524. package/dist/accessi-module/Controllers/AuthController.js +435 -85
  525. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  526. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -5
  527. package/dist/accessi-module/Controllers/ConfiguratorController.js +26 -44
  528. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  529. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +16 -0
  530. package/dist/accessi-module/Controllers/ConsoleEntryController.js +159 -0
  531. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +1 -0
  532. package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
  533. package/dist/accessi-module/Controllers/EmailController.js +13 -15
  534. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  535. package/dist/accessi-module/Controllers/FiltriController.d.ts +12 -4
  536. package/dist/accessi-module/Controllers/FiltriController.js +153 -6
  537. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  538. package/dist/accessi-module/Controllers/PermissionController.d.ts +31 -5
  539. package/dist/accessi-module/Controllers/PermissionController.js +559 -66
  540. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  541. package/dist/accessi-module/Controllers/SchemaController.d.ts +9 -0
  542. package/dist/accessi-module/Controllers/SchemaController.js +79 -0
  543. package/dist/accessi-module/Controllers/SchemaController.js.map +1 -0
  544. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  545. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  546. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  547. package/dist/accessi-module/Controllers/UserController.d.ts +22 -5
  548. package/dist/accessi-module/Controllers/UserController.js +385 -33
  549. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  550. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  551. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  552. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  553. package/dist/accessi-module/Dtos/AdminBootstrapDtos.d.ts +26 -0
  554. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js +100 -0
  555. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +1 -0
  556. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  557. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  558. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
  559. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  560. package/dist/accessi-module/Dtos/AuditDtos.d.ts +10 -0
  561. package/dist/accessi-module/Dtos/AuditDtos.js +68 -0
  562. package/dist/accessi-module/Dtos/AuditDtos.js.map +1 -0
  563. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
  564. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
  565. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  566. package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
  567. package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
  568. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  569. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +64 -0
  570. package/dist/accessi-module/Dtos/CatalogDtos.js +322 -0
  571. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  572. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  573. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  574. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  575. package/dist/accessi-module/Dtos/ConsoleEntryDtos.d.ts +24 -0
  576. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js +77 -0
  577. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js.map +1 -0
  578. package/dist/accessi-module/Dtos/FederatedExchangeDtos.d.ts +21 -0
  579. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js +74 -0
  580. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js.map +1 -0
  581. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  582. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  583. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  584. package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
  585. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  586. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  587. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  588. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  589. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  590. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  591. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +27 -0
  592. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  593. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  594. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  595. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  596. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  597. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  598. package/dist/accessi-module/Dtos/IntrospectionDtos.d.ts +16 -0
  599. package/dist/accessi-module/Dtos/IntrospectionDtos.js +59 -0
  600. package/dist/accessi-module/Dtos/IntrospectionDtos.js.map +1 -0
  601. package/dist/accessi-module/Dtos/LoginAsDtos.d.ts +15 -0
  602. package/dist/accessi-module/Dtos/LoginAsDtos.js +68 -0
  603. package/dist/accessi-module/Dtos/LoginAsDtos.js.map +1 -0
  604. package/dist/accessi-module/Dtos/LoginRequest.d.ts +3 -1
  605. package/dist/accessi-module/Dtos/LoginRequest.js +13 -2
  606. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  607. package/dist/accessi-module/Dtos/LoginResponse.d.ts +7 -2
  608. package/dist/accessi-module/Dtos/LoginResponse.js +26 -7
  609. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  610. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  611. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  612. package/dist/accessi-module/Dtos/Permission.js +1 -0
  613. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  614. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  615. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
  616. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  617. package/dist/accessi-module/Dtos/RefreshTokenDtos.d.ts +12 -0
  618. package/dist/accessi-module/Dtos/RefreshTokenDtos.js +53 -0
  619. package/dist/accessi-module/Dtos/RefreshTokenDtos.js.map +1 -0
  620. package/dist/accessi-module/Dtos/RegisterRequest.d.ts +2 -4
  621. package/dist/accessi-module/Dtos/RegisterRequest.js +17 -27
  622. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  623. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  624. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  625. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  626. package/dist/accessi-module/Dtos/RevokeTokenRequest.d.ts +3 -0
  627. package/dist/accessi-module/Dtos/RevokeTokenRequest.js +27 -0
  628. package/dist/accessi-module/Dtos/RevokeTokenRequest.js.map +1 -0
  629. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  630. package/dist/accessi-module/Dtos/Role.js +4 -0
  631. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  632. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  633. package/dist/accessi-module/Dtos/SchemaDtos.d.ts +19 -0
  634. package/dist/accessi-module/Dtos/SchemaDtos.js +84 -0
  635. package/dist/accessi-module/Dtos/SchemaDtos.js.map +1 -0
  636. package/dist/accessi-module/Dtos/ScopeDtos.d.ts +28 -0
  637. package/dist/accessi-module/Dtos/ScopeDtos.js +103 -0
  638. package/dist/accessi-module/Dtos/ScopeDtos.js.map +1 -0
  639. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  640. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  641. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  642. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  643. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  644. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  645. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  646. package/dist/accessi-module/Dtos/SetUserPasswordRequest.d.ts +4 -0
  647. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js +32 -0
  648. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js.map +1 -0
  649. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  650. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  651. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  652. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  653. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  654. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  655. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +14 -0
  656. package/dist/accessi-module/Dtos/TwoFactorDtos.js +71 -0
  657. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  658. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  659. package/dist/accessi-module/Dtos/UserDto.d.ts +9 -4
  660. package/dist/accessi-module/Dtos/UserDto.js +37 -22
  661. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  662. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  663. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  664. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  665. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  666. package/dist/accessi-module/Dtos/index.d.ts +20 -0
  667. package/dist/accessi-module/Dtos/index.js +20 -0
  668. package/dist/accessi-module/Dtos/index.js.map +1 -1
  669. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +33 -0
  670. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +106 -0
  671. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +1 -0
  672. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +108 -5
  673. package/dist/accessi-module/Services/AuthService/AuthService.js +458 -54
  674. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  675. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  676. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  677. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  678. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  679. package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
  680. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  681. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  682. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
  683. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  684. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +107 -5
  685. package/dist/accessi-module/Services/PermissionService/PermissionService.js +788 -215
  686. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  687. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.d.ts +36 -0
  688. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js +125 -0
  689. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +1 -0
  690. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  691. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  692. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  693. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  694. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  695. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  696. package/dist/accessi-module/Services/UserService/UserService.d.ts +73 -5
  697. package/dist/accessi-module/Services/UserService/UserService.js +578 -337
  698. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  699. package/dist/accessi-module/Views/reset-password.html +229 -213
  700. package/dist/accessi-module/accessiRuntime.d.ts +45 -0
  701. package/dist/accessi-module/accessiRuntime.js +39 -0
  702. package/dist/accessi-module/accessiRuntime.js.map +1 -0
  703. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.d.ts +83 -0
  704. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js +360 -0
  705. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +1 -0
  706. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +58 -11
  707. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +504 -210
  708. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  709. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.d.ts +17 -0
  710. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +134 -0
  711. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -0
  712. package/dist/accessi-module/database-updates/accessiSchema.d.ts +67 -0
  713. package/dist/accessi-module/database-updates/accessiSchema.js +135 -0
  714. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  715. package/dist/accessi-module/database-updates/menuScopeSeed.d.ts +15 -0
  716. package/dist/accessi-module/database-updates/menuScopeSeed.js +386 -0
  717. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +1 -0
  718. package/dist/accessi-module/database-updates/menuScopeSeeder.d.ts +8 -0
  719. package/dist/accessi-module/database-updates/menuScopeSeeder.js +131 -0
  720. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +1 -0
  721. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  722. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  723. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  724. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.d.ts +1 -0
  725. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js +69 -0
  726. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  727. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +18 -53
  728. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  729. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +33 -0
  730. package/dist/accessi-module/federated-auth/FederatedAuthController.js +373 -0
  731. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  732. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.d.ts +15 -0
  733. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js +85 -0
  734. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js.map +1 -0
  735. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +102 -0
  736. package/dist/accessi-module/federated-auth/FederatedAuthService.js +472 -0
  737. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  738. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  739. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  740. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  741. package/dist/accessi-module/health/nest.d.ts +31 -0
  742. package/dist/accessi-module/health/nest.js +89 -0
  743. package/dist/accessi-module/health/nest.js.map +1 -0
  744. package/dist/accessi-module/health/readiness.d.ts +53 -0
  745. package/dist/accessi-module/health/readiness.js +110 -0
  746. package/dist/accessi-module/health/readiness.js.map +1 -0
  747. package/dist/accessi-module/index.d.ts +79 -1
  748. package/dist/accessi-module/index.js +224 -22
  749. package/dist/accessi-module/index.js.map +1 -1
  750. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  751. package/dist/accessi-module/jwt/jwt.strategy.js +21 -42
  752. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  753. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  754. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  755. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  756. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  757. package/dist/accessi-module/middleware/authenticateGen.js +68 -60
  758. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  759. package/dist/accessi-module/observability/metrics.d.ts +79 -0
  760. package/dist/accessi-module/observability/metrics.js +220 -0
  761. package/dist/accessi-module/observability/metrics.js.map +1 -0
  762. package/dist/accessi-module/observability/redisMetrics.d.ts +12 -0
  763. package/dist/accessi-module/observability/redisMetrics.js +44 -0
  764. package/dist/accessi-module/observability/redisMetrics.js.map +1 -0
  765. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  766. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +77 -0
  767. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  768. package/dist/accessi-module/security/accessControl.d.ts +48 -2
  769. package/dist/accessi-module/security/accessControl.js +84 -8
  770. package/dist/accessi-module/security/accessControl.js.map +1 -1
  771. package/dist/accessi-module/security/accessTokenRevocation.d.ts +47 -0
  772. package/dist/accessi-module/security/accessTokenRevocation.js +148 -0
  773. package/dist/accessi-module/security/accessTokenRevocation.js.map +1 -0
  774. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  775. package/dist/accessi-module/security/accessiValidation.js +41 -0
  776. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  777. package/dist/accessi-module/security/adminBootstrap.d.ts +8 -0
  778. package/dist/accessi-module/security/adminBootstrap.js +41 -0
  779. package/dist/accessi-module/security/adminBootstrap.js.map +1 -0
  780. package/dist/accessi-module/security/audit.d.ts +74 -0
  781. package/dist/accessi-module/security/audit.js +189 -0
  782. package/dist/accessi-module/security/audit.js.map +1 -0
  783. package/dist/accessi-module/security/auditSinks.d.ts +55 -0
  784. package/dist/accessi-module/security/auditSinks.js +228 -0
  785. package/dist/accessi-module/security/auditSinks.js.map +1 -0
  786. package/dist/accessi-module/security/authCookies.d.ts +104 -0
  787. package/dist/accessi-module/security/authCookies.js +240 -0
  788. package/dist/accessi-module/security/authCookies.js.map +1 -0
  789. package/dist/accessi-module/security/authenticatedToken.d.ts +23 -3
  790. package/dist/accessi-module/security/authenticatedToken.js +45 -5
  791. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  792. package/dist/accessi-module/security/consoleEntry.d.ts +63 -0
  793. package/dist/accessi-module/security/consoleEntry.js +202 -0
  794. package/dist/accessi-module/security/consoleEntry.js.map +1 -0
  795. package/dist/accessi-module/security/edgeRateLimit.d.ts +33 -0
  796. package/dist/accessi-module/security/edgeRateLimit.js +84 -0
  797. package/dist/accessi-module/security/edgeRateLimit.js.map +1 -0
  798. package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
  799. package/dist/accessi-module/security/emailConfiguration.js +41 -0
  800. package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
  801. package/dist/accessi-module/security/jwks.d.ts +33 -0
  802. package/dist/accessi-module/security/jwks.js +86 -0
  803. package/dist/accessi-module/security/jwks.js.map +1 -0
  804. package/dist/accessi-module/security/jwksBootstrap.d.ts +15 -0
  805. package/dist/accessi-module/security/jwksBootstrap.js +44 -0
  806. package/dist/accessi-module/security/jwksBootstrap.js.map +1 -0
  807. package/dist/accessi-module/security/jwtTokenOptions.d.ts +57 -0
  808. package/dist/accessi-module/security/jwtTokenOptions.js +173 -0
  809. package/dist/accessi-module/security/jwtTokenOptions.js.map +1 -0
  810. package/dist/accessi-module/security/loginAs.d.ts +8 -0
  811. package/dist/accessi-module/security/loginAs.js +45 -0
  812. package/dist/accessi-module/security/loginAs.js.map +1 -0
  813. package/dist/accessi-module/security/passwordPolicy.d.ts +21 -0
  814. package/dist/accessi-module/security/passwordPolicy.js +71 -0
  815. package/dist/accessi-module/security/passwordPolicy.js.map +1 -0
  816. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  817. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  818. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  819. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +10 -8
  820. package/dist/accessi-module/security/publicAuthRateLimit.js +71 -60
  821. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  822. package/dist/accessi-module/security/rateLimitStore.d.ts +34 -0
  823. package/dist/accessi-module/security/rateLimitStore.js +147 -0
  824. package/dist/accessi-module/security/rateLimitStore.js.map +1 -0
  825. package/dist/accessi-module/security/refreshTokenRotation.d.ts +80 -0
  826. package/dist/accessi-module/security/refreshTokenRotation.js +206 -0
  827. package/dist/accessi-module/security/refreshTokenRotation.js.map +1 -0
  828. package/dist/accessi-module/security/securityHeaders.d.ts +89 -0
  829. package/dist/accessi-module/security/securityHeaders.js +155 -0
  830. package/dist/accessi-module/security/securityHeaders.js.map +1 -0
  831. package/dist/accessi-module/security/serviceTokenGuard.d.ts +27 -0
  832. package/dist/accessi-module/security/serviceTokenGuard.js +90 -0
  833. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  834. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +9 -0
  835. package/dist/accessi-module/security/serviceTokenRateLimit.js +56 -0
  836. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  837. package/dist/accessi-module/security/sessionRevocation.d.ts +67 -0
  838. package/dist/accessi-module/security/sessionRevocation.js +174 -0
  839. package/dist/accessi-module/security/sessionRevocation.js.map +1 -0
  840. package/dist/accessi-module/security/validateOptions.d.ts +19 -0
  841. package/dist/accessi-module/security/validateOptions.js +176 -0
  842. package/dist/accessi-module/security/validateOptions.js.map +1 -0
  843. package/dist/accessi-module/startupLog.d.ts +7 -0
  844. package/dist/accessi-module/startupLog.js +29 -0
  845. package/dist/accessi-module/startupLog.js.map +1 -0
  846. package/dist/allegati-module/AllegatiModule.d.ts +11 -0
  847. package/dist/allegati-module/AllegatiModule.js +11 -1
  848. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  849. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  850. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  851. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  852. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  853. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  854. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  855. package/dist/allegati-module/Dtos/index.js.map +1 -1
  856. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  857. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  858. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  859. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  860. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  861. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  862. package/dist/allegati-module/index.js +2 -2
  863. package/dist/allegati-module/index.js.map +1 -1
  864. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  865. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  866. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  867. package/dist/angular-components/aree-disponibili/aree-disponibili.js +1336 -0
  868. package/dist/angular-components/aree-disponibili/demo.html +232 -0
  869. package/dist/autobind.d.ts +10 -3
  870. package/dist/autobind.js +24 -9
  871. package/dist/autobind.js.map +1 -1
  872. package/dist/emilsoftware-utilities-2.0.0-dev.81.tgz +0 -0
  873. package/dist/firebird-compat.d.ts +41 -0
  874. package/dist/firebird-compat.js +54 -3
  875. package/dist/firebird-compat.js.map +1 -1
  876. package/dist/index.d.ts +11 -1
  877. package/dist/index.js +11 -1
  878. package/dist/index.js.map +1 -1
  879. package/dist/initEmilsoftwareModule.d.ts +11 -1
  880. package/dist/initEmilsoftwareModule.js +66 -14
  881. package/dist/initEmilsoftwareModule.js.map +1 -1
  882. package/dist/openapi/OpenApiConfig.d.ts +68 -0
  883. package/dist/openapi/OpenApiConfig.js +157 -0
  884. package/dist/openapi/OpenApiConfig.js.map +1 -0
  885. package/dist/openapi/OpenApiMerge.d.ts +15 -0
  886. package/dist/openapi/OpenApiMerge.js +119 -0
  887. package/dist/openapi/OpenApiMerge.js.map +1 -0
  888. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  889. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  890. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  891. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  892. package/dist/scripts/generateAccessiWiki.js +131 -0
  893. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  894. package/dist/scripts/startAccessiService.d.ts +1 -0
  895. package/dist/scripts/startAccessiService.js +11 -0
  896. package/dist/scripts/startAccessiService.js.map +1 -0
  897. package/dist/scripts/startAccessiTenantService.d.ts +1 -0
  898. package/dist/scripts/startAccessiTenantService.js +35 -0
  899. package/dist/scripts/startAccessiTenantService.js.map +1 -0
  900. package/docs/accessi-openapi-baseline.json +4500 -0
  901. package/docs/accessi-openapi-breaking-allowlist.json +1 -0
  902. package/docs/accessi-openapi-fingerprint.json +192 -0
  903. package/docs/adr/0001-split-package.md +79 -0
  904. package/docs/adr/0002-multi-tenancy.md +182 -0
  905. package/docs/audit.md +136 -0
  906. package/docs/auth-cookies.md +123 -0
  907. package/docs/gateway-rate-limit.md +98 -0
  908. package/docs/import-migration.md +65 -0
  909. package/docs/jwt-key-rotation.md +143 -0
  910. package/docs/metrics.md +153 -0
  911. package/docs/multi-tenancy.md +329 -0
  912. package/docs/proxy-ip.md +99 -0
  913. package/docs/redis-load-testing.md +88 -0
  914. package/docs/security-headers.md +151 -0
  915. package/docs/standalone-service.md +201 -0
  916. package/integration-prompt.md +776 -0
  917. package/package.json +238 -83
  918. package/dist/swagger/SwaggerConfig.d.ts +0 -2
  919. package/dist/swagger/SwaggerConfig.js +0 -26
  920. package/dist/swagger/SwaggerConfig.js.map +0 -1
@@ -1,42 +1,57 @@
1
1
  import { Request } from "express";
2
+ /** Grant effettivo letto da Accessi. Il confronto usa `tipoAbilitazione >= minPermissionLevel`. */
2
3
  export type AccessiGrant = {
3
4
  codiceMenu: string;
4
5
  tipoAbilitazione?: number;
5
6
  };
7
+ /** Risultato memoizzato durante una singola autorizzazione. Non modificarlo nel custom handler. */
6
8
  export type GrantsResult = {
7
9
  grants?: AccessiGrant[];
8
10
  [key: string]: unknown;
9
11
  };
12
+ /** Richiede l'accesso a un menu con almeno il livello indicato. Valori convenzionali: 10 lettura, 20 scrittura. */
10
13
  export type AccessiPermissionRequirement = {
11
14
  type: "permission";
12
15
  menuCode: string;
13
16
  minPermissionLevel: number;
14
17
  };
18
+ /** Tutti i requisiti figli devono essere soddisfatti. Una lista vuota e una configurazione non valida. */
15
19
  export type AccessiAllRequirement = {
16
20
  type: "and";
17
21
  requirements: AccessiRequirementNode[];
18
22
  };
23
+ /** Almeno un requisito figlio deve essere soddisfatto. Una lista vuota e una configurazione non valida. */
19
24
  export type AccessiAnyRequirement = {
20
25
  type: "or";
21
26
  requirements: AccessiRequirementNode[];
22
27
  };
28
+ /** Nega il risultato del requisito figlio. Usarlo con cautela per non creare policy difficili da verificare. */
23
29
  export type AccessiNotRequirement = {
24
30
  type: "not";
25
31
  requirement: AccessiRequirementNode;
26
32
  };
33
+ /** Delega una condizione applicativa a un handler registrato dal backend. */
27
34
  export type AccessiCustomRequirement = {
28
35
  type: "custom";
29
36
  key: string;
30
37
  payload?: unknown;
31
38
  };
39
+ /** Nodo composabile dell'albero di autorizzazione valutato da `authorizeAccessi`. */
32
40
  export type AccessiRequirementNode = AccessiPermissionRequirement | AccessiAllRequirement | AccessiAnyRequirement | AccessiNotRequirement | AccessiCustomRequirement;
41
+ /** Contesto in sola lettura consegnato a un requisito personalizzato. */
33
42
  export type AccessiCustomRequirementContext = {
34
43
  req: Request;
35
- decodedToken: any;
44
+ decodedToken: Record<string, unknown>;
36
45
  userCode: number;
37
46
  getGrantsResult: () => Promise<GrantsResult>;
38
47
  };
48
+ /** Handler applicativo per `accessiRequirement.custom`; `false` nega la richiesta, un errore produce 500. */
39
49
  export type AccessiCustomRequirementHandler = (context: AccessiCustomRequirementContext, payload?: unknown) => boolean | Promise<boolean>;
50
+ /**
51
+ * Policy passata a `authorizeAccessi`.
52
+ * `requirements` e la forma compatibile storica ed equivale a un AND; `requirementTree`
53
+ * permette policy annidate e ha precedenza quando entrambi sono presenti.
54
+ */
40
55
  export type AccessiAuthorizationOptions = {
41
56
  requirements?: {
42
57
  menuCode: string;
@@ -45,10 +60,12 @@ export type AccessiAuthorizationOptions = {
45
60
  requirementTree?: AccessiRequirementNode;
46
61
  customRequirementHandlers?: Record<string, AccessiCustomRequirementHandler>;
47
62
  };
63
+ /** Errore di configurazione di una policy, distinto dal normale diniego 403. */
48
64
  export declare class RequirementEvaluationError extends Error {
49
65
  readonly code: string;
50
66
  constructor(code: string, message: string);
51
67
  }
68
+ /** Factory tipizzata per costruire policy leggibili senza dipendere dalla struttura interna dei nodi. */
52
69
  export declare const accessiRequirement: {
53
70
  permission: (menuCode: string, minPermissionLevel: number) => AccessiPermissionRequirement;
54
71
  and: (...requirements: AccessiRequirementNode[]) => AccessiAllRequirement;
@@ -56,5 +73,10 @@ export declare const accessiRequirement: {
56
73
  not: (requirement: AccessiRequirementNode) => AccessiNotRequirement;
57
74
  custom: (key: string, payload?: unknown) => AccessiCustomRequirement;
58
75
  };
76
+ /** Normalizza la forma compatibile `requirements` nell'albero interno. */
59
77
  export declare function buildRequirementTree(options?: AccessiAuthorizationOptions): AccessiRequirementNode | undefined;
78
+ /**
79
+ * Valuta ricorsivamente una policy. I grant sono caricati solo se necessari tramite `getGrantsResult`.
80
+ * Questa funzione e pubblica per test e integrazioni avanzate; normalmente usare `authorizeAccessi`.
81
+ */
60
82
  export declare function evaluateRequirement(requirement: AccessiRequirementNode, context: AccessiCustomRequirementContext, options?: AccessiAuthorizationOptions): Promise<boolean>;
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.accessiRequirement = exports.RequirementEvaluationError = void 0;
13
13
  exports.buildRequirementTree = buildRequirementTree;
14
14
  exports.evaluateRequirement = evaluateRequirement;
15
+ /** Errore di configurazione di una policy, distinto dal normale diniego 403. */
15
16
  class RequirementEvaluationError extends Error {
16
17
  constructor(code, message) {
17
18
  super(message);
@@ -23,6 +24,7 @@ exports.RequirementEvaluationError = RequirementEvaluationError;
23
24
  function requirementError(code, message) {
24
25
  return new RequirementEvaluationError(code, message);
25
26
  }
27
+ /** Factory tipizzata per costruire policy leggibili senza dipendere dalla struttura interna dei nodi. */
26
28
  exports.accessiRequirement = {
27
29
  permission: (menuCode, minPermissionLevel) => ({
28
30
  type: "permission",
@@ -47,6 +49,7 @@ exports.accessiRequirement = {
47
49
  payload,
48
50
  }),
49
51
  };
52
+ /** Normalizza la forma compatibile `requirements` nell'albero interno. */
50
53
  function buildRequirementTree(options) {
51
54
  var _a;
52
55
  if (options === null || options === void 0 ? void 0 : options.requirementTree)
@@ -57,6 +60,10 @@ function buildRequirementTree(options) {
57
60
  const nodes = requirements.map((requirement) => exports.accessiRequirement.permission(requirement.menuCode, requirement.minPermissionLevel));
58
61
  return exports.accessiRequirement.and(...nodes);
59
62
  }
63
+ /**
64
+ * Valuta ricorsivamente una policy. I grant sono caricati solo se necessari tramite `getGrantsResult`.
65
+ * Questa funzione e pubblica per test e integrazioni avanzate; normalmente usare `authorizeAccessi`.
66
+ */
60
67
  function evaluateRequirement(requirement, context, options) {
61
68
  return __awaiter(this, void 0, void 0, function* () {
62
69
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"accessiRequirements.js","sourceRoot":"","sources":["../../../src/accessi-module/middleware/accessiRequirements.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request } from \"express\";\r\n\r\nexport type AccessiGrant = {\r\n codiceMenu: string;\r\n tipoAbilitazione?: number;\r\n};\r\n\r\nexport type GrantsResult = {\r\n grants?: AccessiGrant[];\r\n [key: string]: unknown;\r\n};\r\n\r\nexport type AccessiPermissionRequirement = {\r\n type: \"permission\";\r\n menuCode: string;\r\n minPermissionLevel: number;\r\n};\r\n\r\nexport type AccessiAllRequirement = {\r\n type: \"and\";\r\n requirements: AccessiRequirementNode[];\r\n};\r\n\r\nexport type AccessiAnyRequirement = {\r\n type: \"or\";\r\n requirements: AccessiRequirementNode[];\r\n};\r\n\r\nexport type AccessiNotRequirement = {\r\n type: \"not\";\r\n requirement: AccessiRequirementNode;\r\n};\r\n\r\nexport type AccessiCustomRequirement = {\r\n type: \"custom\";\r\n key: string;\r\n payload?: unknown;\r\n};\r\n\r\nexport type AccessiRequirementNode =\r\n | AccessiPermissionRequirement\r\n | AccessiAllRequirement\r\n | AccessiAnyRequirement\r\n | AccessiNotRequirement\r\n | AccessiCustomRequirement;\r\n\r\nexport type AccessiCustomRequirementContext = {\r\n req: Request;\r\n decodedToken: any;\r\n userCode: number;\r\n getGrantsResult: () => Promise<GrantsResult>;\r\n};\r\n\r\nexport type AccessiCustomRequirementHandler = (\r\n context: AccessiCustomRequirementContext,\r\n payload?: unknown\r\n) => boolean | Promise<boolean>;\r\n\r\nexport type AccessiAuthorizationOptions = {\r\n requirements?: { menuCode: string; minPermissionLevel: number }[];\r\n requirementTree?: AccessiRequirementNode;\r\n customRequirementHandlers?: Record<string, AccessiCustomRequirementHandler>;\r\n};\r\n\r\nexport class RequirementEvaluationError extends Error {\r\n constructor(public readonly code: string, message: string) {\r\n super(message);\r\n this.name = \"RequirementEvaluationError\";\r\n }\r\n}\r\n\r\nfunction requirementError(code: string, message: string): RequirementEvaluationError {\r\n return new RequirementEvaluationError(code, message);\r\n}\r\n\r\nexport const accessiRequirement = {\r\n permission: (\r\n menuCode: string,\r\n minPermissionLevel: number\r\n ): AccessiPermissionRequirement => ({\r\n type: \"permission\",\r\n menuCode,\r\n minPermissionLevel,\r\n }),\r\n and: (...requirements: AccessiRequirementNode[]): AccessiAllRequirement => ({\r\n type: \"and\",\r\n requirements,\r\n }),\r\n or: (...requirements: AccessiRequirementNode[]): AccessiAnyRequirement => ({\r\n type: \"or\",\r\n requirements,\r\n }),\r\n not: (requirement: AccessiRequirementNode): AccessiNotRequirement => ({\r\n type: \"not\",\r\n requirement,\r\n }),\r\n custom: (key: string, payload?: unknown): AccessiCustomRequirement => ({\r\n type: \"custom\",\r\n key,\r\n payload,\r\n }),\r\n};\r\n\r\nexport function buildRequirementTree(\r\n options?: AccessiAuthorizationOptions\r\n): AccessiRequirementNode | undefined {\r\n if (options?.requirementTree) return options.requirementTree;\r\n\r\n const requirements = options?.requirements ?? [];\r\n if (requirements.length === 0) return undefined;\r\n\r\n const nodes: AccessiRequirementNode[] = requirements.map((requirement) =>\r\n accessiRequirement.permission(\r\n requirement.menuCode,\r\n requirement.minPermissionLevel\r\n )\r\n );\r\n\r\n return accessiRequirement.and(...nodes);\r\n}\r\n\r\nexport async function evaluateRequirement(\r\n requirement: AccessiRequirementNode,\r\n context: AccessiCustomRequirementContext,\r\n options?: AccessiAuthorizationOptions\r\n): Promise<boolean> {\r\n switch (requirement.type) {\r\n case \"permission\": {\r\n const grantsResult = await context.getGrantsResult();\r\n const grants = grantsResult.grants ?? [];\r\n return grants.some(\r\n (grant) =>\r\n grant.codiceMenu == requirement.menuCode &&\r\n Number(grant.tipoAbilitazione ?? 0) >= requirement.minPermissionLevel\r\n );\r\n }\r\n case \"and\":\r\n if (!requirement.requirements || requirement.requirements.length === 0) {\r\n throw requirementError(\r\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\r\n \"AND requirement must contain at least one child requirement\"\r\n );\r\n }\r\n for (const child of requirement.requirements) {\r\n if (!(await evaluateRequirement(child, context, options))) return false;\r\n }\r\n return true;\r\n case \"or\":\r\n if (!requirement.requirements || requirement.requirements.length === 0) {\r\n throw requirementError(\r\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\r\n \"OR requirement must contain at least one child requirement\"\r\n );\r\n }\r\n for (const child of requirement.requirements) {\r\n if (await evaluateRequirement(child, context, options)) return true;\r\n }\r\n return false;\r\n case \"not\":\r\n return !(await evaluateRequirement(requirement.requirement, context, options));\r\n case \"custom\": {\r\n const handlers = options?.customRequirementHandlers ?? {};\r\n const handler = handlers[requirement.key];\r\n if (!handler) {\r\n throw requirementError(\r\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\r\n `Custom requirement handler \"${requirement.key}\" not found`\r\n );\r\n }\r\n return Boolean(await handler(context, requirement.payload));\r\n }\r\n default:\r\n throw requirementError(\r\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\r\n \"Unknown requirement node type\"\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"accessiRequirements.js","sourceRoot":"","sources":["../../../src/accessi-module/middleware/accessiRequirements.ts"],"names":[],"mappings":";;;;;;;;;;;;AAyHA,oDAgBC;AAMD,kDAwDC;AAxHD,gFAAgF;AAChF,MAAa,0BAA2B,SAAQ,KAAK;IACnD,YAA4B,IAAY,EAAE,OAAe;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AALD,gEAKC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,OAAe;IACrD,OAAO,IAAI,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,yGAAyG;AAC5F,QAAA,kBAAkB,GAAG;IAChC,UAAU,EAAE,CACV,QAAgB,EAChB,kBAA0B,EACI,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,YAAY;QAClB,QAAQ;QACR,kBAAkB;KACnB,CAAC;IACF,GAAG,EAAE,CAAC,GAAG,YAAsC,EAAyB,EAAE,CAAC,CAAC;QAC1E,IAAI,EAAE,KAAK;QACX,YAAY;KACb,CAAC;IACF,EAAE,EAAE,CAAC,GAAG,YAAsC,EAAyB,EAAE,CAAC,CAAC;QACzE,IAAI,EAAE,IAAI;QACV,YAAY;KACb,CAAC;IACF,GAAG,EAAE,CAAC,WAAmC,EAAyB,EAAE,CAAC,CAAC;QACpE,IAAI,EAAE,KAAK;QACX,WAAW;KACZ,CAAC;IACF,MAAM,EAAE,CAAC,GAAW,EAAE,OAAiB,EAA4B,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,QAAQ;QACd,GAAG;QACH,OAAO;KACR,CAAC;CACH,CAAC;AAEF,0EAA0E;AAC1E,SAAgB,oBAAoB,CAClC,OAAqC;;IAErC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe;QAAE,OAAO,OAAO,CAAC,eAAe,CAAC;IAE7D,MAAM,YAAY,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,EAAE,CAAC;IACjD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEhD,MAAM,KAAK,GAA6B,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACvE,0BAAkB,CAAC,UAAU,CAC3B,WAAW,CAAC,QAAQ,EACpB,WAAW,CAAC,kBAAkB,CAC/B,CACF,CAAC;IAEF,OAAO,0BAAkB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,SAAsB,mBAAmB,CACvC,WAAmC,EACnC,OAAwC,EACxC,OAAqC;;;QAErC,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,MAAM,mCAAI,EAAE,CAAC;gBACzC,OAAO,MAAM,CAAC,IAAI,CAChB,CAAC,KAAK,EAAE,EAAE;;oBACR,OAAA,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC,QAAQ;wBACxC,MAAM,CAAC,MAAA,KAAK,CAAC,gBAAgB,mCAAI,CAAC,CAAC,IAAI,WAAW,CAAC,kBAAkB,CAAA;iBAAA,CACxE,CAAC;YACJ,CAAC;YACD,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvE,MAAM,gBAAgB,CACpB,iCAAiC,EACjC,6DAA6D,CAC9D,CAAC;gBACJ,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;oBAC7C,IAAI,CAAC,CAAC,MAAM,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;wBAAE,OAAO,KAAK,CAAC;gBAC1E,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvE,MAAM,gBAAgB,CACpB,iCAAiC,EACjC,4DAA4D,CAC7D,CAAC;gBACJ,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;oBAC7C,IAAI,MAAM,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;wBAAE,OAAO,IAAI,CAAC;gBACtE,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,KAAK,KAAK;gBACR,OAAO,CAAC,CAAC,MAAM,mBAAmB,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACjF,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,yBAAyB,mCAAI,EAAE,CAAC;gBAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,gBAAgB,CACpB,iCAAiC,EACjC,+BAA+B,WAAW,CAAC,GAAG,aAAa,CAC5D,CAAC;gBACJ,CAAC;gBACD,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD;gBACE,MAAM,gBAAgB,CACpB,iCAAiC,EACjC,+BAA+B,CAChC,CAAC;QACN,CAAC;IACH,CAAC;CAAA","sourcesContent":["import { Request } from \"express\";\n\n/** Grant effettivo letto da Accessi. Il confronto usa `tipoAbilitazione >= minPermissionLevel`. */\nexport type AccessiGrant = {\n codiceMenu: string;\n tipoAbilitazione?: number;\n};\n\n/** Risultato memoizzato durante una singola autorizzazione. Non modificarlo nel custom handler. */\nexport type GrantsResult = {\n grants?: AccessiGrant[];\n [key: string]: unknown;\n};\n\n/** Richiede l'accesso a un menu con almeno il livello indicato. Valori convenzionali: 10 lettura, 20 scrittura. */\nexport type AccessiPermissionRequirement = {\n type: \"permission\";\n menuCode: string;\n minPermissionLevel: number;\n};\n\n/** Tutti i requisiti figli devono essere soddisfatti. Una lista vuota e una configurazione non valida. */\nexport type AccessiAllRequirement = {\n type: \"and\";\n requirements: AccessiRequirementNode[];\n};\n\n/** Almeno un requisito figlio deve essere soddisfatto. Una lista vuota e una configurazione non valida. */\nexport type AccessiAnyRequirement = {\n type: \"or\";\n requirements: AccessiRequirementNode[];\n};\n\n/** Nega il risultato del requisito figlio. Usarlo con cautela per non creare policy difficili da verificare. */\nexport type AccessiNotRequirement = {\n type: \"not\";\n requirement: AccessiRequirementNode;\n};\n\n/** Delega una condizione applicativa a un handler registrato dal backend. */\nexport type AccessiCustomRequirement = {\n type: \"custom\";\n key: string;\n payload?: unknown;\n};\n\n/** Nodo composabile dell'albero di autorizzazione valutato da `authorizeAccessi`. */\nexport type AccessiRequirementNode =\n | AccessiPermissionRequirement\n | AccessiAllRequirement\n | AccessiAnyRequirement\n | AccessiNotRequirement\n | AccessiCustomRequirement;\n\n/** Contesto in sola lettura consegnato a un requisito personalizzato. */\nexport type AccessiCustomRequirementContext = {\n req: Request;\n decodedToken: Record<string, unknown>;\n userCode: number;\n getGrantsResult: () => Promise<GrantsResult>;\n};\n\n/** Handler applicativo per `accessiRequirement.custom`; `false` nega la richiesta, un errore produce 500. */\nexport type AccessiCustomRequirementHandler = (\n context: AccessiCustomRequirementContext,\n payload?: unknown\n) => boolean | Promise<boolean>;\n\n/**\n * Policy passata a `authorizeAccessi`.\n * `requirements` e la forma compatibile storica ed equivale a un AND; `requirementTree`\n * permette policy annidate e ha precedenza quando entrambi sono presenti.\n */\nexport type AccessiAuthorizationOptions = {\n requirements?: { menuCode: string; minPermissionLevel: number }[];\n requirementTree?: AccessiRequirementNode;\n customRequirementHandlers?: Record<string, AccessiCustomRequirementHandler>;\n};\n\n/** Errore di configurazione di una policy, distinto dal normale diniego 403. */\nexport class RequirementEvaluationError extends Error {\n constructor(public readonly code: string, message: string) {\n super(message);\n this.name = \"RequirementEvaluationError\";\n }\n}\n\nfunction requirementError(code: string, message: string): RequirementEvaluationError {\n return new RequirementEvaluationError(code, message);\n}\n\n/** Factory tipizzata per costruire policy leggibili senza dipendere dalla struttura interna dei nodi. */\nexport const accessiRequirement = {\n permission: (\n menuCode: string,\n minPermissionLevel: number\n ): AccessiPermissionRequirement => ({\n type: \"permission\",\n menuCode,\n minPermissionLevel,\n }),\n and: (...requirements: AccessiRequirementNode[]): AccessiAllRequirement => ({\n type: \"and\",\n requirements,\n }),\n or: (...requirements: AccessiRequirementNode[]): AccessiAnyRequirement => ({\n type: \"or\",\n requirements,\n }),\n not: (requirement: AccessiRequirementNode): AccessiNotRequirement => ({\n type: \"not\",\n requirement,\n }),\n custom: (key: string, payload?: unknown): AccessiCustomRequirement => ({\n type: \"custom\",\n key,\n payload,\n }),\n};\n\n/** Normalizza la forma compatibile `requirements` nell'albero interno. */\nexport function buildRequirementTree(\n options?: AccessiAuthorizationOptions\n): AccessiRequirementNode | undefined {\n if (options?.requirementTree) return options.requirementTree;\n\n const requirements = options?.requirements ?? [];\n if (requirements.length === 0) return undefined;\n\n const nodes: AccessiRequirementNode[] = requirements.map((requirement) =>\n accessiRequirement.permission(\n requirement.menuCode,\n requirement.minPermissionLevel\n )\n );\n\n return accessiRequirement.and(...nodes);\n}\n\n/**\n * Valuta ricorsivamente una policy. I grant sono caricati solo se necessari tramite `getGrantsResult`.\n * Questa funzione e pubblica per test e integrazioni avanzate; normalmente usare `authorizeAccessi`.\n */\nexport async function evaluateRequirement(\n requirement: AccessiRequirementNode,\n context: AccessiCustomRequirementContext,\n options?: AccessiAuthorizationOptions\n): Promise<boolean> {\n switch (requirement.type) {\n case \"permission\": {\n const grantsResult = await context.getGrantsResult();\n const grants = grantsResult.grants ?? [];\n return grants.some(\n (grant) =>\n grant.codiceMenu == requirement.menuCode &&\n Number(grant.tipoAbilitazione ?? 0) >= requirement.minPermissionLevel\n );\n }\n case \"and\":\n if (!requirement.requirements || requirement.requirements.length === 0) {\n throw requirementError(\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\n \"AND requirement must contain at least one child requirement\"\n );\n }\n for (const child of requirement.requirements) {\n if (!(await evaluateRequirement(child, context, options))) return false;\n }\n return true;\n case \"or\":\n if (!requirement.requirements || requirement.requirements.length === 0) {\n throw requirementError(\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\n \"OR requirement must contain at least one child requirement\"\n );\n }\n for (const child of requirement.requirements) {\n if (await evaluateRequirement(child, context, options)) return true;\n }\n return false;\n case \"not\":\n return !(await evaluateRequirement(requirement.requirement, context, options));\n case \"custom\": {\n const handlers = options?.customRequirementHandlers ?? {};\n const handler = handlers[requirement.key];\n if (!handler) {\n throw requirementError(\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\n `Custom requirement handler \"${requirement.key}\" not found`\n );\n }\n return Boolean(await handler(context, requirement.payload));\n }\n default:\n throw requirementError(\n \"AUTH_REQUIREMENTS_MISCONFIGURED\",\n \"Unknown requirement node type\"\n );\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { NextFunction, Request, Response } from "express";
2
- import { AccessiOptions } from "../AccessiModule";
2
+ import type { AccessiOptions } from "../AccessiModule";
3
3
  import { PermissionService } from "../Services/PermissionService/PermissionService";
4
4
  import { UserService } from "../Services/UserService/UserService";
5
5
  import { AccessiAuthorizationOptions } from "./accessiRequirements";
@@ -8,10 +8,25 @@ export declare class AuthenticateGenService {
8
8
  private readonly permissionService;
9
9
  private readonly userService;
10
10
  constructor(accessiOptions: AccessiOptions, permissionService: PermissionService, userService: UserService);
11
+ /**
12
+ * Verifica JWT, stato corrente dell'utente e policy opzionale, poi popola `req.user` e `req.data`.
13
+ * Se una policy richiede grant, popola anche `req.userGrants`; non chiamarlo direttamente fuori da test o adapter.
14
+ */
11
15
  authorize(req: Request, res: Response, next: NextFunction, options?: AccessiAuthorizationOptions): Promise<void | Response<any, Record<string, any>>>;
12
16
  }
17
+ /** Segnala al middleware che il bootstrap e in corso, consentendo una risposta 503 temporanea invece di un 500. */
13
18
  export declare function beginAccessiAuthInitialization(): void;
19
+ /** Registra il servizio costruito da Nest nel bridge usato dalle rotte Express dell'app ospitante. */
14
20
  export declare function setAccessiAuthService(service: AuthenticateGenService): void;
21
+ /** Propaga il fallimento del bootstrap alle richieste che stavano attendendo il bridge di autorizzazione. */
15
22
  export declare function failAccessiAuthInitialization(error: unknown): void;
23
+ /**
24
+ * Middleware Express pubblico di Accessi.
25
+ *
26
+ * Applicarlo dopo `initializeAccessiModule`: legge `Authorization: Bearer <jwt>`, verifica l'utente corrente
27
+ * e applica eventuali requisiti. Su successo valorizza `req.user` e continua; su errore risponde direttamente
28
+ * con il contratto Accessi, quindi il chiamante non deve aggiungere un proprio `next(error)`.
29
+ */
16
30
  export declare function authorizeAccessi(req: Request, res: Response, next: NextFunction, options?: AccessiAuthorizationOptions): Promise<void | Response<any, Record<string, any>>>;
31
+ /** Alias storico di `authorizeAccessi`, mantenuto per retrocompatibilita. Preferire il nome esplicito nelle nuove integrazioni. */
17
32
  export declare const authenticateGen: typeof authorizeAccessi;
@@ -1,43 +1,10 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
23
7
  };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
8
  var __metadata = (this && this.__metadata) || function (k, v) {
42
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
10
  };
@@ -59,13 +26,14 @@ exports.beginAccessiAuthInitialization = beginAccessiAuthInitialization;
59
26
  exports.setAccessiAuthService = setAccessiAuthService;
60
27
  exports.failAccessiAuthInitialization = failAccessiAuthInitialization;
61
28
  exports.authorizeAccessi = authorizeAccessi;
62
- const jwt = __importStar(require("jsonwebtoken"));
63
29
  const common_1 = require("@nestjs/common");
64
30
  const PermissionService_1 = require("../Services/PermissionService/PermissionService");
65
31
  const UserService_1 = require("../Services/UserService/UserService");
66
32
  const Logger_1 = require("../../Logger");
67
33
  const accessiRequirements_1 = require("./accessiRequirements");
68
34
  const authenticatedToken_1 = require("../security/authenticatedToken");
35
+ const jwtTokenOptions_1 = require("../security/jwtTokenOptions");
36
+ const sessionRevocation_1 = require("../security/sessionRevocation");
69
37
  const logger = new Logger_1.Logger("AuthenticateGen");
70
38
  const ACCESSI_AUTH_SERVICE_LOCALS_KEY = "accessiAuthService";
71
39
  const ACCESSI_AUTH_SERVICE_GLOBAL_KEY = Symbol.for("emilsoftware.accessiAuthService");
@@ -112,35 +80,58 @@ function logAuthFailure(req, authErr) {
112
80
  else
113
81
  logger.warning(message);
114
82
  }
83
+ /** Sends the documented Accessi error contract from Express middleware. */
84
+ function sendAuthenticationError(res, authErr) {
85
+ const message = authErr.status === 403
86
+ ? 'Operazione non autorizzata.'
87
+ : authErr.status >= 500
88
+ ? 'Errore interno del modulo Accessi.'
89
+ : 'Autenticazione non valida o scaduta.';
90
+ return res.status(authErr.status).json({
91
+ severity: 'error',
92
+ status: authErr.status,
93
+ statusCode: 2,
94
+ code: authErr.code,
95
+ // Kept for callers of older versions which already inspected `error`.
96
+ error: authErr.code,
97
+ message,
98
+ });
99
+ }
115
100
  function authorizeWithDependencies(req, res, next, options, accessiOptions, permissionService, userService) {
116
101
  return __awaiter(this, void 0, void 0, function* () {
117
- var _a, _b;
102
+ const authenticatedRequest = req;
118
103
  try {
119
104
  const authHeader = req.headers.authorization;
120
105
  if (!authHeader) {
121
106
  throw authError(401, "AUTH_HEADER_MISSING", "Authorization header not found");
122
107
  }
123
- const token = authHeader.split(" ")[1];
108
+ const token = (0, authenticatedToken_1.extractAccessiBearerToken)(authHeader);
124
109
  if (!token) {
125
110
  throw authError(401, "AUTH_TOKEN_MISSING", "Token not found in Authorization header");
126
111
  }
127
- const secret = (_b = (_a = accessiOptions === null || accessiOptions === void 0 ? void 0 : accessiOptions.jwtOptions) === null || _a === void 0 ? void 0 : _a.secret) !== null && _b !== void 0 ? _b : process.env.ACC_JWT_SECRET;
128
- if (!secret) {
129
- throw authError(500, "AUTH_JWT_SECRET_MISSING", "JWT secret not configured");
112
+ let verification;
113
+ try {
114
+ verification = (0, jwtTokenOptions_1.getAccessiAccessTokenVerificationConfig)(accessiOptions);
115
+ }
116
+ catch (_a) {
117
+ throw authError(500, "AUTH_JWT_SECRET_MISSING", "JWT signing key not configured");
130
118
  }
131
119
  let decoded;
132
120
  try {
133
- decoded = jwt.verify(token, secret);
121
+ decoded = (0, jwtTokenOptions_1.verifyAccessiJwt)(token, verification);
134
122
  }
135
- catch (_c) {
123
+ catch (_b) {
136
124
  throw authError(401, "AUTH_TOKEN_INVALID", "Invalid JWT token");
137
125
  }
138
126
  const codiceUtente = (0, authenticatedToken_1.resolveCodiceUtenteFromTokenPayload)(decoded);
139
127
  if (!codiceUtente) {
140
128
  throw authError(401, "AUTH_USER_CODE_MISSING", "codiceUtente not found in token payload");
141
129
  }
130
+ if (yield (0, sessionRevocation_1.isAccessiTokenRevoked)(accessiOptions, decoded, codiceUtente)) {
131
+ throw authError(401, "AUTH_TOKEN_REVOKED", "Session revoked");
132
+ }
142
133
  const currentUser = yield userService.getAuthenticatedUserSnapshot(codiceUtente);
143
- if (!(0, authenticatedToken_1.isAuthenticatedUserEnabledForJwt)(currentUser)) {
134
+ if (!(0, authenticatedToken_1.isAuthenticatedUserEnabledForJwt)(currentUser) || !(0, authenticatedToken_1.isAccessiTokenAllowedForUser)(decoded, currentUser)) {
144
135
  throw authError(401, "AUTH_USER_DISABLED", "User is no longer authorized");
145
136
  }
146
137
  const authenticatedPayload = (0, authenticatedToken_1.buildAuthenticatedTokenPayload)(decoded, currentUser);
@@ -166,23 +157,16 @@ function authorizeWithDependencies(req, res, next, options, accessiOptions, perm
166
157
  if (!hasPermissions) {
167
158
  throw authError(403, "AUTH_INSUFFICIENT_PERMISSIONS", "User does not have required permissions");
168
159
  }
169
- req.userGrants = yield getGrantsResult();
160
+ authenticatedRequest.userGrants = yield getGrantsResult();
170
161
  }
171
- req.user = authenticatedPayload;
172
- req.data = authenticatedPayload;
162
+ authenticatedRequest.user = authenticatedPayload;
163
+ authenticatedRequest.data = authenticatedPayload;
173
164
  return next();
174
165
  }
175
166
  catch (error) {
176
167
  const authErr = normalizeAuthError(error);
177
168
  logAuthFailure(req, authErr);
178
- const publicMessage = authErr.status === 403
179
- ? "Forbidden"
180
- : authErr.status >= 500
181
- ? "Internal server error"
182
- : "Unauthorized";
183
- return res
184
- .status(authErr.status)
185
- .json({ message: publicMessage, error: authErr.message, code: authErr.code });
169
+ return sendAuthenticationError(res, authErr);
186
170
  }
187
171
  });
188
172
  }
@@ -192,6 +176,10 @@ let AuthenticateGenService = class AuthenticateGenService {
192
176
  this.permissionService = permissionService;
193
177
  this.userService = userService;
194
178
  }
179
+ /**
180
+ * Verifica JWT, stato corrente dell'utente e policy opzionale, poi popola `req.user` e `req.data`.
181
+ * Se una policy richiede grant, popola anche `req.userGrants`; non chiamarlo direttamente fuori da test o adapter.
182
+ */
195
183
  authorize(req, res, next, options) {
196
184
  return __awaiter(this, void 0, void 0, function* () {
197
185
  return authorizeWithDependencies(req, res, next, options, this.accessiOptions, this.permissionService, this.userService);
@@ -200,7 +188,9 @@ let AuthenticateGenService = class AuthenticateGenService {
200
188
  };
201
189
  exports.AuthenticateGenService = AuthenticateGenService;
202
190
  exports.AuthenticateGenService = AuthenticateGenService = __decorate([
203
- (0, common_1.Injectable)(),
191
+ (0, common_1.Injectable)()
192
+ /** Nest service behind the Express-compatible `authorizeAccessi` middleware. */
193
+ ,
204
194
  __param(0, (0, common_1.Inject)("ACCESSI_OPTIONS")),
205
195
  __metadata("design:paramtypes", [Object, PermissionService_1.PermissionService,
206
196
  UserService_1.UserService])
@@ -220,11 +210,13 @@ function isAuthenticateGenService(value) {
220
210
  return Boolean(value &&
221
211
  typeof value.authorize === "function");
222
212
  }
213
+ /** Segnala al middleware che il bootstrap e in corso, consentendo una risposta 503 temporanea invece di un 500. */
223
214
  function beginAccessiAuthInitialization() {
224
215
  if (!authServiceBootstrapDeferred) {
225
216
  authServiceBootstrapDeferred = createDeferred();
226
217
  }
227
218
  }
219
+ /** Registra il servizio costruito da Nest nel bridge usato dalle rotte Express dell'app ospitante. */
228
220
  function setAccessiAuthService(service) {
229
221
  authenticateGenServiceRef = service;
230
222
  globalThis[ACCESSI_AUTH_SERVICE_GLOBAL_KEY] = service;
@@ -233,6 +225,7 @@ function setAccessiAuthService(service) {
233
225
  authServiceBootstrapDeferred = null;
234
226
  }
235
227
  }
228
+ /** Propaga il fallimento del bootstrap alle richieste che stavano attendendo il bridge di autorizzazione. */
236
229
  function failAccessiAuthInitialization(error) {
237
230
  if (authServiceBootstrapDeferred) {
238
231
  authServiceBootstrapDeferred.reject(error);
@@ -282,26 +275,41 @@ function resolveAccessiAuthService(req) {
282
275
  return getAccessiAuthServiceFromRequest(req);
283
276
  });
284
277
  }
278
+ /**
279
+ * Middleware Express pubblico di Accessi.
280
+ *
281
+ * Applicarlo dopo `initializeAccessiModule`: legge `Authorization: Bearer <jwt>`, verifica l'utente corrente
282
+ * e applica eventuali requisiti. Su successo valorizza `req.user` e continua; su errore risponde direttamente
283
+ * con il contratto Accessi, quindi il chiamante non deve aggiungere un proprio `next(error)`.
284
+ */
285
285
  function authorizeAccessi(req, res, next, options) {
286
286
  return __awaiter(this, void 0, void 0, function* () {
287
287
  var _a;
288
288
  const authService = yield resolveAccessiAuthService(req);
289
289
  if (!authService) {
290
290
  const status = authServiceBootstrapDeferred ? 503 : 500;
291
- const message = authServiceBootstrapDeferred
292
- ? "Accessi authentication service is still initializing"
293
- : "Accessi authentication service not initialized";
291
+ const code = authServiceBootstrapDeferred
292
+ ? 'ACCESSI_AUTH_INITIALIZING'
293
+ : 'ACCESSI_AUTH_NOT_INITIALIZED';
294
294
  logger.error(`Authentication service not initialized ${JSON.stringify({
295
295
  method: req.method,
296
296
  path: (_a = req.originalUrl) !== null && _a !== void 0 ? _a : req.url,
297
297
  status,
298
298
  })}`);
299
- return res
300
- .status(status)
301
- .json({ message });
299
+ return res.status(status).json({
300
+ severity: 'error',
301
+ status,
302
+ statusCode: 2,
303
+ code,
304
+ error: code,
305
+ message: status === 503
306
+ ? 'Il modulo Accessi e in inizializzazione. Riprova tra poco.'
307
+ : 'Il modulo Accessi non e disponibile.',
308
+ });
302
309
  }
303
310
  return authService.authorize(req, res, next, options);
304
311
  });
305
312
  }
313
+ /** Alias storico di `authorizeAccessi`, mantenuto per retrocompatibilita. Preferire il nome esplicito nelle nuove integrazioni. */
306
314
  exports.authenticateGen = authorizeAccessi;
307
315
  //# sourceMappingURL=authenticateGen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticateGen.js","sourceRoot":"","sources":["../../../src/accessi-module/middleware/authenticateGen.ts"],"names":[],"mappings":"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","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\r\nimport * as jwt from \"jsonwebtoken\";\r\nimport { Inject, Injectable } from \"@nestjs/common\";\r\nimport { AccessiOptions } from \"../AccessiModule\";\r\nimport { PermissionService } from \"../Services/PermissionService/PermissionService\";\r\nimport { UserService } from \"../Services/UserService/UserService\";\r\nimport { Logger } from \"../../Logger\";\r\nimport {\r\n AccessiAuthorizationOptions,\r\n AccessiCustomRequirementContext,\r\n GrantsResult,\r\n RequirementEvaluationError,\r\n buildRequirementTree,\r\n evaluateRequirement,\r\n} from \"./accessiRequirements\";\r\nimport {\r\n buildAuthenticatedTokenPayload,\r\n isAuthenticatedUserEnabledForJwt,\r\n resolveCodiceUtenteFromTokenPayload,\r\n} from \"../security/authenticatedToken\";\r\n\r\nconst logger = new Logger(\"AuthenticateGen\");\r\nconst ACCESSI_AUTH_SERVICE_LOCALS_KEY = \"accessiAuthService\";\r\nconst ACCESSI_AUTH_SERVICE_GLOBAL_KEY = Symbol.for(\"emilsoftware.accessiAuthService\");\r\nconst ACCESSI_AUTH_SERVICE_WAIT_MS = 15000;\r\n\r\ntype Deferred<T> = {\r\n promise: Promise<T>;\r\n resolve: (value: T) => void;\r\n reject: (reason?: unknown) => void;\r\n};\r\n\r\nclass AuthMiddlewareError extends Error {\r\n constructor(\r\n public readonly status: number,\r\n public readonly code: string,\r\n message: string,\r\n public readonly details?: Record<string, unknown>\r\n ) {\r\n super(message);\r\n this.name = \"AuthMiddlewareError\";\r\n }\r\n}\r\n\r\nfunction authError(\r\n status: number,\r\n code: string,\r\n message: string,\r\n details?: Record<string, unknown>\r\n) {\r\n return new AuthMiddlewareError(status, code, message, details);\r\n}\r\n\r\nfunction normalizeAuthError(error: unknown): AuthMiddlewareError {\r\n if (error instanceof AuthMiddlewareError) return error;\r\n if (error instanceof RequirementEvaluationError) {\r\n return authError(500, error.code, error.message);\r\n }\r\n if (error instanceof Error) {\r\n return authError(500, \"AUTH_INTERNAL_ERROR\", error.message, {\r\n originalError: error.name,\r\n });\r\n }\r\n return authError(500, \"AUTH_INTERNAL_ERROR\", \"Unexpected authentication error\");\r\n}\r\n\r\nfunction logAuthFailure(req: Request, authErr: AuthMiddlewareError) {\r\n const payload = {\r\n code: authErr.code,\r\n status: authErr.status,\r\n message: authErr.message,\r\n details: authErr.details,\r\n method: req.method,\r\n path: req.originalUrl ?? req.url,\r\n ip: req.ip,\r\n };\r\n\r\n const message = `${authErr.status >= 500 ? \"Authentication failure\" : \"Authentication denied\"} ${JSON.stringify(payload)}`;\r\n if (authErr.status >= 500) logger.error(message);\r\n else logger.warning(message);\r\n}\r\n\r\nasync function authorizeWithDependencies(\r\n req: Request,\r\n res: Response,\r\n next: NextFunction,\r\n options: AccessiAuthorizationOptions | undefined,\r\n accessiOptions: AccessiOptions,\r\n permissionService: PermissionService,\r\n userService: UserService\r\n) {\r\n try {\r\n const authHeader = req.headers.authorization;\r\n if (!authHeader) {\r\n throw authError(401, \"AUTH_HEADER_MISSING\", \"Authorization header not found\");\r\n }\r\n\r\n const token = authHeader.split(\" \")[1];\r\n if (!token) {\r\n throw authError(\r\n 401,\r\n \"AUTH_TOKEN_MISSING\",\r\n \"Token not found in Authorization header\"\r\n );\r\n }\r\n\r\n const secret = accessiOptions?.jwtOptions?.secret ?? process.env.ACC_JWT_SECRET;\r\n if (!secret) {\r\n throw authError(500, \"AUTH_JWT_SECRET_MISSING\", \"JWT secret not configured\");\r\n }\r\n\r\n let decoded: any;\r\n try {\r\n decoded = jwt.verify(token, secret);\r\n } catch {\r\n throw authError(401, \"AUTH_TOKEN_INVALID\", \"Invalid JWT token\");\r\n }\r\n\r\n const codiceUtente = resolveCodiceUtenteFromTokenPayload(decoded);\r\n if (!codiceUtente) {\r\n throw authError(\r\n 401,\r\n \"AUTH_USER_CODE_MISSING\",\r\n \"codiceUtente not found in token payload\"\r\n );\r\n }\r\n\r\n const currentUser = await userService.getAuthenticatedUserSnapshot(codiceUtente);\r\n if (!isAuthenticatedUserEnabledForJwt(currentUser)) {\r\n throw authError(\r\n 401,\r\n \"AUTH_USER_DISABLED\",\r\n \"User is no longer authorized\"\r\n );\r\n }\r\n\r\n const authenticatedPayload = buildAuthenticatedTokenPayload(decoded, currentUser);\r\n\r\n const requirementTree = buildRequirementTree(options);\r\n if (requirementTree) {\r\n if (!accessiOptions?.databaseOptions) {\r\n throw authError(\r\n 500,\r\n \"AUTH_DATABASE_OPTIONS_MISSING\",\r\n \"Database options not configured\"\r\n );\r\n }\r\n\r\n let grantsResultCache: GrantsResult | null = null;\r\n const getGrantsResult = async () => {\r\n if (!grantsResultCache) {\r\n grantsResultCache = await permissionService.getUserRolesAndGrants(\r\n codiceUtente\r\n );\r\n }\r\n return grantsResultCache;\r\n };\r\n\r\n const requirementContext: AccessiCustomRequirementContext = {\r\n req,\r\n decodedToken: authenticatedPayload,\r\n userCode: codiceUtente,\r\n getGrantsResult,\r\n };\r\n\r\n const hasPermissions = await evaluateRequirement(\r\n requirementTree,\r\n requirementContext,\r\n options\r\n );\r\n\r\n if (!hasPermissions) {\r\n throw authError(\r\n 403,\r\n \"AUTH_INSUFFICIENT_PERMISSIONS\",\r\n \"User does not have required permissions\"\r\n );\r\n }\r\n\r\n (req as any).userGrants = await getGrantsResult();\r\n }\r\n\r\n (req as any).user = authenticatedPayload;\r\n (req as any).data = authenticatedPayload;\r\n return next();\r\n } catch (error: unknown) {\r\n const authErr = normalizeAuthError(error);\r\n logAuthFailure(req, authErr);\r\n const publicMessage =\r\n authErr.status === 403\r\n ? \"Forbidden\"\r\n : authErr.status >= 500\r\n ? \"Internal server error\"\r\n : \"Unauthorized\";\r\n return res\r\n .status(authErr.status)\r\n .json({ message: publicMessage, error: authErr.message, code: authErr.code });\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class AuthenticateGenService {\r\n constructor(\r\n @Inject(\"ACCESSI_OPTIONS\")\r\n private readonly accessiOptions: AccessiOptions,\r\n private readonly permissionService: PermissionService,\r\n private readonly userService: UserService\r\n ) { }\r\n\r\n async authorize(\r\n req: Request,\r\n res: Response,\r\n next: NextFunction,\r\n options?: AccessiAuthorizationOptions\r\n ) {\r\n return authorizeWithDependencies(\r\n req,\r\n res,\r\n next,\r\n options,\r\n this.accessiOptions,\r\n this.permissionService,\r\n this.userService\r\n );\r\n }\r\n}\r\n\r\nlet authenticateGenServiceRef: AuthenticateGenService | null = null;\r\nlet authServiceBootstrapDeferred: Deferred<AuthenticateGenService> | null = null;\r\n\r\nfunction createDeferred<T>(): Deferred<T> {\r\n let resolve!: (value: T) => void;\r\n let reject!: (reason?: unknown) => void;\r\n const promise = new Promise<T>((res, rej) => {\r\n resolve = res;\r\n reject = rej;\r\n });\r\n return { promise, resolve, reject };\r\n}\r\n\r\nfunction isAuthenticateGenService(value: unknown): value is AuthenticateGenService {\r\n return Boolean(\r\n value &&\r\n typeof (value as { authorize?: unknown }).authorize === \"function\"\r\n );\r\n}\r\n\r\nexport function beginAccessiAuthInitialization() {\r\n if (!authServiceBootstrapDeferred) {\r\n authServiceBootstrapDeferred = createDeferred<AuthenticateGenService>();\r\n }\r\n}\r\n\r\nexport function setAccessiAuthService(service: AuthenticateGenService) {\r\n authenticateGenServiceRef = service;\r\n (globalThis as Record<symbol, unknown>)[ACCESSI_AUTH_SERVICE_GLOBAL_KEY] = service;\r\n if (authServiceBootstrapDeferred) {\r\n authServiceBootstrapDeferred.resolve(service);\r\n authServiceBootstrapDeferred = null;\r\n }\r\n}\r\n\r\nexport function failAccessiAuthInitialization(error: unknown) {\r\n if (authServiceBootstrapDeferred) {\r\n authServiceBootstrapDeferred.reject(error);\r\n authServiceBootstrapDeferred = null;\r\n }\r\n}\r\n\r\nfunction getAccessiAuthServiceFromRequest(req: Request): AuthenticateGenService | null {\r\n const appLocalsService = (req.app?.locals as Record<string, unknown> | undefined)?.[\r\n ACCESSI_AUTH_SERVICE_LOCALS_KEY\r\n ];\r\n\r\n if (isAuthenticateGenService(appLocalsService)) {\r\n return appLocalsService as AuthenticateGenService;\r\n }\r\n\r\n const globalService = (globalThis as Record<symbol, unknown>)[\r\n ACCESSI_AUTH_SERVICE_GLOBAL_KEY\r\n ];\r\n if (isAuthenticateGenService(globalService)) {\r\n return globalService as AuthenticateGenService;\r\n }\r\n\r\n return authenticateGenServiceRef;\r\n}\r\n\r\nasync function waitForBootstrappedService(): Promise<AuthenticateGenService | null> {\r\n if (!authServiceBootstrapDeferred) {\r\n return null;\r\n }\r\n\r\n const bootstrapPromise = authServiceBootstrapDeferred.promise;\r\n const timeoutPromise = new Promise<null>((resolve) => {\r\n setTimeout(() => resolve(null), ACCESSI_AUTH_SERVICE_WAIT_MS);\r\n });\r\n\r\n try {\r\n const resolved = await Promise.race([bootstrapPromise, timeoutPromise]);\r\n return isAuthenticateGenService(resolved) ? resolved : null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nasync function resolveAccessiAuthService(req: Request): Promise<AuthenticateGenService | null> {\r\n const immediateService = getAccessiAuthServiceFromRequest(req);\r\n if (immediateService) {\r\n return immediateService;\r\n }\r\n\r\n const bootstrappedService = await waitForBootstrappedService();\r\n if (bootstrappedService) {\r\n return bootstrappedService;\r\n }\r\n\r\n return getAccessiAuthServiceFromRequest(req);\r\n}\r\n\r\nexport async function authorizeAccessi(\r\n req: Request,\r\n res: Response,\r\n next: NextFunction,\r\n options?: AccessiAuthorizationOptions\r\n) {\r\n const authService = await resolveAccessiAuthService(req);\r\n\r\n if (!authService) {\r\n const status = authServiceBootstrapDeferred ? 503 : 500;\r\n const message = authServiceBootstrapDeferred\r\n ? \"Accessi authentication service is still initializing\"\r\n : \"Accessi authentication service not initialized\";\r\n logger.error(\r\n `Authentication service not initialized ${JSON.stringify({\r\n method: req.method,\r\n path: req.originalUrl ?? req.url,\r\n status,\r\n })}`\r\n );\r\n return res\r\n .status(status)\r\n .json({ message });\r\n }\r\n\r\n return authService.authorize(req, res, next, options);\r\n}\r\n\r\nexport const authenticateGen = authorizeAccessi;\r\n"]}
1
+ {"version":3,"file":"authenticateGen.js","sourceRoot":"","sources":["../../../src/accessi-module/middleware/authenticateGen.ts"],"names":[],"mappings":"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","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport { Inject, Injectable } from \"@nestjs/common\";\nimport type { AccessiOptions } from \"../AccessiModule\";\nimport { PermissionService } from \"../Services/PermissionService/PermissionService\";\nimport { UserService } from \"../Services/UserService/UserService\";\nimport { Logger } from \"../../Logger\";\nimport {\n AccessiAuthorizationOptions,\n AccessiCustomRequirementContext,\n GrantsResult,\n RequirementEvaluationError,\n buildRequirementTree,\n evaluateRequirement,\n} from \"./accessiRequirements\";\nimport {\n buildAuthenticatedTokenPayload,\n extractAccessiBearerToken,\n isAuthenticatedUserEnabledForJwt,\n isAccessiTokenAllowedForUser,\n resolveCodiceUtenteFromTokenPayload,\n} from \"../security/authenticatedToken\";\nimport { getAccessiAccessTokenVerificationConfig, verifyAccessiJwt } from \"../security/jwtTokenOptions\";\nimport { isAccessiTokenRevoked } from \"../security/sessionRevocation\";\n\nconst logger = new Logger(\"AuthenticateGen\");\nconst ACCESSI_AUTH_SERVICE_LOCALS_KEY = \"accessiAuthService\";\nconst ACCESSI_AUTH_SERVICE_GLOBAL_KEY = Symbol.for(\"emilsoftware.accessiAuthService\");\nconst ACCESSI_AUTH_SERVICE_WAIT_MS = 15000;\n\ntype Deferred<T> = {\n promise: Promise<T>;\n resolve: (value: T) => void;\n reject: (reason?: unknown) => void;\n};\n\nclass AuthMiddlewareError extends Error {\n constructor(\n public readonly status: number,\n public readonly code: string,\n message: string,\n public readonly details?: Record<string, unknown>\n ) {\n super(message);\n this.name = \"AuthMiddlewareError\";\n }\n}\n\nfunction authError(\n status: number,\n code: string,\n message: string,\n details?: Record<string, unknown>\n) {\n return new AuthMiddlewareError(status, code, message, details);\n}\n\nfunction normalizeAuthError(error: unknown): AuthMiddlewareError {\n if (error instanceof AuthMiddlewareError) return error;\n if (error instanceof RequirementEvaluationError) {\n return authError(500, error.code, error.message);\n }\n if (error instanceof Error) {\n return authError(500, \"AUTH_INTERNAL_ERROR\", error.message, {\n originalError: error.name,\n });\n }\n return authError(500, \"AUTH_INTERNAL_ERROR\", \"Unexpected authentication error\");\n}\n\nfunction logAuthFailure(req: Request, authErr: AuthMiddlewareError) {\n const payload = {\n code: authErr.code,\n status: authErr.status,\n message: authErr.message,\n details: authErr.details,\n method: req.method,\n path: req.originalUrl ?? req.url,\n ip: req.ip,\n };\n\n const message = `${authErr.status >= 500 ? \"Authentication failure\" : \"Authentication denied\"} ${JSON.stringify(payload)}`;\n if (authErr.status >= 500) logger.error(message);\n else logger.warning(message);\n}\n\n/** Sends the documented Accessi error contract from Express middleware. */\nfunction sendAuthenticationError(res: Response, authErr: AuthMiddlewareError): Response {\n const message =\n authErr.status === 403\n ? 'Operazione non autorizzata.'\n : authErr.status >= 500\n ? 'Errore interno del modulo Accessi.'\n : 'Autenticazione non valida o scaduta.';\n\n return res.status(authErr.status).json({\n severity: 'error',\n status: authErr.status,\n statusCode: 2,\n code: authErr.code,\n // Kept for callers of older versions which already inspected `error`.\n error: authErr.code,\n message,\n });\n}\n\nasync function authorizeWithDependencies(\n req: Request,\n res: Response,\n next: NextFunction,\n options: AccessiAuthorizationOptions | undefined,\n accessiOptions: AccessiOptions,\n permissionService: PermissionService,\n userService: UserService\n) {\n type AuthenticatedRequest = Request & {\n userGrants?: unknown;\n user?: unknown;\n data?: unknown;\n };\n const authenticatedRequest = req as AuthenticatedRequest;\n\n try {\n const authHeader = req.headers.authorization;\n if (!authHeader) {\n throw authError(401, \"AUTH_HEADER_MISSING\", \"Authorization header not found\");\n }\n\n const token = extractAccessiBearerToken(authHeader);\n if (!token) {\n throw authError(\n 401,\n \"AUTH_TOKEN_MISSING\",\n \"Token not found in Authorization header\"\n );\n }\n\n let verification: ReturnType<typeof getAccessiAccessTokenVerificationConfig>;\n try {\n verification = getAccessiAccessTokenVerificationConfig(accessiOptions);\n } catch {\n throw authError(500, \"AUTH_JWT_SECRET_MISSING\", \"JWT signing key not configured\");\n }\n\n let decoded: unknown;\n try {\n decoded = verifyAccessiJwt(token, verification);\n } catch {\n throw authError(401, \"AUTH_TOKEN_INVALID\", \"Invalid JWT token\");\n }\n\n const codiceUtente = resolveCodiceUtenteFromTokenPayload(decoded);\n if (!codiceUtente) {\n throw authError(\n 401,\n \"AUTH_USER_CODE_MISSING\",\n \"codiceUtente not found in token payload\"\n );\n }\n if (await isAccessiTokenRevoked(accessiOptions, decoded as Record<string, unknown>, codiceUtente)) {\n throw authError(401, \"AUTH_TOKEN_REVOKED\", \"Session revoked\");\n }\n\n const currentUser = await userService.getAuthenticatedUserSnapshot(codiceUtente);\n if (!isAuthenticatedUserEnabledForJwt(currentUser) || !isAccessiTokenAllowedForUser(decoded, currentUser)) {\n throw authError(\n 401,\n \"AUTH_USER_DISABLED\",\n \"User is no longer authorized\"\n );\n }\n\n const authenticatedPayload = buildAuthenticatedTokenPayload(decoded, currentUser);\n\n const requirementTree = buildRequirementTree(options);\n if (requirementTree) {\n if (!accessiOptions?.databaseOptions) {\n throw authError(\n 500,\n \"AUTH_DATABASE_OPTIONS_MISSING\",\n \"Database options not configured\"\n );\n }\n\n let grantsResultCache: GrantsResult | null = null;\n const getGrantsResult = async () => {\n if (!grantsResultCache) {\n grantsResultCache = await permissionService.getUserRolesAndGrants(\n codiceUtente\n );\n }\n return grantsResultCache;\n };\n\n const requirementContext: AccessiCustomRequirementContext = {\n req,\n decodedToken: authenticatedPayload,\n userCode: codiceUtente,\n getGrantsResult,\n };\n\n const hasPermissions = await evaluateRequirement(\n requirementTree,\n requirementContext,\n options\n );\n\n if (!hasPermissions) {\n throw authError(\n 403,\n \"AUTH_INSUFFICIENT_PERMISSIONS\",\n \"User does not have required permissions\"\n );\n }\n\n authenticatedRequest.userGrants = await getGrantsResult();\n }\n\n authenticatedRequest.user = authenticatedPayload;\n authenticatedRequest.data = authenticatedPayload;\n return next();\n } catch (error: unknown) {\n const authErr = normalizeAuthError(error);\n logAuthFailure(req, authErr);\n return sendAuthenticationError(res, authErr);\n }\n}\n\n@Injectable()\n/** Nest service behind the Express-compatible `authorizeAccessi` middleware. */\nexport class AuthenticateGenService {\n constructor(\n @Inject(\"ACCESSI_OPTIONS\")\n private readonly accessiOptions: AccessiOptions,\n private readonly permissionService: PermissionService,\n private readonly userService: UserService\n ) { }\n\n /**\n * Verifica JWT, stato corrente dell'utente e policy opzionale, poi popola `req.user` e `req.data`.\n * Se una policy richiede grant, popola anche `req.userGrants`; non chiamarlo direttamente fuori da test o adapter.\n */\n async authorize(\n req: Request,\n res: Response,\n next: NextFunction,\n options?: AccessiAuthorizationOptions\n ) {\n return authorizeWithDependencies(\n req,\n res,\n next,\n options,\n this.accessiOptions,\n this.permissionService,\n this.userService\n );\n }\n}\n\nlet authenticateGenServiceRef: AuthenticateGenService | null = null;\nlet authServiceBootstrapDeferred: Deferred<AuthenticateGenService> | null = null;\n\nfunction createDeferred<T>(): Deferred<T> {\n let resolve!: (value: T) => void;\n let reject!: (reason?: unknown) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nfunction isAuthenticateGenService(value: unknown): value is AuthenticateGenService {\n return Boolean(\n value &&\n typeof (value as { authorize?: unknown }).authorize === \"function\"\n );\n}\n\n/** Segnala al middleware che il bootstrap e in corso, consentendo una risposta 503 temporanea invece di un 500. */\nexport function beginAccessiAuthInitialization() {\n if (!authServiceBootstrapDeferred) {\n authServiceBootstrapDeferred = createDeferred<AuthenticateGenService>();\n }\n}\n\n/** Registra il servizio costruito da Nest nel bridge usato dalle rotte Express dell'app ospitante. */\nexport function setAccessiAuthService(service: AuthenticateGenService) {\n authenticateGenServiceRef = service;\n (globalThis as Record<symbol, unknown>)[ACCESSI_AUTH_SERVICE_GLOBAL_KEY] = service;\n if (authServiceBootstrapDeferred) {\n authServiceBootstrapDeferred.resolve(service);\n authServiceBootstrapDeferred = null;\n }\n}\n\n/** Propaga il fallimento del bootstrap alle richieste che stavano attendendo il bridge di autorizzazione. */\nexport function failAccessiAuthInitialization(error: unknown) {\n if (authServiceBootstrapDeferred) {\n authServiceBootstrapDeferred.reject(error);\n authServiceBootstrapDeferred = null;\n }\n}\n\nfunction getAccessiAuthServiceFromRequest(req: Request): AuthenticateGenService | null {\n const appLocalsService = (req.app?.locals as Record<string, unknown> | undefined)?.[\n ACCESSI_AUTH_SERVICE_LOCALS_KEY\n ];\n\n if (isAuthenticateGenService(appLocalsService)) {\n return appLocalsService as AuthenticateGenService;\n }\n\n const globalService = (globalThis as Record<symbol, unknown>)[\n ACCESSI_AUTH_SERVICE_GLOBAL_KEY\n ];\n if (isAuthenticateGenService(globalService)) {\n return globalService as AuthenticateGenService;\n }\n\n return authenticateGenServiceRef;\n}\n\nasync function waitForBootstrappedService(): Promise<AuthenticateGenService | null> {\n if (!authServiceBootstrapDeferred) {\n return null;\n }\n\n const bootstrapPromise = authServiceBootstrapDeferred.promise;\n const timeoutPromise = new Promise<null>((resolve) => {\n setTimeout(() => resolve(null), ACCESSI_AUTH_SERVICE_WAIT_MS);\n });\n\n try {\n const resolved = await Promise.race([bootstrapPromise, timeoutPromise]);\n return isAuthenticateGenService(resolved) ? resolved : null;\n } catch {\n return null;\n }\n}\n\nasync function resolveAccessiAuthService(req: Request): Promise<AuthenticateGenService | null> {\n const immediateService = getAccessiAuthServiceFromRequest(req);\n if (immediateService) {\n return immediateService;\n }\n\n const bootstrappedService = await waitForBootstrappedService();\n if (bootstrappedService) {\n return bootstrappedService;\n }\n\n return getAccessiAuthServiceFromRequest(req);\n}\n\n/**\n * Middleware Express pubblico di Accessi.\n *\n * Applicarlo dopo `initializeAccessiModule`: legge `Authorization: Bearer <jwt>`, verifica l'utente corrente\n * e applica eventuali requisiti. Su successo valorizza `req.user` e continua; su errore risponde direttamente\n * con il contratto Accessi, quindi il chiamante non deve aggiungere un proprio `next(error)`.\n */\nexport async function authorizeAccessi(\n req: Request,\n res: Response,\n next: NextFunction,\n options?: AccessiAuthorizationOptions\n) {\n const authService = await resolveAccessiAuthService(req);\n\n if (!authService) {\n const status = authServiceBootstrapDeferred ? 503 : 500;\n const code = authServiceBootstrapDeferred\n ? 'ACCESSI_AUTH_INITIALIZING'\n : 'ACCESSI_AUTH_NOT_INITIALIZED';\n logger.error(\n `Authentication service not initialized ${JSON.stringify({\n method: req.method,\n path: req.originalUrl ?? req.url,\n status,\n })}`\n );\n return res.status(status).json({\n severity: 'error',\n status,\n statusCode: 2,\n code,\n error: code,\n message: status === 503\n ? 'Il modulo Accessi e in inizializzazione. Riprova tra poco.'\n : 'Il modulo Accessi non e disponibile.',\n });\n }\n\n return authService.authorize(req, res, next, options);\n}\n\n/** Alias storico di `authorizeAccessi`, mantenuto per retrocompatibilita. Preferire il nome esplicito nelle nuove integrazioni. */\nexport const authenticateGen = authorizeAccessi;\n"]}
@@ -0,0 +1,79 @@
1
+ import type { AccessiOptions } from '../AccessiModule';
2
+ /** Valore ammesso per un label Prometheus. */
3
+ export type AccessiMetricLabelValue = string | number | boolean | undefined;
4
+ export type AccessiMetricLabels = Record<string, AccessiMetricLabelValue>;
5
+ /**
6
+ * Destinazione delle metriche Accessi.
7
+ *
8
+ * L'implementazione predefinita e il registry in memoria renderizzato in
9
+ * formato Prometheus. Un host puo passare un sink custom (OpenTelemetry,
10
+ * StatsD, ...) tramite `metrics.sink`.
11
+ */
12
+ export interface AccessiMetricsSink {
13
+ increment(name: string, value?: number, labels?: AccessiMetricLabels): void;
14
+ gauge?(name: string, value: number, labels?: AccessiMetricLabels): void;
15
+ observe?(name: string, valueMs: number, labels?: AccessiMetricLabels): void;
16
+ }
17
+ /** Opzioni di osservabilita di Accessi. */
18
+ export interface AccessiMetricsOptions {
19
+ /** `false` disabilita le metriche di dominio. Default: abilitate. */
20
+ enabled?: boolean;
21
+ /** Sink custom. Default: registry in memoria. */
22
+ sink?: AccessiMetricsSink;
23
+ /** Prefisso dei nomi. Default `accessi`. */
24
+ prefix?: string;
25
+ }
26
+ export interface AccessiMetricsRegistry extends AccessiMetricsSink {
27
+ observe(name: string, valueMs: number, labels?: AccessiMetricLabels): void;
28
+ gauge(name: string, value: number, labels?: AccessiMetricLabels): void;
29
+ renderPrometheus(): string;
30
+ snapshot(): AccessiMetricsSnapshot;
31
+ reset(): void;
32
+ }
33
+ export interface AccessiMetricsSnapshot {
34
+ counters: Array<{
35
+ name: string;
36
+ labels: Record<string, string>;
37
+ value: number;
38
+ }>;
39
+ gauges: Array<{
40
+ name: string;
41
+ labels: Record<string, string>;
42
+ value: number;
43
+ }>;
44
+ histograms: Array<{
45
+ name: string;
46
+ labels: Record<string, string>;
47
+ count: number;
48
+ sum: number;
49
+ buckets: Array<{
50
+ le: number;
51
+ count: number;
52
+ }>;
53
+ }>;
54
+ }
55
+ /**
56
+ * Registry in memoria con rendering Prometheus.
57
+ *
58
+ * Non usa dipendenze: la stessa struttura e usata dal servizio standalone e
59
+ * dai test. `reset()` serve per isolare i test.
60
+ */
61
+ export declare function createAccessiMetricsRegistry(): AccessiMetricsRegistry;
62
+ /** Registry globale usato da Accessi e dal servizio standalone. */
63
+ export declare function getAccessiMetricsRegistry(): AccessiMetricsRegistry;
64
+ /** Sink configurato per l'istanza, oppure registry globale. */
65
+ export declare function getAccessiMetricsSink(options: AccessiOptions | undefined): AccessiMetricsSink | undefined;
66
+ /** Registra una metrica sul registry globale (usato da store e moduli senza options). */
67
+ export declare function recordAccessiMetric(name: string, value?: number, labels?: AccessiMetricLabels): void;
68
+ /** Registra una durata in millisecondi sul registry globale. */
69
+ export declare function recordAccessiDuration(name: string, valueMs: number, labels?: AccessiMetricLabels): void;
70
+ /** Render Prometheus del registry globale. */
71
+ export declare function renderAccessiMetrics(): string;
72
+ /** Azzera il registry globale (test e reset espliciti). */
73
+ export declare function resetAccessiMetrics(): void;
74
+ /** Prefisso configurato, con normalizzazione per evitare nomi non validi. */
75
+ export declare function accessiMetricName(options: AccessiOptions | undefined, name: string): string;
76
+ /** Incrementa un contatore di dominio sull'istanza (o sul registry globale). */
77
+ export declare function countAccessiMetric(options: AccessiOptions | undefined, name: string, labels?: AccessiMetricLabels, value?: number): void;
78
+ /** Registra una durata di dominio in millisecondi. */
79
+ export declare function observeAccessiMetric(options: AccessiOptions | undefined, name: string, valueMs: number, labels?: AccessiMetricLabels): void;