emilsoftware-utilities 2.0.0-dev.7 → 2.0.0-dev.71

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 (838) hide show
  1. package/README.MD +278 -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/index.d.ts +50 -0
  27. package/dist/accessi/client/index.js +112 -0
  28. package/dist/accessi/client/index.js.map +1 -0
  29. package/dist/accessi/console/index.d.ts +15 -0
  30. package/dist/accessi/console/index.js +25 -0
  31. package/dist/accessi/console/index.js.map +1 -0
  32. package/dist/accessi/contracts/dtos.d.ts +8 -0
  33. package/dist/accessi/contracts/dtos.js +25 -0
  34. package/dist/accessi/contracts/dtos.js.map +1 -0
  35. package/dist/accessi/contracts/index.d.ts +25 -0
  36. package/dist/accessi/contracts/index.js +28 -0
  37. package/dist/accessi/contracts/index.js.map +1 -0
  38. package/dist/accessi/openapi/index.d.ts +2 -0
  39. package/dist/accessi/openapi/index.js +19 -0
  40. package/dist/accessi/openapi/index.js.map +1 -0
  41. package/dist/accessi/resource-server/core.d.ts +6 -0
  42. package/dist/accessi/resource-server/core.js +23 -0
  43. package/dist/accessi/resource-server/core.js.map +1 -0
  44. package/dist/accessi/resource-server/errors.d.ts +10 -0
  45. package/dist/accessi/resource-server/errors.js +19 -0
  46. package/dist/accessi/resource-server/errors.js.map +1 -0
  47. package/dist/accessi/resource-server/express.d.ts +17 -0
  48. package/dist/accessi/resource-server/express.js +87 -0
  49. package/dist/accessi/resource-server/express.js.map +1 -0
  50. package/dist/accessi/resource-server/index.d.ts +3 -0
  51. package/dist/accessi/resource-server/index.js +20 -0
  52. package/dist/accessi/resource-server/index.js.map +1 -0
  53. package/dist/accessi/resource-server/introspection.d.ts +16 -0
  54. package/dist/accessi/resource-server/introspection.js +115 -0
  55. package/dist/accessi/resource-server/introspection.js.map +1 -0
  56. package/dist/accessi/resource-server/keys.d.ts +11 -0
  57. package/dist/accessi/resource-server/keys.js +22 -0
  58. package/dist/accessi/resource-server/keys.js.map +1 -0
  59. package/dist/accessi/resource-server/nest.d.ts +9 -0
  60. package/dist/accessi/resource-server/nest.js +75 -0
  61. package/dist/accessi/resource-server/nest.js.map +1 -0
  62. package/dist/accessi/resource-server/runtime.d.ts +27 -0
  63. package/dist/accessi/resource-server/runtime.js +179 -0
  64. package/dist/accessi/resource-server/runtime.js.map +1 -0
  65. package/dist/accessi/resource-server/token.d.ts +23 -0
  66. package/dist/accessi/resource-server/token.js +230 -0
  67. package/dist/accessi/resource-server/token.js.map +1 -0
  68. package/dist/accessi/resource-server/types.d.ts +92 -0
  69. package/dist/accessi/resource-server/types.js +3 -0
  70. package/dist/accessi/resource-server/types.js.map +1 -0
  71. package/dist/accessi/server/index.d.ts +11 -0
  72. package/dist/accessi/server/index.js +30 -0
  73. package/dist/accessi/server/index.js.map +1 -0
  74. package/dist/accessi/server/standalone.d.ts +41 -0
  75. package/dist/accessi/server/standalone.js +265 -0
  76. package/dist/accessi/server/standalone.js.map +1 -0
  77. package/dist/accessi/ui/index.d.ts +13 -0
  78. package/dist/accessi/ui/index.js +19 -0
  79. package/dist/accessi/ui/index.js.map +1 -0
  80. package/dist/accessi-module/AccessiModule.d.ts +199 -0
  81. package/dist/accessi-module/AccessiModule.js +43 -5
  82. package/dist/accessi-module/AccessiModule.js.map +1 -1
  83. package/dist/accessi-module/Console/accessiFetch.d.ts +52 -0
  84. package/dist/accessi-module/Console/accessiFetch.js +140 -0
  85. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  86. package/dist/accessi-module/Console/console.css +774 -0
  87. package/dist/accessi-module/Console/console.d.ts +1 -0
  88. package/dist/accessi-module/Console/console.js +4102 -0
  89. package/dist/accessi-module/Console/console.js.map +1 -0
  90. package/dist/accessi-module/Console/generated/emilsoftware-utilities.d.ts +761 -0
  91. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js +712 -0
  92. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +1 -0
  93. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  94. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  95. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  96. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  97. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  98. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  99. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.d.ts +16 -0
  100. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js +3 -0
  101. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js.map +1 -0
  102. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  103. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  104. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  105. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.d.ts +14 -0
  106. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js +3 -0
  107. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js.map +1 -0
  108. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.d.ts +10 -0
  109. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js +9 -0
  110. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js.map +1 -0
  111. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  112. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  113. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  114. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  115. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  116. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  118. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  119. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  121. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  122. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.d.ts +17 -0
  124. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js +9 -0
  125. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.d.ts +14 -0
  127. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js +3 -0
  128. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.d.ts +13 -0
  130. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js +9 -0
  131. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  134. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.d.ts +10 -0
  136. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js +9 -0
  137. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.d.ts +14 -0
  139. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js +3 -0
  140. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.d.ts +10 -0
  142. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js +3 -0
  143. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.d.ts +14 -0
  145. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js +3 -0
  146. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.d.ts +12 -0
  148. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.d.ts +12 -0
  151. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js +9 -0
  152. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  154. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  155. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  157. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  158. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  160. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  161. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  163. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  164. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  166. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  167. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +22 -0
  169. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  170. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  172. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  173. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  175. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/createScopeRequest.d.ts +18 -0
  178. package/dist/accessi-module/Console/generated/model/createScopeRequest.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/createScopeRequest.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  181. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  184. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  185. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  187. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  188. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.d.ts +12 -0
  190. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js +9 -0
  191. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.d.ts +15 -0
  193. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js +3 -0
  194. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.d.ts +14 -0
  196. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js +3 -0
  197. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  199. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  200. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  202. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  203. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  205. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  206. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  208. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  209. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  211. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  212. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  214. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  217. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  220. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  221. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  223. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  224. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  226. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  227. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +16 -0
  229. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  230. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.d.ts +14 -0
  235. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js +3 -0
  236. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js.map +1 -0
  237. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  238. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  239. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  240. package/dist/accessi-module/Console/generated/model/getMenusParams.d.ts +12 -0
  241. package/dist/accessi-module/Console/generated/model/getMenusParams.js +9 -0
  242. package/dist/accessi-module/Console/generated/model/getMenusParams.js.map +1 -0
  243. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  244. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  245. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  246. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  247. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  248. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  249. package/dist/accessi-module/Console/generated/model/getSchemaResponse.d.ts +14 -0
  250. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js +3 -0
  251. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +1 -0
  252. package/dist/accessi-module/Console/generated/model/getScopesResponse.d.ts +14 -0
  253. package/dist/accessi-module/Console/generated/model/getScopesResponse.js +3 -0
  254. package/dist/accessi-module/Console/generated/model/getScopesResponse.js.map +1 -0
  255. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  256. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  257. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  258. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  259. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  260. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  261. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  262. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  263. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  264. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  265. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  266. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  267. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.d.ts +12 -0
  268. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js +9 -0
  269. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js.map +1 -0
  270. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  271. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  272. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  273. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  274. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  275. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  276. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  277. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  278. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  279. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  280. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  281. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  282. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  283. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  284. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  285. package/dist/accessi-module/Console/generated/model/index.d.ts +130 -0
  286. package/dist/accessi-module/Console/generated/model/index.js +147 -0
  287. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  288. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.d.ts +10 -0
  289. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js +9 -0
  290. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js.map +1 -0
  291. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.d.ts +14 -0
  292. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js +3 -0
  293. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js.map +1 -0
  294. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  295. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  296. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  297. package/dist/accessi-module/Console/generated/model/loginAsRequest.d.ts +10 -0
  298. package/dist/accessi-module/Console/generated/model/loginAsRequest.js +9 -0
  299. package/dist/accessi-module/Console/generated/model/loginAsRequest.js.map +1 -0
  300. package/dist/accessi-module/Console/generated/model/loginAsResponse.d.ts +14 -0
  301. package/dist/accessi-module/Console/generated/model/loginAsResponse.js +3 -0
  302. package/dist/accessi-module/Console/generated/model/loginAsResponse.js.map +1 -0
  303. package/dist/accessi-module/Console/generated/model/loginAsResult.d.ts +16 -0
  304. package/dist/accessi-module/Console/generated/model/loginAsResult.js +9 -0
  305. package/dist/accessi-module/Console/generated/model/loginAsResult.js.map +1 -0
  306. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +14 -0
  307. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  308. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  309. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  310. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  311. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  312. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +34 -0
  313. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  314. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  315. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  316. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  317. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  318. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  319. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  320. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  321. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  322. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  323. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  324. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  325. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  326. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  327. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  328. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  329. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  330. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  331. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  332. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  333. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  334. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  335. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  336. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.d.ts +10 -0
  337. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js +9 -0
  338. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js.map +1 -0
  339. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.d.ts +14 -0
  340. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js +3 -0
  341. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js.map +1 -0
  342. package/dist/accessi-module/Console/generated/model/refreshTokenResult.d.ts +13 -0
  343. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js +3 -0
  344. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js.map +1 -0
  345. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  346. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  347. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  348. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  349. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  350. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  351. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  352. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  353. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  354. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.d.ts +10 -0
  355. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js +9 -0
  356. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js.map +1 -0
  357. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  358. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  359. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  360. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  361. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  362. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  363. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  364. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  365. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  366. package/dist/accessi-module/Console/generated/model/schemaDdlResult.d.ts +20 -0
  367. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js +3 -0
  368. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +1 -0
  369. package/dist/accessi-module/Console/generated/model/schemaDdlSection.d.ts +12 -0
  370. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js +9 -0
  371. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +1 -0
  372. package/dist/accessi-module/Console/generated/model/scopeEntity.d.ts +12 -0
  373. package/dist/accessi-module/Console/generated/model/scopeEntity.js +9 -0
  374. package/dist/accessi-module/Console/generated/model/scopeEntity.js.map +1 -0
  375. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  376. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  377. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  378. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  379. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  380. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  381. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  382. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  383. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  384. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.d.ts +10 -0
  385. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js +9 -0
  386. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js.map +1 -0
  387. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  388. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  389. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  390. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.d.ts +10 -0
  391. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js +9 -0
  392. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js.map +1 -0
  393. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  394. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  395. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  396. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  397. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  398. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  399. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.d.ts +14 -0
  400. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js +9 -0
  401. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js.map +1 -0
  402. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  403. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  404. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  405. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  406. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  407. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  408. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  409. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  410. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  411. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  412. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  413. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  414. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  415. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  416. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  417. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  418. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  419. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  420. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  421. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  422. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  423. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  424. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  425. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  426. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  427. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  428. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  429. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  430. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  431. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  432. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  433. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  434. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  435. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  436. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  437. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  438. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  439. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  440. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  441. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +17 -0
  442. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  443. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  444. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  445. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  446. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  447. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  448. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  449. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  450. package/dist/accessi-module/Console/generated/model/updateScopeRequest.d.ts +13 -0
  451. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js +9 -0
  452. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js.map +1 -0
  453. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  454. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  455. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  456. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  457. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  458. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  459. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  460. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  461. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  462. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  463. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  464. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  465. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +20 -0
  466. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  467. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  468. package/dist/accessi-module/Console/help.d.ts +13 -0
  469. package/dist/accessi-module/Console/help.js +417 -0
  470. package/dist/accessi-module/Console/help.js.map +1 -0
  471. package/dist/accessi-module/Console/index.html +141 -0
  472. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  473. package/dist/accessi-module/Console/wiki.js +855 -0
  474. package/dist/accessi-module/Console/wiki.js.map +1 -0
  475. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +23 -0
  476. package/dist/accessi-module/Controllers/AccessiConsoleController.js +134 -0
  477. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  478. package/dist/accessi-module/Controllers/AccessiIntrospectionController.d.ts +17 -0
  479. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +93 -0
  480. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +1 -0
  481. package/dist/accessi-module/Controllers/AuthController.d.ts +16 -6
  482. package/dist/accessi-module/Controllers/AuthController.js +333 -85
  483. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  484. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -5
  485. package/dist/accessi-module/Controllers/ConfiguratorController.js +26 -44
  486. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  487. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +16 -0
  488. package/dist/accessi-module/Controllers/ConsoleEntryController.js +136 -0
  489. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +1 -0
  490. package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
  491. package/dist/accessi-module/Controllers/EmailController.js +13 -15
  492. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  493. package/dist/accessi-module/Controllers/FiltriController.d.ts +12 -4
  494. package/dist/accessi-module/Controllers/FiltriController.js +153 -6
  495. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  496. package/dist/accessi-module/Controllers/PermissionController.d.ts +31 -5
  497. package/dist/accessi-module/Controllers/PermissionController.js +559 -66
  498. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  499. package/dist/accessi-module/Controllers/SchemaController.d.ts +9 -0
  500. package/dist/accessi-module/Controllers/SchemaController.js +79 -0
  501. package/dist/accessi-module/Controllers/SchemaController.js.map +1 -0
  502. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  503. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  504. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  505. package/dist/accessi-module/Controllers/UserController.d.ts +22 -5
  506. package/dist/accessi-module/Controllers/UserController.js +385 -33
  507. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  508. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  509. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  510. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  511. package/dist/accessi-module/Dtos/AdminBootstrapDtos.d.ts +26 -0
  512. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js +100 -0
  513. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +1 -0
  514. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  515. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  516. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
  517. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  518. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
  519. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
  520. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  521. package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
  522. package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
  523. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  524. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +64 -0
  525. package/dist/accessi-module/Dtos/CatalogDtos.js +322 -0
  526. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  527. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  528. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  529. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  530. package/dist/accessi-module/Dtos/ConsoleEntryDtos.d.ts +24 -0
  531. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js +77 -0
  532. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js.map +1 -0
  533. package/dist/accessi-module/Dtos/FederatedExchangeDtos.d.ts +21 -0
  534. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js +74 -0
  535. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js.map +1 -0
  536. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  537. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  538. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  539. package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
  540. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  541. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  542. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  543. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  544. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  545. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  546. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +26 -0
  547. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  548. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  549. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  550. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  551. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  552. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  553. package/dist/accessi-module/Dtos/IntrospectionDtos.d.ts +16 -0
  554. package/dist/accessi-module/Dtos/IntrospectionDtos.js +59 -0
  555. package/dist/accessi-module/Dtos/IntrospectionDtos.js.map +1 -0
  556. package/dist/accessi-module/Dtos/LoginAsDtos.d.ts +15 -0
  557. package/dist/accessi-module/Dtos/LoginAsDtos.js +68 -0
  558. package/dist/accessi-module/Dtos/LoginAsDtos.js.map +1 -0
  559. package/dist/accessi-module/Dtos/LoginRequest.d.ts +3 -1
  560. package/dist/accessi-module/Dtos/LoginRequest.js +13 -2
  561. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  562. package/dist/accessi-module/Dtos/LoginResponse.d.ts +7 -2
  563. package/dist/accessi-module/Dtos/LoginResponse.js +26 -7
  564. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  565. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  566. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  567. package/dist/accessi-module/Dtos/Permission.js +1 -0
  568. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  569. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  570. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
  571. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  572. package/dist/accessi-module/Dtos/RefreshTokenDtos.d.ts +12 -0
  573. package/dist/accessi-module/Dtos/RefreshTokenDtos.js +50 -0
  574. package/dist/accessi-module/Dtos/RefreshTokenDtos.js.map +1 -0
  575. package/dist/accessi-module/Dtos/RegisterRequest.d.ts +2 -4
  576. package/dist/accessi-module/Dtos/RegisterRequest.js +17 -27
  577. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  578. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  579. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  580. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  581. package/dist/accessi-module/Dtos/RevokeTokenRequest.d.ts +3 -0
  582. package/dist/accessi-module/Dtos/RevokeTokenRequest.js +27 -0
  583. package/dist/accessi-module/Dtos/RevokeTokenRequest.js.map +1 -0
  584. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  585. package/dist/accessi-module/Dtos/Role.js +4 -0
  586. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  587. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  588. package/dist/accessi-module/Dtos/SchemaDtos.d.ts +19 -0
  589. package/dist/accessi-module/Dtos/SchemaDtos.js +84 -0
  590. package/dist/accessi-module/Dtos/SchemaDtos.js.map +1 -0
  591. package/dist/accessi-module/Dtos/ScopeDtos.d.ts +28 -0
  592. package/dist/accessi-module/Dtos/ScopeDtos.js +103 -0
  593. package/dist/accessi-module/Dtos/ScopeDtos.js.map +1 -0
  594. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  595. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  596. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  597. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  598. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  599. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  600. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  601. package/dist/accessi-module/Dtos/SetUserPasswordRequest.d.ts +4 -0
  602. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js +32 -0
  603. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js.map +1 -0
  604. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  605. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  606. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  607. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  608. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  609. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  610. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +14 -0
  611. package/dist/accessi-module/Dtos/TwoFactorDtos.js +71 -0
  612. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  613. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  614. package/dist/accessi-module/Dtos/UserDto.d.ts +9 -4
  615. package/dist/accessi-module/Dtos/UserDto.js +37 -22
  616. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  617. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  618. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  619. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  620. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  621. package/dist/accessi-module/Dtos/index.d.ts +19 -0
  622. package/dist/accessi-module/Dtos/index.js +19 -0
  623. package/dist/accessi-module/Dtos/index.js.map +1 -1
  624. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +33 -0
  625. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +106 -0
  626. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +1 -0
  627. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +108 -5
  628. package/dist/accessi-module/Services/AuthService/AuthService.js +452 -54
  629. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  630. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  631. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  632. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  633. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  634. package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
  635. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  636. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  637. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
  638. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  639. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +107 -5
  640. package/dist/accessi-module/Services/PermissionService/PermissionService.js +788 -215
  641. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  642. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.d.ts +36 -0
  643. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js +125 -0
  644. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +1 -0
  645. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  646. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  647. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  648. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  649. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  650. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  651. package/dist/accessi-module/Services/UserService/UserService.d.ts +73 -5
  652. package/dist/accessi-module/Services/UserService/UserService.js +578 -337
  653. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  654. package/dist/accessi-module/Views/reset-password.html +229 -213
  655. package/dist/accessi-module/accessiRuntime.d.ts +45 -0
  656. package/dist/accessi-module/accessiRuntime.js +39 -0
  657. package/dist/accessi-module/accessiRuntime.js.map +1 -0
  658. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.d.ts +83 -0
  659. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js +360 -0
  660. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +1 -0
  661. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +58 -10
  662. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +508 -179
  663. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  664. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.d.ts +5 -0
  665. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +78 -0
  666. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -0
  667. package/dist/accessi-module/database-updates/accessiSchema.d.ts +67 -0
  668. package/dist/accessi-module/database-updates/accessiSchema.js +135 -0
  669. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  670. package/dist/accessi-module/database-updates/menuScopeSeed.d.ts +15 -0
  671. package/dist/accessi-module/database-updates/menuScopeSeed.js +386 -0
  672. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +1 -0
  673. package/dist/accessi-module/database-updates/menuScopeSeeder.d.ts +8 -0
  674. package/dist/accessi-module/database-updates/menuScopeSeeder.js +131 -0
  675. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +1 -0
  676. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  677. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  678. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  679. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.d.ts +1 -0
  680. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js +69 -0
  681. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  682. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +18 -53
  683. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  684. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +33 -0
  685. package/dist/accessi-module/federated-auth/FederatedAuthController.js +373 -0
  686. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  687. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.d.ts +15 -0
  688. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js +85 -0
  689. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js.map +1 -0
  690. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +102 -0
  691. package/dist/accessi-module/federated-auth/FederatedAuthService.js +472 -0
  692. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  693. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  694. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  695. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  696. package/dist/accessi-module/index.d.ts +61 -1
  697. package/dist/accessi-module/index.js +168 -22
  698. package/dist/accessi-module/index.js.map +1 -1
  699. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  700. package/dist/accessi-module/jwt/jwt.strategy.js +21 -8
  701. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  702. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  703. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  704. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  705. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  706. package/dist/accessi-module/middleware/authenticateGen.js +68 -26
  707. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  708. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  709. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +77 -0
  710. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  711. package/dist/accessi-module/security/accessControl.d.ts +48 -2
  712. package/dist/accessi-module/security/accessControl.js +84 -8
  713. package/dist/accessi-module/security/accessControl.js.map +1 -1
  714. package/dist/accessi-module/security/accessTokenRevocation.d.ts +47 -0
  715. package/dist/accessi-module/security/accessTokenRevocation.js +146 -0
  716. package/dist/accessi-module/security/accessTokenRevocation.js.map +1 -0
  717. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  718. package/dist/accessi-module/security/accessiValidation.js +41 -0
  719. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  720. package/dist/accessi-module/security/adminBootstrap.d.ts +8 -0
  721. package/dist/accessi-module/security/adminBootstrap.js +41 -0
  722. package/dist/accessi-module/security/adminBootstrap.js.map +1 -0
  723. package/dist/accessi-module/security/audit.d.ts +7 -0
  724. package/dist/accessi-module/security/audit.js +14 -0
  725. package/dist/accessi-module/security/audit.js.map +1 -0
  726. package/dist/accessi-module/security/authenticatedToken.d.ts +23 -3
  727. package/dist/accessi-module/security/authenticatedToken.js +45 -5
  728. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  729. package/dist/accessi-module/security/consoleEntry.d.ts +63 -0
  730. package/dist/accessi-module/security/consoleEntry.js +200 -0
  731. package/dist/accessi-module/security/consoleEntry.js.map +1 -0
  732. package/dist/accessi-module/security/edgeRateLimit.d.ts +33 -0
  733. package/dist/accessi-module/security/edgeRateLimit.js +81 -0
  734. package/dist/accessi-module/security/edgeRateLimit.js.map +1 -0
  735. package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
  736. package/dist/accessi-module/security/emailConfiguration.js +41 -0
  737. package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
  738. package/dist/accessi-module/security/jwks.d.ts +33 -0
  739. package/dist/accessi-module/security/jwks.js +83 -0
  740. package/dist/accessi-module/security/jwks.js.map +1 -0
  741. package/dist/accessi-module/security/jwksBootstrap.d.ts +15 -0
  742. package/dist/accessi-module/security/jwksBootstrap.js +44 -0
  743. package/dist/accessi-module/security/jwksBootstrap.js.map +1 -0
  744. package/dist/accessi-module/security/jwtTokenOptions.d.ts +22 -0
  745. package/dist/accessi-module/security/jwtTokenOptions.js +58 -0
  746. package/dist/accessi-module/security/jwtTokenOptions.js.map +1 -0
  747. package/dist/accessi-module/security/loginAs.d.ts +8 -0
  748. package/dist/accessi-module/security/loginAs.js +45 -0
  749. package/dist/accessi-module/security/loginAs.js.map +1 -0
  750. package/dist/accessi-module/security/passwordPolicy.d.ts +21 -0
  751. package/dist/accessi-module/security/passwordPolicy.js +71 -0
  752. package/dist/accessi-module/security/passwordPolicy.js.map +1 -0
  753. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  754. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  755. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  756. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +10 -8
  757. package/dist/accessi-module/security/publicAuthRateLimit.js +61 -60
  758. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  759. package/dist/accessi-module/security/rateLimitStore.d.ts +34 -0
  760. package/dist/accessi-module/security/rateLimitStore.js +145 -0
  761. package/dist/accessi-module/security/rateLimitStore.js.map +1 -0
  762. package/dist/accessi-module/security/refreshTokenRotation.d.ts +80 -0
  763. package/dist/accessi-module/security/refreshTokenRotation.js +204 -0
  764. package/dist/accessi-module/security/refreshTokenRotation.js.map +1 -0
  765. package/dist/accessi-module/security/serviceTokenGuard.d.ts +27 -0
  766. package/dist/accessi-module/security/serviceTokenGuard.js +90 -0
  767. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  768. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +9 -0
  769. package/dist/accessi-module/security/serviceTokenRateLimit.js +53 -0
  770. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  771. package/dist/accessi-module/security/sessionRevocation.d.ts +67 -0
  772. package/dist/accessi-module/security/sessionRevocation.js +170 -0
  773. package/dist/accessi-module/security/sessionRevocation.js.map +1 -0
  774. package/dist/accessi-module/security/validateOptions.d.ts +19 -0
  775. package/dist/accessi-module/security/validateOptions.js +115 -0
  776. package/dist/accessi-module/security/validateOptions.js.map +1 -0
  777. package/dist/accessi-module/startupLog.d.ts +7 -0
  778. package/dist/accessi-module/startupLog.js +29 -0
  779. package/dist/accessi-module/startupLog.js.map +1 -0
  780. package/dist/allegati-module/AllegatiModule.d.ts +11 -0
  781. package/dist/allegati-module/AllegatiModule.js +11 -1
  782. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  783. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  784. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  785. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  786. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  787. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  788. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  789. package/dist/allegati-module/Dtos/index.js.map +1 -1
  790. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  791. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  792. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  793. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  794. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  795. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  796. package/dist/allegati-module/index.js +2 -2
  797. package/dist/allegati-module/index.js.map +1 -1
  798. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  799. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  800. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  801. package/dist/angular-components/aree-disponibili/aree-disponibili.js +1336 -0
  802. package/dist/angular-components/aree-disponibili/demo.html +232 -0
  803. package/dist/autobind.d.ts +10 -3
  804. package/dist/autobind.js +24 -9
  805. package/dist/autobind.js.map +1 -1
  806. package/dist/emilsoftware-utilities-2.0.0-dev.71.tgz +0 -0
  807. package/dist/firebird-compat.d.ts +41 -0
  808. package/dist/firebird-compat.js +54 -3
  809. package/dist/firebird-compat.js.map +1 -1
  810. package/dist/index.d.ts +2 -1
  811. package/dist/index.js +2 -1
  812. package/dist/index.js.map +1 -1
  813. package/dist/initEmilsoftwareModule.d.ts +11 -1
  814. package/dist/initEmilsoftwareModule.js +64 -14
  815. package/dist/initEmilsoftwareModule.js.map +1 -1
  816. package/dist/openapi/OpenApiConfig.d.ts +68 -0
  817. package/dist/openapi/OpenApiConfig.js +157 -0
  818. package/dist/openapi/OpenApiConfig.js.map +1 -0
  819. package/dist/openapi/OpenApiMerge.d.ts +15 -0
  820. package/dist/openapi/OpenApiMerge.js +119 -0
  821. package/dist/openapi/OpenApiMerge.js.map +1 -0
  822. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  823. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  824. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  825. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  826. package/dist/scripts/generateAccessiWiki.js +131 -0
  827. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  828. package/dist/scripts/startAccessiService.d.ts +1 -0
  829. package/dist/scripts/startAccessiService.js +11 -0
  830. package/dist/scripts/startAccessiService.js.map +1 -0
  831. package/docs/accessi-openapi-fingerprint.json +192 -0
  832. package/docs/gateway-rate-limit.md +98 -0
  833. package/docs/standalone-service.md +176 -0
  834. package/integration-prompt.md +772 -0
  835. package/package.json +199 -82
  836. package/dist/swagger/SwaggerConfig.d.ts +0 -2
  837. package/dist/swagger/SwaggerConfig.js +0 -26
  838. package/dist/swagger/SwaggerConfig.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edgeRateLimit.js","sourceRoot":"","sources":["../../../src/accessi-module/security/edgeRateLimit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NextFunction, Request, Response } from 'express';\nimport { auditAccessi } from './audit';\nimport { getDefaultRateLimitStore } from './rateLimitStore';\nimport type { RateLimitStore } from './rateLimitStore';\n\n/** Opzioni del limite grossolano per IP applicato davanti alle rotte Accessi. */\nexport interface AccessiEdgeRateLimitOptions {\n /** Default: true quando l'oggetto viene configurato. */\n enabled?: boolean;\n /** Finestra del limite. Default: 60000 ms. */\n windowMs?: number;\n /** Richieste consentite per IP nella finestra. Default: 300. */\n maxAttempts?: number;\n /** Store condiviso. Default: memoria. */\n store?: RateLimitStore;\n /** Prefisso delle chiavi. Default: `edge`. */\n keyPrefix?: string;\n /** Audit strutturato degli eventi di blocco. Default: true. */\n audit?: boolean;\n /**\n * Decide se applicare il limite alla richiesta.\n *\n * Default: `/api` e `/api/*`. Il bootstrap Accessi passa un matcher che include\n * anche OpenAPI e JWKS.\n */\n match?: (path: string, req: Request) => boolean;\n}\n\nexport type AccessiEdgeRateLimitMiddleware = (\n req: Request,\n res: Response,\n next: NextFunction,\n) => Promise<void>;\n\nconst DEFAULT_WINDOW_MS = 60_000;\nconst DEFAULT_MAX_ATTEMPTS = 300;\n\nfunction defaultMatch(path: string): boolean {\n return path === '/api' || path.startsWith('/api/');\n}\n\n/**\n * Middleware edge per Accessi Service.\n *\n * Non sostituisce il rate limit applicativo per account: aggiunge una soglia\n * grossolana per IP, utile contro bot e floods prima che la richiesta raggiunga\n * controller, database o introspection.\n */\nexport function createAccessiEdgeRateLimitMiddleware(\n options: AccessiEdgeRateLimitOptions = {},\n): AccessiEdgeRateLimitMiddleware | undefined {\n if (options.enabled === false) return undefined;\n\n const windowMs = Math.max(1, Math.trunc(options.windowMs ?? DEFAULT_WINDOW_MS));\n const maxAttempts = Math.max(1, Math.trunc(options.maxAttempts ?? DEFAULT_MAX_ATTEMPTS));\n const store = options.store ?? getDefaultRateLimitStore();\n const keyPrefix = (options.keyPrefix ?? 'edge').replace(/\\|+$/, '');\n const match = options.match ?? defaultMatch;\n\n return async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n if (!match(req.path, req)) {\n next();\n return;\n }\n\n const ip = req.ip ?? req.socket?.remoteAddress ?? 'unknown';\n try {\n const decision = await store.consume(\n `${keyPrefix}|ip|${ip}`,\n windowMs,\n maxAttempts,\n );\n if (!decision.allowed) {\n if (options.audit !== false) {\n auditAccessi('edge_rate_limited', {\n ip,\n path: req.path,\n retryAfterSeconds: decision.retryAfterSeconds,\n });\n }\n res.setHeader('Retry-After', String(decision.retryAfterSeconds));\n res.status(429).json({\n severity: 'error',\n status: 429,\n statusCode: 2,\n code: 'ACCESSI_EDGE_RATE_LIMITED',\n error: 'ACCESSI_EDGE_RATE_LIMITED',\n message: 'Troppe richieste. Riprova piu tardi.',\n });\n return;\n }\n next();\n } catch {\n if (options.audit !== false) {\n auditAccessi('rate_limit_unavailable', { ip, path: req.path });\n }\n res.status(503).json({\n severity: 'error',\n status: 503,\n statusCode: 2,\n code: 'ACCESSI_RATE_LIMIT_UNAVAILABLE',\n error: 'ACCESSI_RATE_LIMIT_UNAVAILABLE',\n message: 'Rate limit non disponibile. Riprova piu tardi.',\n });\n }\n };\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { BadRequestException } from '@nestjs/common';
2
+ import type { AccessiOptions } from '../AccessiModule';
3
+ /** Codice stabile usato nel contratto errore quando manca la configurazione email. */
4
+ export declare const ACCESSI_EMAIL_NOT_CONFIGURED = "ACCESSI_EMAIL_NOT_CONFIGURED";
5
+ /**
6
+ * Errore sollevato quando un'operazione richiede l'invio di email (reset password, 2FA,
7
+ * creazione utente) ma `AccessiOptions.emailOptions` non e configurato. E' una BadRequestException
8
+ * con un `code` stabile, cosi il contratto HTTP risponde 400 con ACCESSI_EMAIL_NOT_CONFIGURED.
9
+ */
10
+ export declare class AccessiEmailNotConfiguredError extends BadRequestException {
11
+ get code(): string;
12
+ constructor(message?: string);
13
+ }
14
+ /**
15
+ * True se `emailOptions` contiene i campi minimi per inviare posta (host SMTP e mittente).
16
+ * Non verifica la raggiungibilita del server: quella si scopre all'invio.
17
+ */
18
+ export declare function isEmailConfigured(options: AccessiOptions): boolean;
19
+ /** Fail-fast utilizzato dal bootstrap e dalle operazioni che dipendono dalla posta. */
20
+ export declare function assertEmailConfigured(options: AccessiOptions): void;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccessiEmailNotConfiguredError = exports.ACCESSI_EMAIL_NOT_CONFIGURED = void 0;
4
+ exports.isEmailConfigured = isEmailConfigured;
5
+ exports.assertEmailConfigured = assertEmailConfigured;
6
+ const common_1 = require("@nestjs/common");
7
+ /** Codice stabile usato nel contratto errore quando manca la configurazione email. */
8
+ exports.ACCESSI_EMAIL_NOT_CONFIGURED = 'ACCESSI_EMAIL_NOT_CONFIGURED';
9
+ /**
10
+ * Errore sollevato quando un'operazione richiede l'invio di email (reset password, 2FA,
11
+ * creazione utente) ma `AccessiOptions.emailOptions` non e configurato. E' una BadRequestException
12
+ * con un `code` stabile, cosi il contratto HTTP risponde 400 con ACCESSI_EMAIL_NOT_CONFIGURED.
13
+ */
14
+ class AccessiEmailNotConfiguredError extends common_1.BadRequestException {
15
+ get code() {
16
+ return exports.ACCESSI_EMAIL_NOT_CONFIGURED;
17
+ }
18
+ constructor(message = 'Nessun servizio email configurato (AccessiOptions.emailOptions): impossibile inviare email di reset password o 2FA.') {
19
+ super({ code: exports.ACCESSI_EMAIL_NOT_CONFIGURED, message });
20
+ this.name = 'AccessiEmailNotConfiguredError';
21
+ }
22
+ }
23
+ exports.AccessiEmailNotConfiguredError = AccessiEmailNotConfiguredError;
24
+ /**
25
+ * True se `emailOptions` contiene i campi minimi per inviare posta (host SMTP e mittente).
26
+ * Non verifica la raggiungibilita del server: quella si scopre all'invio.
27
+ */
28
+ function isEmailConfigured(options) {
29
+ const email = options === null || options === void 0 ? void 0 : options.emailOptions;
30
+ if (!email)
31
+ return false;
32
+ return typeof email.host === 'string' && email.host.trim() !== ''
33
+ && typeof email.from === 'string' && email.from.trim() !== '';
34
+ }
35
+ /** Fail-fast utilizzato dal bootstrap e dalle operazioni che dipendono dalla posta. */
36
+ function assertEmailConfigured(options) {
37
+ if (!isEmailConfigured(options)) {
38
+ throw new AccessiEmailNotConfiguredError();
39
+ }
40
+ }
41
+ //# sourceMappingURL=emailConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailConfiguration.js","sourceRoot":"","sources":["../../../src/accessi-module/security/emailConfiguration.ts"],"names":[],"mappings":";;;AA0BA,8CAKC;AAGD,sDAIC;AAtCD,2CAAqD;AAGrD,sFAAsF;AACzE,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAE3E;;;;GAIG;AACH,MAAa,8BAA+B,SAAQ,4BAAmB;IACrE,IAAW,IAAI;QACb,OAAO,oCAA4B,CAAC;IACtC,CAAC;IAED,YAAY,OAAO,GAAG,qHAAqH;QACzI,KAAK,CAAC,EAAE,IAAI,EAAE,oCAA4B,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AATD,wEASC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,OAAuB;IACvD,MAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAA8D,CAAC;IACtF,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;WAC5D,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAClE,CAAC;AAED,uFAAuF;AACvF,SAAgB,qBAAqB,CAAC,OAAuB;IAC3D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,8BAA8B,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC","sourcesContent":["import { BadRequestException } from '@nestjs/common';\nimport type { AccessiOptions } from '../AccessiModule';\n\n/** Codice stabile usato nel contratto errore quando manca la configurazione email. */\nexport const ACCESSI_EMAIL_NOT_CONFIGURED = 'ACCESSI_EMAIL_NOT_CONFIGURED';\n\n/**\n * Errore sollevato quando un'operazione richiede l'invio di email (reset password, 2FA,\n * creazione utente) ma `AccessiOptions.emailOptions` non e configurato. E' una BadRequestException\n * con un `code` stabile, cosi il contratto HTTP risponde 400 con ACCESSI_EMAIL_NOT_CONFIGURED.\n */\nexport class AccessiEmailNotConfiguredError extends BadRequestException {\n public get code(): string {\n return ACCESSI_EMAIL_NOT_CONFIGURED;\n }\n\n constructor(message = 'Nessun servizio email configurato (AccessiOptions.emailOptions): impossibile inviare email di reset password o 2FA.') {\n super({ code: ACCESSI_EMAIL_NOT_CONFIGURED, message });\n this.name = 'AccessiEmailNotConfiguredError';\n }\n}\n\n/**\n * True se `emailOptions` contiene i campi minimi per inviare posta (host SMTP e mittente).\n * Non verifica la raggiungibilita del server: quella si scopre all'invio.\n */\nexport function isEmailConfigured(options: AccessiOptions): boolean {\n const email = options?.emailOptions as { host?: unknown; from?: unknown } | undefined;\n if (!email) return false;\n return typeof email.host === 'string' && email.host.trim() !== ''\n && typeof email.from === 'string' && email.from.trim() !== '';\n}\n\n/** Fail-fast utilizzato dal bootstrap e dalle operazioni che dipendono dalla posta. */\nexport function assertEmailConfigured(options: AccessiOptions): void {\n if (!isEmailConfigured(options)) {\n throw new AccessiEmailNotConfiguredError();\n }\n}\n"]}
@@ -0,0 +1,33 @@
1
+ import type { JsonWebKey } from "crypto";
2
+ import type { Request, Response } from "express";
3
+ import type { AccessiOptions } from "../AccessiModule";
4
+ /** Chiave pubblica in formato JWK, pronta per una risposta JWKS. */
5
+ export type AccessiJwksKey = JsonWebKey & {
6
+ kid: string;
7
+ alg: string;
8
+ use: "sig";
9
+ };
10
+ export interface AccessiJwksDocument {
11
+ keys: AccessiJwksKey[];
12
+ }
13
+ /** Path pubblico della JWKS, oppure `undefined` quando si usa HS256. */
14
+ export declare function getAccessiJwksPath(options: AccessiOptions): string | undefined;
15
+ /**
16
+ * Costruisce la JWKS pubblica con chiave corrente e chiavi precedenti.
17
+ *
18
+ * Restituisce `null` per HS256 o quando non e configurata una chiave
19
+ * pubblica/privata asimmetrica.
20
+ */
21
+ export declare function buildAccessiJwks(options: AccessiOptions): AccessiJwksDocument | null;
22
+ /** Handler Express per la JWKS. Risponde 404 se la configurazione e HS256. */
23
+ export declare function createAccessiJwksHandler(options: AccessiOptions): (req: Request, res: Response) => Response | void;
24
+ /**
25
+ * Monta la route JWKS sull'Express host.
26
+ *
27
+ * Per un'app Nest esistente passare `app.getHttpAdapter().getInstance()`.
28
+ * Restituisce il path montato, oppure `undefined` se HS256.
29
+ */
30
+ export interface AccessiJwksExpressApp {
31
+ get(path: string, handler: (req: Request, res: Response) => unknown): unknown;
32
+ }
33
+ export declare function setupAccessiJwks(app: AccessiJwksExpressApp, options: AccessiOptions): string | undefined;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAccessiJwksPath = getAccessiJwksPath;
4
+ exports.buildAccessiJwks = buildAccessiJwks;
5
+ exports.createAccessiJwksHandler = createAccessiJwksHandler;
6
+ exports.setupAccessiJwks = setupAccessiJwks;
7
+ const crypto_1 = require("crypto");
8
+ const DEFAULT_JWKS_PATH = "accessi/.well-known/jwks.json";
9
+ function normalizePath(value) {
10
+ return `/${value.replace(/^\/+|\/+$/g, "")}`;
11
+ }
12
+ function fingerprintPublicKey(publicKey) {
13
+ const der = (0, crypto_1.createPublicKey)(publicKey).export({ type: "spki", format: "der" });
14
+ return (0, crypto_1.createHash)("sha256").update(der).digest("base64url").slice(0, 16);
15
+ }
16
+ function toJwksKey(publicKey, keyId, algorithm) {
17
+ const jwk = (0, crypto_1.createPublicKey)(publicKey).export({ format: "jwk" });
18
+ return Object.assign(Object.assign({}, jwk), { kid: keyId !== null && keyId !== void 0 ? keyId : fingerprintPublicKey(publicKey), alg: algorithm, use: "sig" });
19
+ }
20
+ /** Path pubblico della JWKS, oppure `undefined` quando si usa HS256. */
21
+ function getAccessiJwksPath(options) {
22
+ var _a, _b;
23
+ const algorithm = (_a = options.jwtOptions.algorithm) !== null && _a !== void 0 ? _a : "HS256";
24
+ if (algorithm.startsWith("HS"))
25
+ return undefined;
26
+ return normalizePath((_b = options.jwtOptions.jwksPath) !== null && _b !== void 0 ? _b : DEFAULT_JWKS_PATH);
27
+ }
28
+ /**
29
+ * Costruisce la JWKS pubblica con chiave corrente e chiavi precedenti.
30
+ *
31
+ * Restituisce `null` per HS256 o quando non e configurata una chiave
32
+ * pubblica/privata asimmetrica.
33
+ */
34
+ function buildAccessiJwks(options) {
35
+ var _a, _b, _c, _d;
36
+ const algorithm = (_a = options.jwtOptions.algorithm) !== null && _a !== void 0 ? _a : "HS256";
37
+ if (algorithm.startsWith("HS"))
38
+ return null;
39
+ const currentPublicKey = (_b = options.jwtOptions.publicKey) !== null && _b !== void 0 ? _b : options.jwtOptions.privateKey;
40
+ if (!currentPublicKey)
41
+ return null;
42
+ const keys = [
43
+ toJwksKey(currentPublicKey, options.jwtOptions.keyId, algorithm),
44
+ ];
45
+ for (const previous of (_c = options.jwtOptions.previousPublicKeys) !== null && _c !== void 0 ? _c : []) {
46
+ const previousAlgorithm = (_d = previous.algorithm) !== null && _d !== void 0 ? _d : algorithm;
47
+ keys.push(toJwksKey(previous.publicKey, previous.keyId, previousAlgorithm));
48
+ }
49
+ // Deduplica per kid: la chiave corrente vince sulle precedenti.
50
+ const unique = new Map();
51
+ for (const key of keys) {
52
+ if (!unique.has(key.kid))
53
+ unique.set(key.kid, key);
54
+ }
55
+ return { keys: [...unique.values()] };
56
+ }
57
+ /** Handler Express per la JWKS. Risponde 404 se la configurazione e HS256. */
58
+ function createAccessiJwksHandler(options) {
59
+ return (_req, res) => {
60
+ const document = buildAccessiJwks(options);
61
+ if (!document) {
62
+ return res.status(404).json({
63
+ severity: "error",
64
+ status: 404,
65
+ statusCode: 2,
66
+ code: "ACCESSI_JWKS_NOT_AVAILABLE",
67
+ error: "ACCESSI_JWKS_NOT_AVAILABLE",
68
+ message: "JWKS non disponibile: Accessi usa HS256 o non ha una chiave asimmetrica.",
69
+ });
70
+ }
71
+ res.setHeader("Content-Type", "application/json");
72
+ res.setHeader("Cache-Control", "public, max-age=300");
73
+ return res.status(200).send(document);
74
+ };
75
+ }
76
+ function setupAccessiJwks(app, options) {
77
+ const path = getAccessiJwksPath(options);
78
+ if (!path)
79
+ return undefined;
80
+ app.get(path, createAccessiJwksHandler(options));
81
+ return path;
82
+ }
83
+ //# sourceMappingURL=jwks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwks.js","sourceRoot":"","sources":["../../../src/accessi-module/security/jwks.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, createPublicKey } from \"crypto\";\nimport type { JsonWebKey } from \"crypto\";\nimport type { Request, Response } from \"express\";\nimport type { AccessiOptions } from \"../AccessiModule\";\n\n/** Chiave pubblica in formato JWK, pronta per una risposta JWKS. */\nexport type AccessiJwksKey = JsonWebKey & {\n kid: string;\n alg: string;\n use: \"sig\";\n};\n\nexport interface AccessiJwksDocument {\n keys: AccessiJwksKey[];\n}\n\nconst DEFAULT_JWKS_PATH = \"accessi/.well-known/jwks.json\";\n\nfunction normalizePath(value: string): string {\n return `/${value.replace(/^\\/+|\\/+$/g, \"\")}`;\n}\n\nfunction fingerprintPublicKey(publicKey: string | Buffer): string {\n const der = createPublicKey(publicKey).export({ type: \"spki\", format: \"der\" });\n return createHash(\"sha256\").update(der).digest(\"base64url\").slice(0, 16);\n}\n\nfunction toJwksKey(\n publicKey: string | Buffer,\n keyId: string | undefined,\n algorithm: string,\n): AccessiJwksKey {\n const jwk = createPublicKey(publicKey).export({ format: \"jwk\" }) as JsonWebKey;\n return {\n ...jwk,\n kid: keyId ?? fingerprintPublicKey(publicKey),\n alg: algorithm,\n use: \"sig\",\n };\n}\n\n/** Path pubblico della JWKS, oppure `undefined` quando si usa HS256. */\nexport function getAccessiJwksPath(options: AccessiOptions): string | undefined {\n const algorithm = options.jwtOptions.algorithm ?? \"HS256\";\n if (algorithm.startsWith(\"HS\")) return undefined;\n return normalizePath(options.jwtOptions.jwksPath ?? DEFAULT_JWKS_PATH);\n}\n\n/**\n * Costruisce la JWKS pubblica con chiave corrente e chiavi precedenti.\n *\n * Restituisce `null` per HS256 o quando non e configurata una chiave\n * pubblica/privata asimmetrica.\n */\nexport function buildAccessiJwks(options: AccessiOptions): AccessiJwksDocument | null {\n const algorithm = options.jwtOptions.algorithm ?? \"HS256\";\n if (algorithm.startsWith(\"HS\")) return null;\n\n const currentPublicKey = options.jwtOptions.publicKey ?? options.jwtOptions.privateKey;\n if (!currentPublicKey) return null;\n\n const keys: AccessiJwksKey[] = [\n toJwksKey(currentPublicKey, options.jwtOptions.keyId, algorithm),\n ];\n\n for (const previous of options.jwtOptions.previousPublicKeys ?? []) {\n const previousAlgorithm = previous.algorithm ?? algorithm;\n keys.push(toJwksKey(previous.publicKey, previous.keyId, previousAlgorithm));\n }\n\n // Deduplica per kid: la chiave corrente vince sulle precedenti.\n const unique = new Map<string, AccessiJwksKey>();\n for (const key of keys) {\n if (!unique.has(key.kid)) unique.set(key.kid, key);\n }\n\n return { keys: [...unique.values()] };\n}\n\n/** Handler Express per la JWKS. Risponde 404 se la configurazione e HS256. */\nexport function createAccessiJwksHandler(\n options: AccessiOptions,\n): (req: Request, res: Response) => Response | void {\n return (_req: Request, res: Response): Response | void => {\n const document = buildAccessiJwks(options);\n if (!document) {\n return res.status(404).json({\n severity: \"error\",\n status: 404,\n statusCode: 2,\n code: \"ACCESSI_JWKS_NOT_AVAILABLE\",\n error: \"ACCESSI_JWKS_NOT_AVAILABLE\",\n message: \"JWKS non disponibile: Accessi usa HS256 o non ha una chiave asimmetrica.\",\n });\n }\n\n res.setHeader(\"Content-Type\", \"application/json\");\n res.setHeader(\"Cache-Control\", \"public, max-age=300\");\n return res.status(200).send(document);\n };\n}\n\n/**\n * Monta la route JWKS sull'Express host.\n *\n * Per un'app Nest esistente passare `app.getHttpAdapter().getInstance()`.\n * Restituisce il path montato, oppure `undefined` se HS256.\n */\nexport interface AccessiJwksExpressApp {\n get(path: string, handler: (req: Request, res: Response) => unknown): unknown;\n}\n\nexport function setupAccessiJwks(\n app: AccessiJwksExpressApp,\n options: AccessiOptions,\n): string | undefined {\n const path = getAccessiJwksPath(options);\n if (!path) return undefined;\n app.get(path, createAccessiJwksHandler(options));\n return path;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { HttpAdapterHost } from '@nestjs/core';
3
+ import type { AccessiOptions } from '../AccessiModule';
4
+ /**
5
+ * Monta automaticamente la JWKS sull'Express adapter di Nest.
6
+ *
7
+ * Serve sia ai bootstrap standalone sia a `AccessiModule.forRoot` in un'app
8
+ * Nest ospitante, senza richiedere una chiamata manuale a `setupAccessiJwks`.
9
+ */
10
+ export declare class AccessiJwksBootstrapService implements OnModuleInit {
11
+ private readonly options;
12
+ private readonly adapterHost;
13
+ constructor(options: AccessiOptions, adapterHost: HttpAdapterHost);
14
+ onModuleInit(): void;
15
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AccessiJwksBootstrapService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const core_1 = require("@nestjs/core");
18
+ const jwks_1 = require("./jwks");
19
+ /**
20
+ * Monta automaticamente la JWKS sull'Express adapter di Nest.
21
+ *
22
+ * Serve sia ai bootstrap standalone sia a `AccessiModule.forRoot` in un'app
23
+ * Nest ospitante, senza richiedere una chiamata manuale a `setupAccessiJwks`.
24
+ */
25
+ let AccessiJwksBootstrapService = class AccessiJwksBootstrapService {
26
+ constructor(options, adapterHost) {
27
+ this.options = options;
28
+ this.adapterHost = adapterHost;
29
+ }
30
+ onModuleInit() {
31
+ var _a, _b;
32
+ const instance = (_b = (_a = this.adapterHost.httpAdapter) === null || _a === void 0 ? void 0 : _a.getInstance) === null || _b === void 0 ? void 0 : _b.call(_a);
33
+ if (instance && typeof instance.get === 'function') {
34
+ (0, jwks_1.setupAccessiJwks)(instance, this.options);
35
+ }
36
+ }
37
+ };
38
+ exports.AccessiJwksBootstrapService = AccessiJwksBootstrapService;
39
+ exports.AccessiJwksBootstrapService = AccessiJwksBootstrapService = __decorate([
40
+ (0, common_1.Injectable)(),
41
+ __param(0, (0, common_1.Inject)('ACCESSI_OPTIONS')),
42
+ __metadata("design:paramtypes", [Object, core_1.HttpAdapterHost])
43
+ ], AccessiJwksBootstrapService);
44
+ //# sourceMappingURL=jwksBootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwksBootstrap.js","sourceRoot":"","sources":["../../../src/accessi-module/security/jwksBootstrap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,uCAA+C;AAE/C,iCAA0C;AAG1C;;;;;GAKG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YAC8C,OAAuB,EAClD,WAA4B;QADD,YAAO,GAAP,OAAO,CAAgB;QAClD,gBAAW,GAAX,WAAW,CAAiB;IAC5C,CAAC;IAEJ,YAAY;;QACV,MAAM,QAAQ,GAAY,MAAA,MAAA,IAAI,CAAC,WAAW,CAAC,WAAW,0CAAE,WAAW,kDAAI,CAAC;QACxE,IAAI,QAAQ,IAAI,OAAQ,QAAkC,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9E,IAAA,uBAAgB,EAAC,QAAiC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;CACF,CAAA;AAZY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,iBAAiB,CAAC,CAAA;6CACI,sBAAe;GAHpC,2BAA2B,CAYvC","sourcesContent":["import { Inject, Injectable, OnModuleInit } from '@nestjs/common';\nimport { HttpAdapterHost } from '@nestjs/core';\nimport type { AccessiOptions } from '../AccessiModule';\nimport { setupAccessiJwks } from './jwks';\nimport type { AccessiJwksExpressApp } from './jwks';\n\n/**\n * Monta automaticamente la JWKS sull'Express adapter di Nest.\n *\n * Serve sia ai bootstrap standalone sia a `AccessiModule.forRoot` in un'app\n * Nest ospitante, senza richiedere una chiamata manuale a `setupAccessiJwks`.\n */\n@Injectable()\nexport class AccessiJwksBootstrapService implements OnModuleInit {\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly options: AccessiOptions,\n private readonly adapterHost: HttpAdapterHost,\n ) {}\n\n onModuleInit(): void {\n const instance: unknown = this.adapterHost.httpAdapter?.getInstance?.();\n if (instance && typeof (instance as AccessiJwksExpressApp).get === 'function') {\n setupAccessiJwks(instance as AccessiJwksExpressApp, this.options);\n }\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import type * as jwt from "jsonwebtoken";
2
+ import type { AccessiOptions } from "../AccessiModule";
3
+ /** Algoritmi supportati per gli access token Accessi. */
4
+ export type AccessiAccessTokenAlgorithm = "HS256" | "HS384" | "HS512" | "RS256" | "RS384" | "RS512" | "ES256" | "ES384" | "ES512";
5
+ export declare function getAccessiAccessTokenSigningConfig(options: AccessiOptions): {
6
+ key: jwt.Secret;
7
+ algorithm: AccessiAccessTokenAlgorithm;
8
+ signOptions: Pick<jwt.SignOptions, "issuer" | "audience" | "keyid">;
9
+ };
10
+ export declare function getAccessiAccessTokenVerificationConfig(options: AccessiOptions): {
11
+ key: jwt.Secret;
12
+ verifyOptions: jwt.VerifyOptions;
13
+ };
14
+ export declare function getAccessiRefreshTokenSigningConfig(options: AccessiOptions): {
15
+ key: jwt.Secret;
16
+ algorithm: AccessiAccessTokenAlgorithm;
17
+ signOptions: Pick<jwt.SignOptions, "issuer" | "audience" | "keyid">;
18
+ };
19
+ export declare function getAccessiRefreshTokenVerificationConfig(options: AccessiOptions): {
20
+ key: jwt.Secret;
21
+ verifyOptions: jwt.VerifyOptions;
22
+ };
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAccessiAccessTokenSigningConfig = getAccessiAccessTokenSigningConfig;
4
+ exports.getAccessiAccessTokenVerificationConfig = getAccessiAccessTokenVerificationConfig;
5
+ exports.getAccessiRefreshTokenSigningConfig = getAccessiRefreshTokenSigningConfig;
6
+ exports.getAccessiRefreshTokenVerificationConfig = getAccessiRefreshTokenVerificationConfig;
7
+ const passwordResetToken_1 = require("./passwordResetToken");
8
+ function resolveAlgorithm(options) {
9
+ var _a;
10
+ return (_a = options.jwtOptions.algorithm) !== null && _a !== void 0 ? _a : "HS256";
11
+ }
12
+ /** Configurazione di firma: chiave, algoritmo e claim standard. */
13
+ function getTokenSigningConfig(options, purpose) {
14
+ const algorithm = resolveAlgorithm(options);
15
+ const key = algorithm.startsWith("HS")
16
+ ? (0, passwordResetToken_1.getAccessiJwtSecret)(options, purpose)
17
+ : options.jwtOptions.privateKey;
18
+ if (!key) {
19
+ throw new Error(`jwtOptions.privateKey e obbligatoria per l'algoritmo ${algorithm}.`);
20
+ }
21
+ return {
22
+ key,
23
+ algorithm,
24
+ signOptions: Object.assign(Object.assign(Object.assign({}, (options.jwtOptions.issuer ? { issuer: options.jwtOptions.issuer } : {})), (options.jwtOptions.audience
25
+ ? { audience: options.jwtOptions.audience }
26
+ : {})), (options.jwtOptions.keyId ? { keyid: options.jwtOptions.keyId } : {})),
27
+ };
28
+ }
29
+ /** Configurazione di verifica: chiave pubblica per RS/ES, segreto derivato per HS. */
30
+ function getTokenVerificationConfig(options, purpose) {
31
+ var _a;
32
+ const algorithm = resolveAlgorithm(options);
33
+ const key = algorithm.startsWith("HS")
34
+ ? (0, passwordResetToken_1.getAccessiJwtSecret)(options, purpose)
35
+ : ((_a = options.jwtOptions.publicKey) !== null && _a !== void 0 ? _a : options.jwtOptions.privateKey);
36
+ if (!key) {
37
+ throw new Error(`jwtOptions.publicKey e obbligatoria per verificare token ${algorithm}.`);
38
+ }
39
+ return {
40
+ key,
41
+ verifyOptions: Object.assign(Object.assign({ algorithms: [algorithm] }, (options.jwtOptions.issuer ? { issuer: options.jwtOptions.issuer } : {})), (options.jwtOptions.audience
42
+ ? { audience: options.jwtOptions.audience }
43
+ : {})),
44
+ };
45
+ }
46
+ function getAccessiAccessTokenSigningConfig(options) {
47
+ return getTokenSigningConfig(options, "access");
48
+ }
49
+ function getAccessiAccessTokenVerificationConfig(options) {
50
+ return getTokenVerificationConfig(options, "access");
51
+ }
52
+ function getAccessiRefreshTokenSigningConfig(options) {
53
+ return getTokenSigningConfig(options, "refresh");
54
+ }
55
+ function getAccessiRefreshTokenVerificationConfig(options) {
56
+ return getTokenVerificationConfig(options, "refresh");
57
+ }
58
+ //# sourceMappingURL=jwtTokenOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtTokenOptions.js","sourceRoot":"","sources":["../../../src/accessi-module/security/jwtTokenOptions.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as jwt from \"jsonwebtoken\";\nimport type { AccessiOptions } from \"../AccessiModule\";\nimport { getAccessiJwtSecret } from \"./passwordResetToken\";\nimport type { AccessiJwtPurpose } from \"./passwordResetToken\";\n\n/** Algoritmi supportati per gli access token Accessi. */\nexport type AccessiAccessTokenAlgorithm =\n | \"HS256\"\n | \"HS384\"\n | \"HS512\"\n | \"RS256\"\n | \"RS384\"\n | \"RS512\"\n | \"ES256\"\n | \"ES384\"\n | \"ES512\";\n\nfunction resolveAlgorithm(options: AccessiOptions): AccessiAccessTokenAlgorithm {\n return options.jwtOptions.algorithm ?? \"HS256\";\n}\n\n/** Configurazione di firma: chiave, algoritmo e claim standard. */\nfunction getTokenSigningConfig(\n options: AccessiOptions,\n purpose: AccessiJwtPurpose,\n): {\n key: jwt.Secret;\n algorithm: AccessiAccessTokenAlgorithm;\n signOptions: Pick<jwt.SignOptions, \"issuer\" | \"audience\" | \"keyid\">;\n} {\n const algorithm = resolveAlgorithm(options);\n const key = algorithm.startsWith(\"HS\")\n ? getAccessiJwtSecret(options, purpose)\n : options.jwtOptions.privateKey;\n\n if (!key) {\n throw new Error(`jwtOptions.privateKey e obbligatoria per l'algoritmo ${algorithm}.`);\n }\n\n return {\n key,\n algorithm,\n signOptions: {\n ...(options.jwtOptions.issuer ? { issuer: options.jwtOptions.issuer } : {}),\n ...(options.jwtOptions.audience\n ? { audience: options.jwtOptions.audience as jwt.SignOptions[\"audience\"] }\n : {}),\n ...(options.jwtOptions.keyId ? { keyid: options.jwtOptions.keyId } : {}),\n },\n };\n}\n\n/** Configurazione di verifica: chiave pubblica per RS/ES, segreto derivato per HS. */\nfunction getTokenVerificationConfig(\n options: AccessiOptions,\n purpose: AccessiJwtPurpose,\n): {\n key: jwt.Secret;\n verifyOptions: jwt.VerifyOptions;\n} {\n const algorithm = resolveAlgorithm(options);\n const key = algorithm.startsWith(\"HS\")\n ? getAccessiJwtSecret(options, purpose)\n : (options.jwtOptions.publicKey ?? options.jwtOptions.privateKey);\n\n if (!key) {\n throw new Error(\n `jwtOptions.publicKey e obbligatoria per verificare token ${algorithm}.`,\n );\n }\n\n return {\n key,\n verifyOptions: {\n algorithms: [algorithm],\n ...(options.jwtOptions.issuer ? { issuer: options.jwtOptions.issuer } : {}),\n ...(options.jwtOptions.audience\n ? { audience: options.jwtOptions.audience as jwt.VerifyOptions[\"audience\"] }\n : {}),\n },\n };\n}\n\nexport function getAccessiAccessTokenSigningConfig(options: AccessiOptions) {\n return getTokenSigningConfig(options, \"access\");\n}\n\nexport function getAccessiAccessTokenVerificationConfig(options: AccessiOptions) {\n return getTokenVerificationConfig(options, \"access\");\n}\n\nexport function getAccessiRefreshTokenSigningConfig(options: AccessiOptions) {\n return getTokenSigningConfig(options, \"refresh\");\n}\n\nexport function getAccessiRefreshTokenVerificationConfig(options: AccessiOptions) {\n return getTokenVerificationConfig(options, \"refresh\");\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /** Nome del query parameter usato dalle applicazioni per consumare il token. */
2
+ export declare const LOGIN_AS_QUERY_PARAM = "loginAsToken";
3
+ /**
4
+ * Combina l'URL dell'applicazione con il token di accesso temporaneo.
5
+ * Accetta solo URL assoluti http/https: evita schemi come javascript: o data:
6
+ * che verrebbero restituiti alla console come link cliccabile.
7
+ */
8
+ export declare function buildLoginAsUrl(targetUrl: string, token: string): string;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOGIN_AS_QUERY_PARAM = void 0;
4
+ exports.buildLoginAsUrl = buildLoginAsUrl;
5
+ const common_1 = require("@nestjs/common");
6
+ /** Nome del query parameter usato dalle applicazioni per consumare il token. */
7
+ exports.LOGIN_AS_QUERY_PARAM = 'loginAsToken';
8
+ /**
9
+ * Combina l'URL dell'applicazione con il token di accesso temporaneo.
10
+ * Accetta solo URL assoluti http/https: evita schemi come javascript: o data:
11
+ * che verrebbero restituiti alla console come link cliccabile.
12
+ */
13
+ function buildLoginAsUrl(targetUrl, token) {
14
+ if (typeof targetUrl !== 'string' || targetUrl.trim() === '') {
15
+ throw new common_1.BadRequestException({
16
+ code: 'ACCESSI_LOGIN_AS_INVALID_URL',
17
+ message: 'Indica l URL dell applicazione a cui accedere.',
18
+ });
19
+ }
20
+ if (typeof token !== 'string' || token.trim() === '') {
21
+ throw new common_1.BadRequestException({
22
+ code: 'ACCESSI_LOGIN_AS_INVALID_TOKEN',
23
+ message: 'Token di accesso temporaneo non valido.',
24
+ });
25
+ }
26
+ let parsed;
27
+ try {
28
+ parsed = new URL(targetUrl.trim());
29
+ }
30
+ catch (_a) {
31
+ throw new common_1.BadRequestException({
32
+ code: 'ACCESSI_LOGIN_AS_INVALID_URL',
33
+ message: 'L URL deve essere assoluto e valido, per esempio https://app.example.com.',
34
+ });
35
+ }
36
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
37
+ throw new common_1.BadRequestException({
38
+ code: 'ACCESSI_LOGIN_AS_INVALID_URL',
39
+ message: 'L URL deve usare http o https.',
40
+ });
41
+ }
42
+ parsed.searchParams.set(exports.LOGIN_AS_QUERY_PARAM, token);
43
+ return parsed.toString();
44
+ }
45
+ //# sourceMappingURL=loginAs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loginAs.js","sourceRoot":"","sources":["../../../src/accessi-module/security/loginAs.ts"],"names":[],"mappings":";;;AAUA,0CAiCC;AA3CD,2CAAqD;AAErD,gFAAgF;AACnE,QAAA,oBAAoB,GAAG,cAAc,CAAC;AAEnD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,SAAiB,EAAE,KAAa;IAC9D,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,4BAAmB,CAAC;YAC5B,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,gDAAgD;SAC1D,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,4BAAmB,CAAC;YAC5B,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,yCAAyC;SACnD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAI,4BAAmB,CAAC;YAC5B,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,2EAA2E;SACrF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,4BAAmB,CAAC;YAC5B,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,gCAAgC;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,4BAAoB,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC","sourcesContent":["import { BadRequestException } from '@nestjs/common';\n\n/** Nome del query parameter usato dalle applicazioni per consumare il token. */\nexport const LOGIN_AS_QUERY_PARAM = 'loginAsToken';\n\n/**\n * Combina l'URL dell'applicazione con il token di accesso temporaneo.\n * Accetta solo URL assoluti http/https: evita schemi come javascript: o data:\n * che verrebbero restituiti alla console come link cliccabile.\n */\nexport function buildLoginAsUrl(targetUrl: string, token: string): string {\n if (typeof targetUrl !== 'string' || targetUrl.trim() === '') {\n throw new BadRequestException({\n code: 'ACCESSI_LOGIN_AS_INVALID_URL',\n message: 'Indica l URL dell applicazione a cui accedere.',\n });\n }\n if (typeof token !== 'string' || token.trim() === '') {\n throw new BadRequestException({\n code: 'ACCESSI_LOGIN_AS_INVALID_TOKEN',\n message: 'Token di accesso temporaneo non valido.',\n });\n }\n\n let parsed: URL;\n try {\n parsed = new URL(targetUrl.trim());\n } catch {\n throw new BadRequestException({\n code: 'ACCESSI_LOGIN_AS_INVALID_URL',\n message: 'L URL deve essere assoluto e valido, per esempio https://app.example.com.',\n });\n }\n\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new BadRequestException({\n code: 'ACCESSI_LOGIN_AS_INVALID_URL',\n message: 'L URL deve usare http o https.',\n });\n }\n\n parsed.searchParams.set(LOGIN_AS_QUERY_PARAM, token);\n return parsed.toString();\n}\n"]}
@@ -0,0 +1,21 @@
1
+ /** Lunghezze canoniche della password Accessi. */
2
+ export declare const PASSWORD_MIN_LENGTH = 8;
3
+ export declare const PASSWORD_MAX_LENGTH = 100;
4
+ /** Codice errore stabile restituito quando la password non rispetta la policy. */
5
+ export declare const WEAK_PASSWORD_CODE = "ACCESSI_WEAK_PASSWORD";
6
+ export interface PasswordPolicyOptions {
7
+ minLength?: number;
8
+ maxLength?: number;
9
+ }
10
+ /**
11
+ * Restituisce l'elenco leggibile delle violazioni della policy password.
12
+ * Policy: lunghezza, maiuscola, minuscola, cifra, carattere speciale, nessuno
13
+ * spazio, non comune.
14
+ */
15
+ export declare function collectPasswordPolicyViolations(password: unknown, options?: PasswordPolicyOptions): string[];
16
+ /**
17
+ * Valida la password secondo la policy moderna e, se non conforme, solleva un
18
+ * `BadRequestException` con codice `ACCESSI_WEAK_PASSWORD` e l'elenco dei
19
+ * requisiti mancanti. Da usare solo quando si IMPOSTA una password, mai al login.
20
+ */
21
+ export declare function assertStrongPassword(password: unknown, options?: PasswordPolicyOptions): void;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WEAK_PASSWORD_CODE = exports.PASSWORD_MAX_LENGTH = exports.PASSWORD_MIN_LENGTH = void 0;
4
+ exports.collectPasswordPolicyViolations = collectPasswordPolicyViolations;
5
+ exports.assertStrongPassword = assertStrongPassword;
6
+ const common_1 = require("@nestjs/common");
7
+ /** Lunghezze canoniche della password Accessi. */
8
+ exports.PASSWORD_MIN_LENGTH = 8;
9
+ exports.PASSWORD_MAX_LENGTH = 100;
10
+ /** Codice errore stabile restituito quando la password non rispetta la policy. */
11
+ exports.WEAK_PASSWORD_CODE = 'ACCESSI_WEAK_PASSWORD';
12
+ /**
13
+ * Password comuni o banalmente prevedibili rifiutate anche se rispettano la
14
+ * complessita. Confronto case-insensitive; elenco volutamente piccolo e senza
15
+ * dipendenze esterne.
16
+ */
17
+ const COMMON_PASSWORDS = new Set([
18
+ 'password', 'password1', 'password123', 'passw0rd', 'p@ssw0rd', 'p@ssword',
19
+ '12345678', '123456789', '1234567890', 'qwerty', 'qwerty123', 'qwertyuiop',
20
+ 'admin', 'admin123', 'administrator', 'letmein', 'welcome', 'welcome1',
21
+ 'iloveyou', 'abc12345', 'a1b2c3d4', 'monkey123', 'dragon123', 'changeme',
22
+ 'accessi', 'emilsoftware',
23
+ ]);
24
+ /**
25
+ * Restituisce l'elenco leggibile delle violazioni della policy password.
26
+ * Policy: lunghezza, maiuscola, minuscola, cifra, carattere speciale, nessuno
27
+ * spazio, non comune.
28
+ */
29
+ function collectPasswordPolicyViolations(password, options = {}) {
30
+ var _a, _b;
31
+ if (typeof password !== 'string' || password.length === 0) {
32
+ return ['La password e obbligatoria.'];
33
+ }
34
+ const minLength = (_a = options.minLength) !== null && _a !== void 0 ? _a : exports.PASSWORD_MIN_LENGTH;
35
+ const maxLength = (_b = options.maxLength) !== null && _b !== void 0 ? _b : exports.PASSWORD_MAX_LENGTH;
36
+ const violations = [];
37
+ if (password.length < minLength)
38
+ violations.push(`almeno ${minLength} caratteri`);
39
+ if (password.length > maxLength)
40
+ violations.push(`al massimo ${maxLength} caratteri`);
41
+ if (/\s/.test(password))
42
+ violations.push('nessuno spazio');
43
+ if (!/[A-Z]/.test(password))
44
+ violations.push('almeno una lettera maiuscola');
45
+ if (!/[a-z]/.test(password))
46
+ violations.push('almeno una lettera minuscola');
47
+ if (!/\d/.test(password))
48
+ violations.push('almeno una cifra');
49
+ if (!/[^A-Za-z0-9]/.test(password))
50
+ violations.push('almeno un carattere speciale');
51
+ if (COMMON_PASSWORDS.has(password.toLowerCase()))
52
+ violations.push('una password non comune');
53
+ return violations;
54
+ }
55
+ /**
56
+ * Valida la password secondo la policy moderna e, se non conforme, solleva un
57
+ * `BadRequestException` con codice `ACCESSI_WEAK_PASSWORD` e l'elenco dei
58
+ * requisiti mancanti. Da usare solo quando si IMPOSTA una password, mai al login.
59
+ */
60
+ function assertStrongPassword(password, options) {
61
+ const violations = collectPasswordPolicyViolations(password, options);
62
+ if (violations.length === 0) {
63
+ return;
64
+ }
65
+ throw new common_1.BadRequestException({
66
+ code: exports.WEAK_PASSWORD_CODE,
67
+ message: `La password non rispetta i requisiti di sicurezza: richiede ${violations.join(', ')}.`,
68
+ details: violations,
69
+ });
70
+ }
71
+ //# sourceMappingURL=passwordPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passwordPolicy.js","sourceRoot":"","sources":["../../../src/accessi-module/security/passwordPolicy.ts"],"names":[],"mappings":";;;AAgCA,0EAsBC;AAOD,oDAWC;AAxED,2CAAqD;AAErD,kDAAkD;AACrC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,kFAAkF;AACrE,QAAA,kBAAkB,GAAG,uBAAuB,CAAC;AAO1D;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC1E,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY;IAC1E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU;IACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU;IACxE,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAgB,+BAA+B,CAC7C,QAAiB,EACjB,UAAiC,EAAE;;IAEnC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,2BAAmB,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,2BAAmB,CAAC;IAC3D,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS;QAAE,UAAU,CAAC,IAAI,CAAC,UAAU,SAAS,YAAY,CAAC,CAAC;IAClF,IAAI,QAAQ,CAAC,MAAM,GAAG,SAAS;QAAE,UAAU,CAAC,IAAI,CAAC,cAAc,SAAS,YAAY,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC7E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC9D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACpF,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAE7F,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,QAAiB,EAAE,OAA+B;IACrF,MAAM,UAAU,GAAG,+BAA+B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,4BAAmB,CAAC;QAC5B,IAAI,EAAE,0BAAkB;QACxB,OAAO,EAAE,+DAA+D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAChG,OAAO,EAAE,UAAU;KACpB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { BadRequestException } from '@nestjs/common';\n\n/** Lunghezze canoniche della password Accessi. */\nexport const PASSWORD_MIN_LENGTH = 8;\nexport const PASSWORD_MAX_LENGTH = 100;\n\n/** Codice errore stabile restituito quando la password non rispetta la policy. */\nexport const WEAK_PASSWORD_CODE = 'ACCESSI_WEAK_PASSWORD';\n\nexport interface PasswordPolicyOptions {\n minLength?: number;\n maxLength?: number;\n}\n\n/**\n * Password comuni o banalmente prevedibili rifiutate anche se rispettano la\n * complessita. Confronto case-insensitive; elenco volutamente piccolo e senza\n * dipendenze esterne.\n */\nconst COMMON_PASSWORDS = new Set([\n 'password', 'password1', 'password123', 'passw0rd', 'p@ssw0rd', 'p@ssword',\n '12345678', '123456789', '1234567890', 'qwerty', 'qwerty123', 'qwertyuiop',\n 'admin', 'admin123', 'administrator', 'letmein', 'welcome', 'welcome1',\n 'iloveyou', 'abc12345', 'a1b2c3d4', 'monkey123', 'dragon123', 'changeme',\n 'accessi', 'emilsoftware',\n]);\n\n/**\n * Restituisce l'elenco leggibile delle violazioni della policy password.\n * Policy: lunghezza, maiuscola, minuscola, cifra, carattere speciale, nessuno\n * spazio, non comune.\n */\nexport function collectPasswordPolicyViolations(\n password: unknown,\n options: PasswordPolicyOptions = {},\n): string[] {\n if (typeof password !== 'string' || password.length === 0) {\n return ['La password e obbligatoria.'];\n }\n\n const minLength = options.minLength ?? PASSWORD_MIN_LENGTH;\n const maxLength = options.maxLength ?? PASSWORD_MAX_LENGTH;\n const violations: string[] = [];\n\n if (password.length < minLength) violations.push(`almeno ${minLength} caratteri`);\n if (password.length > maxLength) violations.push(`al massimo ${maxLength} caratteri`);\n if (/\\s/.test(password)) violations.push('nessuno spazio');\n if (!/[A-Z]/.test(password)) violations.push('almeno una lettera maiuscola');\n if (!/[a-z]/.test(password)) violations.push('almeno una lettera minuscola');\n if (!/\\d/.test(password)) violations.push('almeno una cifra');\n if (!/[^A-Za-z0-9]/.test(password)) violations.push('almeno un carattere speciale');\n if (COMMON_PASSWORDS.has(password.toLowerCase())) violations.push('una password non comune');\n\n return violations;\n}\n\n/**\n * Valida la password secondo la policy moderna e, se non conforme, solleva un\n * `BadRequestException` con codice `ACCESSI_WEAK_PASSWORD` e l'elenco dei\n * requisiti mancanti. Da usare solo quando si IMPOSTA una password, mai al login.\n */\nexport function assertStrongPassword(password: unknown, options?: PasswordPolicyOptions): void {\n const violations = collectPasswordPolicyViolations(password, options);\n if (violations.length === 0) {\n return;\n }\n\n throw new BadRequestException({\n code: WEAK_PASSWORD_CODE,\n message: `La password non rispetta i requisiti di sicurezza: richiede ${violations.join(', ')}.`,\n details: violations,\n });\n}\n"]}
@@ -1,7 +1,17 @@
1
- import { AccessiOptions } from '../AccessiModule';
1
+ import * as jwt from 'jsonwebtoken';
2
+ import type { AccessiOptions } from '../AccessiModule';
3
+ /** Durata predefinita del token di reset. La monouso e garantita anche dal nonce persistito in `UTENTI.KEYREG`. */
2
4
  export declare const DEFAULT_PASSWORD_RESET_EXPIRES_IN = "1h";
3
- export declare function getAccessiJwtSecret(options: AccessiOptions): string;
4
- export declare function createPasswordResetToken(codiceUtente: number, nonce: string, secret: string, expiresIn?: string): string;
5
+ /** Scopo della chiave derivata: separa le chiavi di access token, reset password e 2FA. */
6
+ export type AccessiJwtPurpose = 'access' | 'refresh' | 'reset' | '2fa';
7
+ /**
8
+ * Deriva una chiave JWT per scopo dal segreto configurato (key separation senza nuova configurazione).
9
+ * Un leak della chiave di reset non compromette gli access token e viceversa.
10
+ */
11
+ export declare function getAccessiJwtSecret(options: AccessiOptions, purpose?: AccessiJwtPurpose): string;
12
+ /** Crea un token firmato contenente solo codice utente e nonce; non inserire email o dati personali nelle claim. */
13
+ export declare function createPasswordResetToken(codiceUtente: number, nonce: string, secret: string, expiresIn?: jwt.SignOptions['expiresIn']): string;
14
+ /** Verifica firma e scadenza, quindi restituisce i dati minimi necessari al reset. */
5
15
  export declare function verifyPasswordResetToken(token: string, secret: string): {
6
16
  codiceUtente: number;
7
17
  nonce: string;
@@ -38,15 +38,22 @@ exports.getAccessiJwtSecret = getAccessiJwtSecret;
38
38
  exports.createPasswordResetToken = createPasswordResetToken;
39
39
  exports.verifyPasswordResetToken = verifyPasswordResetToken;
40
40
  const jwt = __importStar(require("jsonwebtoken"));
41
+ const crypto_1 = require("crypto");
42
+ /** Durata predefinita del token di reset. La monouso e garantita anche dal nonce persistito in `UTENTI.KEYREG`. */
41
43
  exports.DEFAULT_PASSWORD_RESET_EXPIRES_IN = '1h';
42
- function getAccessiJwtSecret(options) {
44
+ /**
45
+ * Deriva una chiave JWT per scopo dal segreto configurato (key separation senza nuova configurazione).
46
+ * Un leak della chiave di reset non compromette gli access token e viceversa.
47
+ */
48
+ function getAccessiJwtSecret(options, purpose = 'access') {
43
49
  var _a;
44
50
  const secret = ((_a = options === null || options === void 0 ? void 0 : options.jwtOptions) === null || _a === void 0 ? void 0 : _a.secret) || process.env.ACC_JWT_SECRET;
45
51
  if (!secret) {
46
52
  throw new Error('JWT secret non configurato.');
47
53
  }
48
- return secret;
54
+ return (0, crypto_1.createHmac)('sha256', secret).update(`accessi:jwt:${purpose}:v1`).digest('hex');
49
55
  }
56
+ /** Crea un token firmato contenente solo codice utente e nonce; non inserire email o dati personali nelle claim. */
50
57
  function createPasswordResetToken(codiceUtente, nonce, secret, expiresIn = exports.DEFAULT_PASSWORD_RESET_EXPIRES_IN) {
51
58
  if (!codiceUtente || !nonce) {
52
59
  throw new Error('Dati insufficienti per generare il reset token.');
@@ -56,13 +63,14 @@ function createPasswordResetToken(codiceUtente, nonce, secret, expiresIn = expor
56
63
  typ: 'password-reset',
57
64
  }, secret, {
58
65
  subject: `${codiceUtente}`,
59
- expiresIn: expiresIn,
66
+ expiresIn,
60
67
  });
61
68
  }
69
+ /** Verifica firma e scadenza, quindi restituisce i dati minimi necessari al reset. */
62
70
  function verifyPasswordResetToken(token, secret) {
63
- const decoded = jwt.verify(token, secret);
71
+ const decoded = jwt.verify(token, secret, { algorithms: ['HS256'] });
64
72
  const codiceUtente = Number(decoded === null || decoded === void 0 ? void 0 : decoded.sub);
65
- if ((decoded === null || decoded === void 0 ? void 0 : decoded.typ) !== 'password-reset' || !codiceUtente || typeof (decoded === null || decoded === void 0 ? void 0 : decoded.nonce) !== 'string') {
73
+ if ((decoded === null || decoded === void 0 ? void 0 : decoded.typ) !== 'password-reset' || !Number.isSafeInteger(codiceUtente) || codiceUtente <= 0 || typeof (decoded === null || decoded === void 0 ? void 0 : decoded.nonce) !== 'string' || !decoded.nonce) {
66
74
  throw new Error('Token di reset non valido.');
67
75
  }
68
76
  return {