emilsoftware-utilities 2.0.0-dev.3 → 2.0.0-dev.31

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 (549) hide show
  1. package/README.MD +185 -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.d.ts +1 -1
  9. package/dist/DatabaseUpdater.js +32 -29
  10. package/dist/DatabaseUpdater.js.map +1 -1
  11. package/dist/EmilsoftwareModule.js.map +1 -1
  12. package/dist/ExecutionTimeLogger.d.ts +2 -2
  13. package/dist/ExecutionTimeLogger.js +5 -4
  14. package/dist/ExecutionTimeLogger.js.map +1 -1
  15. package/dist/Logger.d.ts +22 -11
  16. package/dist/Logger.js +132 -119
  17. package/dist/Logger.js.map +1 -1
  18. package/dist/Orm.d.ts +28 -7
  19. package/dist/Orm.js +196 -90
  20. package/dist/Orm.js.map +1 -1
  21. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  22. package/dist/Utilities.d.ts +18 -8
  23. package/dist/Utilities.js +117 -38
  24. package/dist/Utilities.js.map +1 -1
  25. package/dist/accessi-module/AccessiModule.d.ts +70 -1
  26. package/dist/accessi-module/AccessiModule.js +32 -5
  27. package/dist/accessi-module/AccessiModule.js.map +1 -1
  28. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  29. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  30. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  31. package/dist/accessi-module/Console/console.css +618 -0
  32. package/dist/accessi-module/Console/console.d.ts +1 -0
  33. package/dist/accessi-module/Console/console.js +3130 -0
  34. package/dist/accessi-module/Console/console.js.map +1 -0
  35. package/dist/accessi-module/Console/generated/accessiApi.d.ts +562 -0
  36. package/dist/accessi-module/Console/generated/accessiApi.js +533 -0
  37. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  38. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  39. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  40. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  41. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  42. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  43. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  44. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  45. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  46. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  47. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  48. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  49. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  50. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  51. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  52. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  53. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  54. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  55. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  56. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  57. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  58. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  59. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  60. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  61. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  62. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  63. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  64. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  65. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  66. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  67. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  68. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  69. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  70. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  71. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  72. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  73. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  74. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  75. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  76. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  77. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +27 -0
  78. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  79. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  80. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  81. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  82. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  83. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  84. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  85. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  86. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  87. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  88. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  89. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  90. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  91. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  92. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  93. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  94. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  95. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  96. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  97. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  98. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  99. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  100. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  101. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  102. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  103. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  104. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  105. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  106. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  107. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  108. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  109. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  110. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  111. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  112. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  113. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  114. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  115. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  116. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  117. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  118. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  119. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  120. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  121. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  122. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  123. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  124. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  125. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  126. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  127. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  128. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  129. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  130. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  131. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  132. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  133. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  134. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  135. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  136. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  137. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  138. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  139. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  140. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  141. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  142. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  143. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  144. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  145. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  146. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  147. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  148. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  149. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  150. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  151. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  152. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  153. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  154. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  155. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  156. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  157. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  158. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  159. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  160. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  161. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  162. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  163. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  164. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +21 -0
  165. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  166. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  167. package/dist/accessi-module/Console/generated/model/index.d.ts +93 -0
  168. package/dist/accessi-module/Console/generated/model/index.js +110 -0
  169. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  170. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  171. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  172. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  173. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  174. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  175. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  176. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  177. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  178. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  179. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  180. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  181. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  182. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  183. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  184. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  185. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  186. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  187. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  188. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +34 -0
  189. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  190. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  191. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  192. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  193. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  194. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  195. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  196. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  197. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  198. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  199. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  200. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  201. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  202. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  203. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  204. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  205. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  206. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  207. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  208. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  209. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  210. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  211. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  212. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  213. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  214. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  215. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  216. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  217. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  218. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  219. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  220. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  221. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  222. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  223. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  224. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  225. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  226. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  227. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  228. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  229. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  230. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  231. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  232. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  233. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  234. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  235. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  236. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  237. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  238. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  239. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  240. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  241. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  242. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  243. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  244. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  245. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  246. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  247. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  248. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  249. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  250. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  251. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  252. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  253. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  254. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  255. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  256. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  257. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  258. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  259. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  260. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  261. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  262. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  263. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  264. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  265. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  266. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  267. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  268. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  269. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  270. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  271. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  272. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  273. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  274. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  275. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  276. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  277. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  278. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +22 -0
  279. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  280. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  281. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  282. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  283. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  284. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  285. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  286. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  287. package/dist/accessi-module/Console/generated/model/userDto.d.ts +112 -0
  288. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  289. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  290. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  291. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  292. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  293. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  294. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  295. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  296. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  297. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  298. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  299. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  300. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  301. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  302. package/dist/accessi-module/Console/help.d.ts +13 -0
  303. package/dist/accessi-module/Console/help.js +348 -0
  304. package/dist/accessi-module/Console/help.js.map +1 -0
  305. package/dist/accessi-module/Console/index.html +127 -0
  306. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  307. package/dist/accessi-module/Console/wiki.js +691 -0
  308. package/dist/accessi-module/Console/wiki.js.map +1 -0
  309. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +18 -0
  310. package/dist/accessi-module/Controllers/AccessiConsoleController.js +111 -0
  311. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  312. package/dist/accessi-module/Controllers/AuthController.d.ts +8 -5
  313. package/dist/accessi-module/Controllers/AuthController.js +128 -79
  314. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  315. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -3
  316. package/dist/accessi-module/Controllers/ConfiguratorController.js +30 -35
  317. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  318. package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
  319. package/dist/accessi-module/Controllers/EmailController.js +12 -14
  320. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  321. package/dist/accessi-module/Controllers/FiltriController.d.ts +5 -4
  322. package/dist/accessi-module/Controllers/FiltriController.js +124 -5
  323. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  324. package/dist/accessi-module/Controllers/PermissionController.d.ts +12 -1
  325. package/dist/accessi-module/Controllers/PermissionController.js +317 -46
  326. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  327. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  328. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  329. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  330. package/dist/accessi-module/Controllers/UserController.d.ts +8 -4
  331. package/dist/accessi-module/Controllers/UserController.js +156 -23
  332. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  333. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  334. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  335. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  336. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  337. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  338. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
  339. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  340. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
  341. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
  342. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  343. package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
  344. package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
  345. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  346. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +66 -0
  347. package/dist/accessi-module/Dtos/CatalogDtos.js +336 -0
  348. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  349. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  350. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  351. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  352. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  353. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  354. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  355. package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
  356. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  357. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.d.ts +1 -0
  358. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js +9 -1
  359. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  360. package/dist/accessi-module/Dtos/GetMenusResponse.d.ts +1 -0
  361. package/dist/accessi-module/Dtos/GetMenusResponse.js +9 -1
  362. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  363. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  364. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  365. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +26 -0
  366. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  367. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  368. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  369. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  370. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  371. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  372. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  373. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  374. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  375. package/dist/accessi-module/Dtos/LoginResponse.d.ts +6 -2
  376. package/dist/accessi-module/Dtos/LoginResponse.js +20 -7
  377. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  378. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  379. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  380. package/dist/accessi-module/Dtos/Permission.js +1 -0
  381. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  382. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  383. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
  384. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  385. package/dist/accessi-module/Dtos/RegisterRequest.js +7 -1
  386. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  387. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  388. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  389. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  390. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  391. package/dist/accessi-module/Dtos/Role.js +4 -0
  392. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  393. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  394. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  395. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  396. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  397. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  398. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  399. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  400. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  401. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  402. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  403. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  404. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  405. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  406. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  407. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  408. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  409. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  410. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  411. package/dist/accessi-module/Dtos/UserDto.d.ts +19 -0
  412. package/dist/accessi-module/Dtos/UserDto.js +114 -3
  413. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  414. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  415. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  416. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  417. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  418. package/dist/accessi-module/Dtos/index.d.ts +11 -0
  419. package/dist/accessi-module/Dtos/index.js +11 -0
  420. package/dist/accessi-module/Dtos/index.js.map +1 -1
  421. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +40 -5
  422. package/dist/accessi-module/Services/AuthService/AuthService.js +192 -40
  423. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  424. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  425. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  426. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  427. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  428. package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
  429. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  430. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  431. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
  432. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  433. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +77 -2
  434. package/dist/accessi-module/Services/PermissionService/PermissionService.js +611 -206
  435. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  436. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  437. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  438. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  439. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  440. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  441. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  442. package/dist/accessi-module/Services/UserService/UserService.d.ts +54 -4
  443. package/dist/accessi-module/Services/UserService/UserService.js +488 -269
  444. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  445. package/dist/accessi-module/Views/reset-password.html +213 -213
  446. package/dist/accessi-module/accessiRuntime.d.ts +45 -0
  447. package/dist/accessi-module/accessiRuntime.js +39 -0
  448. package/dist/accessi-module/accessiRuntime.js.map +1 -0
  449. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +51 -10
  450. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +435 -181
  451. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  452. package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
  453. package/dist/accessi-module/database-updates/accessiSchema.js +98 -0
  454. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  455. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  456. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  457. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  458. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +26 -8
  459. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  460. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +24 -0
  461. package/dist/accessi-module/federated-auth/FederatedAuthController.js +333 -0
  462. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  463. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +100 -0
  464. package/dist/accessi-module/federated-auth/FederatedAuthService.js +451 -0
  465. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  466. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  467. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  468. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  469. package/dist/accessi-module/index.d.ts +21 -0
  470. package/dist/accessi-module/index.js +69 -19
  471. package/dist/accessi-module/index.js.map +1 -1
  472. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  473. package/dist/accessi-module/jwt/jwt.strategy.js +16 -7
  474. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  475. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  476. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  477. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  478. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  479. package/dist/accessi-module/middleware/authenticateGen.js +63 -25
  480. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  481. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  482. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  483. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  484. package/dist/accessi-module/security/accessControl.d.ts +11 -0
  485. package/dist/accessi-module/security/accessControl.js +19 -4
  486. package/dist/accessi-module/security/accessControl.js.map +1 -1
  487. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  488. package/dist/accessi-module/security/accessiValidation.js +41 -0
  489. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  490. package/dist/accessi-module/security/authenticatedToken.d.ts +15 -1
  491. package/dist/accessi-module/security/authenticatedToken.js +31 -4
  492. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  493. package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
  494. package/dist/accessi-module/security/emailConfiguration.js +41 -0
  495. package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
  496. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  497. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  498. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  499. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +3 -3
  500. package/dist/accessi-module/security/publicAuthRateLimit.js +30 -8
  501. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  502. package/dist/accessi-module/security/serviceTokenGuard.d.ts +25 -0
  503. package/dist/accessi-module/security/serviceTokenGuard.js +85 -0
  504. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  505. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +8 -0
  506. package/dist/accessi-module/security/serviceTokenRateLimit.js +49 -0
  507. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  508. package/dist/allegati-module/AllegatiModule.d.ts +12 -1
  509. package/dist/allegati-module/AllegatiModule.js +11 -1
  510. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  511. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  512. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  513. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  514. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  515. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  516. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  517. package/dist/allegati-module/Dtos/index.js.map +1 -1
  518. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  519. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  520. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  521. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  522. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  523. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  524. package/dist/allegati-module/index.js.map +1 -1
  525. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  526. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  527. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  528. package/dist/autobind.d.ts +10 -3
  529. package/dist/autobind.js +24 -9
  530. package/dist/autobind.js.map +1 -1
  531. package/dist/emilsoftware-utilities-2.0.0-dev.31.tgz +0 -0
  532. package/dist/firebird-compat.d.ts +29 -6
  533. package/dist/firebird-compat.js +150 -129
  534. package/dist/firebird-compat.js.map +1 -1
  535. package/dist/index.d.ts +2 -2
  536. package/dist/index.js +2 -2
  537. package/dist/index.js.map +1 -1
  538. package/dist/initEmilsoftwareModule.js +11 -3
  539. package/dist/initEmilsoftwareModule.js.map +1 -1
  540. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  541. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  542. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  543. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  544. package/dist/scripts/generateAccessiWiki.js +131 -0
  545. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  546. package/dist/swagger/SwaggerConfig.d.ts +7 -1
  547. package/dist/swagger/SwaggerConfig.js +22 -8
  548. package/dist/swagger/SwaggerConfig.js.map +1 -1
  549. package/package.json +103 -83
@@ -1 +1 @@
1
- {"version":3,"file":"Utilities.js","sourceRoot":"","sources":["../src/Utilities.ts"],"names":[],"mappings":"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","sourcesContent":["import { Response } from 'express';\r\nimport { Options } from \"es-node-firebird\";\nimport { FirebirdOptions } from \"./firebird-compat\";\nimport crypto from \"crypto\";\r\n\r\n\r\nexport enum StatusCode {\r\n Ok = 0,\r\n Warning = 1,\r\n Error = 2,\r\n}\r\n\r\nexport class DateUtilities {\r\n /**\r\n * Pads a number with leading zeros to reach a specified length.\r\n * @param num - The number to pad.\r\n * @param totalLength - The total length of the resulting string.\r\n * @returns The padded string.\r\n */\r\n static addStartingZeros(num: number, totalLength: number): string {\r\n return String(num).padStart(totalLength, '0');\r\n }\r\n\r\n /**\r\n * Formats a Date object as a Moncler-style string.\r\n * @param dData - The date to format.\r\n * @param bAddMs - Whether to include milliseconds.\r\n * @returns The formatted date string.\r\n */\r\n static dateToMoncler(dData: Date, bAddMs: boolean = false): string {\r\n const yy = dData.getFullYear();\r\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\r\n const dd = this.addStartingZeros(dData.getDate(), 2);\r\n const hh = this.addStartingZeros(dData.getHours(), 2);\r\n const nn = this.addStartingZeros(dData.getMinutes(), 2);\r\n const ss = this.addStartingZeros(dData.getSeconds(), 2);\r\n const ms = this.addStartingZeros(dData.getMilliseconds(), 3);\r\n return bAddMs ? `${yy}${mm}${dd}${hh}${nn}${ss}${ms}` : `${yy}${mm}${dd}${hh}${nn}${ss}`;\r\n }\r\n\r\n /**\r\n * Formats a Date object as a SQL-style string.\r\n * @param dData - The date to format.\r\n * @param bAddMs - Whether to include milliseconds.\r\n * @returns The formatted date string.\r\n */\r\n static dateToSql(dData: Date, bAddMs: boolean = false): string {\r\n const yy = dData.getFullYear();\r\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\r\n const dd = this.addStartingZeros(dData.getDate(), 2);\r\n const hh = this.addStartingZeros(dData.getHours(), 2);\r\n const nn = this.addStartingZeros(dData.getMinutes(), 2);\r\n const ss = this.addStartingZeros(dData.getSeconds(), 2);\r\n const ms = this.addStartingZeros(dData.getMilliseconds(), 3);\r\n return bAddMs\r\n ? `${yy}-${mm}-${dd} ${hh}:${nn}:${ss}.${ms}`\r\n : `${yy}-${mm}-${dd} ${hh}:${nn}:${ss}`;\r\n }\r\n\r\n /**\r\n * Formats a Date object as a simple string (dd-MM-yyyy).\r\n * @param dData - The date to format.\r\n * @returns The formatted date string.\r\n */\r\n static dateToSimple(dData: Date): string {\r\n const yy = dData.getFullYear();\r\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\r\n const dd = this.addStartingZeros(dData.getDate(), 2);\r\n return `${dd}-${mm}-${yy}`;\r\n }\r\n\r\n /**\r\n * Gets the current date and time as a formatted string.\r\n * @returns The current date and time in the format dd.MM.yyyy HH:mm:ss.\r\n */\r\n static getNowDateString(): string {\r\n const now: Date = new Date();\r\n const day = now.getDate().toString().padStart(2, \"0\");\r\n const month = (now.getMonth() + 1).toString().padStart(2, \"0\");\r\n const year = now.getFullYear();\r\n const hours = now.getHours().toString().padStart(2, \"0\");\r\n const minutes = now.getMinutes().toString().padStart(2, \"0\");\r\n const seconds = now.getSeconds().toString().padStart(2, \"0\");\r\n return `${day}.${month}.${year} ${hours}:${minutes}:${seconds}`;\r\n }\r\n\r\n /**\r\n * Parses a date string in the format dd/MM/yyyy into a Date object.\r\n * @param date - The date string to parse.\r\n * @returns A Date object.\r\n */\r\n static parseDate(date: string): Date {\r\n const parts: string[] = date.split(\"/\");\r\n return new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));\r\n }\r\n}\r\n\r\n\r\nexport class RestUtilities {\r\n /**\r\n * Sends an OK message as a response.\r\n * @param res - Express Response object.\r\n * @param message - The success message.\r\n * @returns The Response object.\r\n */\r\n static sendOKMessage(res: Response, message: string): Response {\r\n return res.send({\r\n severity: \"success\",\r\n status: 200,\r\n statusCode: StatusCode.Ok,\r\n message,\r\n });\r\n }\r\n\r\n /**\r\n * Sends an error message as a response.\r\n * @param res - Express Response object.\r\n * @param error - The error to send.\r\n * @param tag - Optional tag for additional context.\r\n * @param status - HTTP status code (default: 500).\r\n * @returns The Response object.\r\n */\r\n static sendErrorMessage(res: Response, error: any, tag: string = \"[BASE ERROR]\", status: number = 500): Response {\r\n return res.status(status).send({\r\n severity: \"error\",\r\n status,\r\n statusCode: StatusCode.Error,\r\n message: \"An error occurred\",\r\n error: `${tag}: ${error}`,\r\n });\r\n }\r\n\r\n\r\n static sendUnauthorized(res: Response): Response {\r\n return res.status(401).send({\r\n severity: \"error\",\r\n statusCode: StatusCode.Error,\r\n message: \"Non sei autorizzato\",\r\n });\r\n }\r\n\r\n static sendInvalidCredentials(res: Response): Response {\r\n return res.status(401).send({\r\n severity: \"error\",\r\n statusCode: StatusCode.Error,\r\n message: \"Credenziali non valide\"\r\n });\r\n }\r\n\r\n static sendPasswordExpired(res: Response): Response {\r\n return res.status(403).send({\r\n severity: \"warning\",\r\n statusCode: StatusCode.Warning,\r\n code: \"PASSWORD_EXPIRED\",\r\n message: \"Password scaduta. E' necessario aggiornarla\"\r\n })\r\n }\r\n\r\n /**\r\n * Sends a base response with a payload.\r\n * @param res - Express Response object.\r\n * @param payload - The payload to include in the response.\r\n * @returns The Response object.\r\n */\r\n static sendBaseResponse(res: Response, payload: any): Response {\r\n try {\r\n payload = JSON.parse(JSON.stringify(payload));\r\n const response = {\r\n Status: {\r\n errorCode: \"0\",\r\n errorDescription: \"\",\r\n },\r\n Result: payload,\r\n Message: \"Dati recuperati con successo.\",\r\n };\r\n return res.send(response);\r\n } catch (error) {\r\n return this.sendErrorMessage(res, `Error sending response: ${error}`, \"[UTILITIES]\", 500);\r\n }\r\n }\r\n\r\n /**\r\n * Sends an execution message as a response.\r\n * @param res - Express Response object.\r\n * @param executionObject - The execution data.\r\n * @param title - The title of the response.\r\n * @returns The Response object.\r\n */\r\n static sendExecMessage(res: Response, executionObject: any, title: string): Response {\r\n try {\r\n const response = {\r\n Status: {\r\n errorCode: \"0\",\r\n errorDescription: \"\",\r\n },\r\n Sql: \"\",\r\n ID: executionObject?.id,\r\n data: executionObject,\r\n Title: title,\r\n };\r\n return res.send(response);\r\n } catch (error) {\r\n return this.sendErrorMessage(res, `Error sending execution message: ${error}`, title, 500);\r\n }\r\n }\r\n\r\n /**\r\n * Prints a SQL query with parameters replaced.\r\n * @param query - The SQL query.\r\n * @param params - The parameters to replace.\r\n * @returns The formatted query.\r\n */\r\n static printQueryWithParams(query: string = \"\", params: any[]): string {\r\n try {\r\n params.forEach(param => {\r\n query = query.replace(\"?\", param);\r\n });\r\n return query;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n\r\n public static convertKeysToCamelCase(obj: any): any {\r\n if (obj !== null && obj.constructor === Object) {\r\n return Object.keys(obj).reduce((acc: any, key: string) => {\r\n const camelCaseKey = key.toLowerCase().replace(/_([a-z])/g, g => g[1].toUpperCase());\r\n acc[camelCaseKey] = obj[key];\r\n return acc;\r\n }, {});\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\n\r\nexport class CryptUtilities {\r\n\r\n /**\r\n * Cifra un testo in chiaro usando l'algoritmo AES-128 in modalità ECB.\r\n * \r\n * @param plainText - Il testo in chiaro da cifrare.\r\n * @param key - La chiave di cifratura (16 byte per AES-128).\r\n * @param outputEncoding - Codifica del risultato cifrato (predefinito: \"base64\").\r\n * @returns Il testo cifrato codificato.\r\n * @throws Errore in caso di problemi durante la cifratura.\r\n */\r\n public static encrypt(plainData: string, key: string, outputEncoding: BufferEncoding = \"base64\"): string {\r\n try {\r\n // Crea un oggetto Cipher usando AES-128 in modalità ECB\r\n const cipher = crypto.createCipheriv(\"aes-128-ecb\", Buffer.from(key, \"utf8\"), null);\r\n\r\n // Cifra il testo in chiaro e finalizza il processo\r\n const encryptedBuffer = Buffer.concat([\r\n cipher.update(plainData, \"utf8\"),\r\n cipher.final(),\r\n ]);\r\n\r\n // Restituisce il risultato cifrato codificato\r\n return encryptedBuffer.toString(outputEncoding);\r\n } catch (error) {\r\n // Gestisce eventuali errori di cifratura\r\n throw new Error(`Errore durante la cifratura: ${error.message}`);\r\n }\r\n }\r\n\r\n /**\r\n * Decifra un testo cifrato usando l'algoritmo AES-128 in modalità ECB.\r\n * \r\n * @param encryptedData - Il testo cifrato da decifrare.\r\n * @param key - La chiave di decifratura (16 byte per AES-128).\r\n * @returns Il testo decifrato o null in caso di errore.\r\n */\r\n public static decrypt(encryptedData: string, key: string): string | null {\r\n try {\r\n // Crea un oggetto Decipher usando AES-128 in modalità ECB\r\n const decipher = crypto.createDecipheriv(\"aes-128-ecb\", Buffer.from(key, \"utf8\"), null);\r\n decipher.setAutoPadding(false);\r\n\r\n // Decifra il testo cifrato\r\n let decoded = decipher.update(encryptedData, \"base64\", \"utf8\");\r\n decoded += decipher.final(\"utf8\");\r\n\r\n // Rimuove il padding manuale\r\n const lastChar = decoded.charCodeAt(decoded.length - 1);\r\n decoded = decoded.slice(0, decoded.length - lastChar);\r\n\r\n return decoded;\r\n } catch (error) {\r\n console.error(\"Errore durante la decifratura:\", error);\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport class PasswordUtilities {\r\n private static readonly HASH_PREFIX = \"scrypt\";\r\n private static readonly LEGACY_HASH_PREFIX = \"scrypt-legacy\";\r\n private static readonly SCRYPT_N = 16384;\r\n private static readonly SCRYPT_R = 8;\r\n private static readonly SCRYPT_P = 1;\r\n private static readonly SALT_LENGTH = 16;\r\n\r\n private static hashSecret(secretValue: string, prefix: string): string {\r\n if (typeof secretValue !== \"string\" || secretValue.length === 0) {\r\n throw new Error(\"Il valore da proteggere non puo essere vuoto.\");\r\n }\r\n const salt = crypto.randomBytes(this.SALT_LENGTH).toString(\"hex\");\r\n const derivedKey = crypto.scryptSync(\r\n secretValue,\r\n salt,\r\n 64,\r\n {\r\n N: this.SCRYPT_N,\r\n r: this.SCRYPT_R,\r\n p: this.SCRYPT_P,\r\n maxmem: 64 * 1024 * 1024,\r\n },\r\n );\r\n\r\n return [\r\n prefix,\r\n this.SCRYPT_N,\r\n this.SCRYPT_R,\r\n this.SCRYPT_P,\r\n salt,\r\n derivedKey.toString(\"hex\"),\r\n ].join(\"$\");\r\n }\r\n\r\n private static hasPrefix(value: string, prefix: string): boolean {\r\n return typeof value === \"string\" && value.startsWith(`${prefix}$`);\r\n }\r\n\r\n private static parseHash(\r\n storedPassword: string,\r\n expectedPrefix: string\r\n ): {\r\n salt: string;\r\n expectedHash: Buffer;\r\n N: number;\r\n r: number;\r\n p: number;\r\n } | null {\r\n if (!this.hasPrefix(storedPassword, expectedPrefix)) {\r\n return null;\r\n }\r\n\r\n const [, rawN, rawR, rawP, salt, expectedHashHex] = storedPassword.split(\"$\");\r\n const N = Number(rawN);\r\n const r = Number(rawR);\r\n const p = Number(rawP);\r\n\r\n if (!salt || !expectedHashHex || !Number.isFinite(N) || !Number.isFinite(r) || !Number.isFinite(p)) {\r\n return null;\r\n }\r\n\r\n const expectedHash = Buffer.from(expectedHashHex, \"hex\");\r\n if (expectedHash.length === 0) {\r\n return null;\r\n }\r\n\r\n return {\r\n salt,\r\n expectedHash,\r\n N,\r\n r,\r\n p,\r\n };\r\n }\r\n\r\n private static verifySecret(secretValue: string, storedPassword: string, expectedPrefix: string): boolean {\r\n if (typeof secretValue !== \"string\") {\r\n return false;\r\n }\r\n\r\n const parsedHash = this.parseHash(storedPassword, expectedPrefix);\r\n if (!parsedHash) {\r\n return false;\r\n }\r\n\r\n const derivedKey = crypto.scryptSync(\r\n secretValue,\r\n parsedHash.salt,\r\n parsedHash.expectedHash.length,\r\n {\r\n N: parsedHash.N,\r\n r: parsedHash.r,\r\n p: parsedHash.p,\r\n maxmem: 64 * 1024 * 1024,\r\n },\r\n );\r\n\r\n return crypto.timingSafeEqual(derivedKey, parsedHash.expectedHash);\r\n }\r\n\r\n public static hashPassword(plainPassword: string): string {\r\n return this.hashSecret(plainPassword, this.HASH_PREFIX);\r\n }\r\n\r\n public static hashLegacyEncryptedPassword(legacyEncryptedPassword: string): string {\r\n return this.hashSecret(legacyEncryptedPassword, this.LEGACY_HASH_PREFIX);\r\n }\r\n\r\n public static isPasswordHash(value: string): boolean {\r\n return this.hasPrefix(value, this.HASH_PREFIX);\r\n }\r\n\r\n public static isLegacyPasswordHash(value: string): boolean {\r\n return this.hasPrefix(value, this.LEGACY_HASH_PREFIX);\r\n }\r\n\r\n public static verifyPassword(plainPassword: string, storedPassword: string): boolean {\r\n return this.verifySecret(plainPassword, storedPassword, this.HASH_PREFIX);\r\n }\r\n\r\n public static verifyLegacyEncryptedPassword(\r\n legacyEncryptedPassword: string,\r\n storedPassword: string\r\n ): boolean {\r\n return this.verifySecret(legacyEncryptedPassword, storedPassword, this.LEGACY_HASH_PREFIX);\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * Utility class for managing database-related configurations and operations.\r\n */\r\nexport class DatabaseUtilities {\r\n /**\r\n * Creates a configuration object for connecting to a Firebird database.\r\n *\r\n * @param {string} host - The hostname or IP address of the database server.\r\n * @param {number} port - The port number on which the database server is running.\r\n * @param {string} database - The path or alias of the database to connect to.\r\n * @param {string} [username='SYSDBA'] - The username for authentication. Defaults to 'SYSDBA'.\r\n * @param {string} [password='masterkey'] - The password for authentication. Defaults to 'masterkey'.\r\n * @returns {Options} - The configuration object to use for establishing a Firebird database connection.\r\n *\r\n * @example\r\n * ```typescript\r\n * const options = DatabaseUtilities.createOption(\r\n * 'localhost',\r\n * 3050,\r\n * '/path/to/database.fdb',\r\n * 'myUsername',\r\n * 'myPassword'\r\n * );\r\n * ```\r\n */\r\n public static createOption(\r\n host: string,\r\n port: number,\r\n database: string,\r\n username = 'SYSDBA',\r\n password = 'masterkey'\r\n ): FirebirdOptions {\n return {\n host, // The hostname or IP address of the database server.\n port, // The port number used by the database server.\n user: username, // The username for database authentication.\r\n password, // The password for database authentication.\r\n database, // The path or alias of the target database.\r\n lowercase_keys: false, // Determines if the keys in query results should be in lowercase. Default: false.\r\n role: undefined, // The role for the database connection. Default: undefined.\r\n pageSize: 100000, // The page size for database transactions. Default: 100,000.\n retryConnectionInterval: 1000, // The interval (in ms) to retry a failed connection. Default: 1,000 ms.\n blobAsText: true, // Determines if BLOB fields should be treated as text. Default: true.\n wireCrypt: 'enabled',\n pluginName: 'Srp',\n authPlugins: ['Srp256', 'Srp', 'Legacy_Auth'],\n connectTimeoutMs: 15000,\n };\n }\n}\n\r\nexport function Deprecated(message: string) {\r\n return function (target: any, key?: string, descriptor?: PropertyDescriptor) {\r\n console.warn(`[DEPRECATED] ${message}`);\r\n };\r\n }\r\n"]}
1
+ {"version":3,"file":"Utilities.js","sourceRoot":"","sources":["../src/Utilities.ts"],"names":[],"mappings":"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","sourcesContent":["import { Response } from 'express';\nimport { FirebirdOptions } from \"./firebird-compat\";\nimport { Logger } from \"./Logger\";\nimport crypto from \"crypto\";\n\n\nexport enum StatusCode {\n Ok = 0,\n Warning = 1,\n Error = 2,\n}\n\nexport class DateUtilities {\n /**\n * Pads a number with leading zeros to reach a specified length.\n * @param num - The number to pad.\n * @param totalLength - The total length of the resulting string.\n * @returns The padded string.\n */\n static addStartingZeros(num: number, totalLength: number): string {\n return String(num).padStart(totalLength, '0');\n }\n\n /**\n * Formats a Date object as a Moncler-style string.\n * @param dData - The date to format.\n * @param bAddMs - Whether to include milliseconds.\n * @returns The formatted date string.\n */\n static dateToMoncler(dData: Date, bAddMs: boolean = false): string {\n const yy = dData.getFullYear();\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\n const dd = this.addStartingZeros(dData.getDate(), 2);\n const hh = this.addStartingZeros(dData.getHours(), 2);\n const nn = this.addStartingZeros(dData.getMinutes(), 2);\n const ss = this.addStartingZeros(dData.getSeconds(), 2);\n const ms = this.addStartingZeros(dData.getMilliseconds(), 3);\n return bAddMs ? `${yy}${mm}${dd}${hh}${nn}${ss}${ms}` : `${yy}${mm}${dd}${hh}${nn}${ss}`;\n }\n\n /**\n * Formats a Date object as a SQL-style string.\n * @param dData - The date to format.\n * @param bAddMs - Whether to include milliseconds.\n * @returns The formatted date string.\n */\n static dateToSql(dData: Date, bAddMs: boolean = false): string {\n const yy = dData.getFullYear();\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\n const dd = this.addStartingZeros(dData.getDate(), 2);\n const hh = this.addStartingZeros(dData.getHours(), 2);\n const nn = this.addStartingZeros(dData.getMinutes(), 2);\n const ss = this.addStartingZeros(dData.getSeconds(), 2);\n const ms = this.addStartingZeros(dData.getMilliseconds(), 3);\n return bAddMs\n ? `${yy}-${mm}-${dd} ${hh}:${nn}:${ss}.${ms}`\n : `${yy}-${mm}-${dd} ${hh}:${nn}:${ss}`;\n }\n\n /**\n * Formats a Date object as a simple string (dd-MM-yyyy).\n * @param dData - The date to format.\n * @returns The formatted date string.\n */\n static dateToSimple(dData: Date): string {\n const yy = dData.getFullYear();\n const mm = this.addStartingZeros(dData.getMonth() + 1, 2);\n const dd = this.addStartingZeros(dData.getDate(), 2);\n return `${dd}-${mm}-${yy}`;\n }\n\n /**\n * Gets the current date and time as a formatted string.\n * @returns The current date and time in the format dd.MM.yyyy HH:mm:ss.\n */\n static getNowDateString(): string {\n const now: Date = new Date();\n const day = now.getDate().toString().padStart(2, \"0\");\n const month = (now.getMonth() + 1).toString().padStart(2, \"0\");\n const year = now.getFullYear();\n const hours = now.getHours().toString().padStart(2, \"0\");\n const minutes = now.getMinutes().toString().padStart(2, \"0\");\n const seconds = now.getSeconds().toString().padStart(2, \"0\");\n return `${day}.${month}.${year} ${hours}:${minutes}:${seconds}`;\n }\n\n /**\n * Parses a date string in the format dd/MM/yyyy into a Date object.\n * @param date - The date string to parse.\n * @returns A Date object.\n */\n static parseDate(date: string): Date {\n const parts: string[] = date.split(\"/\");\n return new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));\n }\n}\n\n\nexport class RestUtilities {\n /**\n * Sends an OK message as a response.\n * @param res - Express Response object.\n * @param message - The success message.\n * @param status - HTTP success status. Defaults to 200; pass 201 only after creating a resource.\n * @returns The Response object.\n */\n static sendOKMessage(res: Response, message: string, status: number = 200): Response {\n return res.status(status).send({\n severity: \"success\",\n status,\n statusCode: StatusCode.Ok,\n message,\n });\n }\n\n /**\n * Sends an error message as a response.\n * @param res - Express Response object.\n * @param error - The error to send.\n * @param tag - Optional tag for additional context.\n * @param status - HTTP status code (default: 500).\n * @returns The Response object.\n */\n static sendErrorMessage(res: Response, error: unknown, _tag: string = \"[BASE ERROR]\", status: number = 500): Response {\n const rawMessage = error instanceof Error ? error.message : String(error ?? \"\");\n const errorWithResponse = error as { getResponse?: () => unknown } | null | undefined;\n const exceptionResponse = typeof errorWithResponse?.getResponse === \"function\"\n ? errorWithResponse.getResponse()\n : undefined;\n const exceptionPayload = exceptionResponse && typeof exceptionResponse === \"object\"\n ? exceptionResponse as { code?: unknown; message?: unknown; details?: unknown }\n : undefined;\n const explicitCode = typeof exceptionPayload?.code === \"string\" ? exceptionPayload.code : undefined;\n const explicitMessage = typeof exceptionPayload?.message === \"string\" ? exceptionPayload.message : undefined;\n const explicitDetails = Array.isArray(exceptionPayload?.details)\n ? exceptionPayload.details.filter((detail): detail is string => typeof detail === \"string\")\n : undefined;\n const schemaError = this.isDatabaseSchemaError(error);\n // Per le HttpException lo status corretto e quello dell'eccezione (es. 400 di validazione),\n // anche quando il chiamante non lo passa esplicitamente. Lo status esplicito vale per gli altri errori.\n const exceptionStatus = typeof errorWithResponse?.getResponse === \"function\"\n ? Number((error as { getStatus?: () => number }).getStatus?.())\n : undefined;\n const effectiveStatus = schemaError\n ? 503\n : Number.isInteger(exceptionStatus) && (exceptionStatus as number) >= 400\n ? (exceptionStatus as number)\n : status;\n const code = schemaError\n ? \"ACCESSI_DATABASE_SCHEMA_OUTDATED\"\n : explicitCode ?? (effectiveStatus >= 500\n ? \"ACCESSI_INTERNAL_ERROR\"\n : effectiveStatus === 401\n ? \"ACCESSI_UNAUTHORIZED\"\n : effectiveStatus === 403\n ? \"ACCESSI_FORBIDDEN\"\n : \"ACCESSI_REQUEST_ERROR\");\n const message = schemaError\n ? \"Lo schema del database Accessi non e aggiornato. Eseguire la migrazione database e riprovare.\"\n : explicitMessage ?? (effectiveStatus >= 500\n ? \"Errore interno del modulo Accessi.\"\n : effectiveStatus === 401\n ? \"Autenticazione non valida o scaduta.\"\n : effectiveStatus === 403\n ? \"Operazione non autorizzata.\"\n : rawMessage || \"Richiesta non valida.\");\n\n return res.status(effectiveStatus).send({\n severity: \"error\",\n status: effectiveStatus,\n statusCode: StatusCode.Error,\n code,\n message,\n // Compatibilita: il campo storico resta presente, ma non espone SQL, stack o dati sensibili.\n error: code,\n ...(explicitDetails?.length ? { details: explicitDetails } : {}),\n });\n }\n\n /** Riconosce errori di metadata Firebird che richiedono una migrazione. */\n static isDatabaseSchemaError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error ?? \"\");\n return /column unknown|table unknown|dynamic sql error|unsuccessful metadata update|invalid request blr/i.test(message);\n }\n\n\n static sendUnauthorized(res: Response): Response {\n return res.status(401).send({\n severity: \"error\",\n status: 401,\n statusCode: StatusCode.Error,\n code: \"ACCESSI_UNAUTHORIZED\",\n error: \"ACCESSI_UNAUTHORIZED\",\n message: \"Autenticazione non valida o scaduta.\",\n });\n }\n\n static sendInvalidCredentials(res: Response): Response {\n return res.status(401).send({\n severity: \"error\",\n status: 401,\n statusCode: StatusCode.Error,\n code: \"ACCESSI_INVALID_CREDENTIALS\",\n error: \"ACCESSI_INVALID_CREDENTIALS\",\n message: \"Credenziali non valide\",\n });\n }\n\n static sendPasswordExpired(res: Response): Response {\n return res.status(403).send({\n severity: \"warning\",\n status: 403,\n statusCode: StatusCode.Warning,\n code: \"PASSWORD_EXPIRED\",\n error: \"PASSWORD_EXPIRED\",\n message: \"Password scaduta. E' necessario aggiornarla\"\n })\n }\n\n /**\n * Sends a base response with a payload.\n * @param res - Express Response object.\n * @param payload - The payload to include in the response.\n * @param status - HTTP success status. Defaults to 200; pass 201 only after creating a resource.\n * @returns The Response object.\n */\n static sendBaseResponse(res: Response, payload: unknown, status: number = 200): Response {\n try {\n payload = JSON.parse(JSON.stringify(payload));\n const response = {\n Status: {\n errorCode: \"0\",\n errorDescription: \"\",\n },\n Result: payload,\n Message: \"Dati recuperati con successo.\",\n };\n return res.status(status).send(response);\n } catch (error) {\n return this.sendErrorMessage(res, `Error sending response: ${error}`, \"[UTILITIES]\", 500);\n }\n }\n\n /**\n * Sends an execution message as a response.\n * @param res - Express Response object.\n * @param executionObject - The execution data.\n * @param title - The title of the response.\n * @param status - HTTP success status. Defaults to 200.\n * @returns The Response object.\n */\n static sendExecMessage(res: Response, executionObject: unknown, title: string, status: number = 200): Response {\n try {\n const response = {\n Status: {\n errorCode: \"0\",\n errorDescription: \"\",\n },\n Sql: \"\",\n ID: (executionObject as { id?: unknown } | null | undefined)?.id,\n data: executionObject,\n Title: title,\n };\n return res.status(status).send(response);\n } catch (error) {\n return this.sendErrorMessage(res, `Error sending execution message: ${error}`, title, 500);\n }\n }\n\n /**\n * Prints a SQL query with parameters replaced. Replacement is literal: values\n * containing `?` or `$&` no longer corrupt the output as in the legacy\n * `String.replace` implementation.\n * @param query - The SQL query.\n * @param params - The parameters to replace.\n * @returns The formatted query.\n */\n static printQueryWithParams(query: string = \"\", params: unknown[] = []): string {\n let index = 0;\n return query.replace(/\\?/g, () => {\n if (index >= params.length) {\n return \"?\";\n }\n const param = params[index++];\n return param === undefined || param === null ? \"NULL\" : String(param);\n });\n }\n\n\n public static convertKeysToCamelCase<T = Record<string, unknown>>(obj: unknown): T {\n if (obj !== null && typeof obj === \"object\" && obj.constructor === Object) {\n const source = obj as Record<string, unknown>;\n const converted = Object.keys(source).reduce((acc: Record<string, unknown>, key: string) => {\n const camelCaseKey = key.toLowerCase().replace(/_([a-z])/g, g => (g[1] ?? '').toUpperCase());\n acc[camelCaseKey] = source[key];\n return acc;\n }, {});\n return converted as T;\n }\n return obj as T;\n }\n}\n\n\nexport class CryptUtilities {\n private static readonly logger = new Logger(CryptUtilities.name);\n\n /**\n * Cifra un testo in chiaro usando l'algoritmo AES-128 in modalità ECB.\n * \n * @param plainText - Il testo in chiaro da cifrare.\n * @param key - La chiave di cifratura (16 byte per AES-128).\n * @param outputEncoding - Codifica del risultato cifrato (predefinito: \"base64\").\n * @returns Il testo cifrato codificato.\n * @throws Errore in caso di problemi durante la cifratura.\n */\n public static encrypt(plainData: string, key: string, outputEncoding: BufferEncoding = \"base64\"): string {\n try {\n // Crea un oggetto Cipher usando AES-128 in modalità ECB\n const cipher = crypto.createCipheriv(\"aes-128-ecb\", Buffer.from(key, \"utf8\"), null);\n\n // Cifra il testo in chiaro e finalizza il processo\n const encryptedBuffer = Buffer.concat([\n cipher.update(plainData, \"utf8\"),\n cipher.final(),\n ]);\n\n // Restituisce il risultato cifrato codificato\n return encryptedBuffer.toString(outputEncoding);\n } catch (error) {\n // Gestisce eventuali errori di cifratura\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Errore durante la cifratura: ${message}`);\n }\n }\n\n /**\n * Decifra un testo cifrato usando l'algoritmo AES-128 in modalità ECB.\n * \n * @param encryptedData - Il testo cifrato da decifrare.\n * @param key - La chiave di decifratura (16 byte per AES-128).\n * @returns Il testo decifrato o null in caso di errore.\n */\n public static decrypt(encryptedData: string, key: string): string | null {\n try {\n // Crea un oggetto Decipher usando AES-128 in modalità ECB\n const decipher = crypto.createDecipheriv(\"aes-128-ecb\", Buffer.from(key, \"utf8\"), null);\n decipher.setAutoPadding(false);\n\n // Decifra il testo cifrato\n let decoded = decipher.update(encryptedData, \"base64\", \"utf8\");\n decoded += decipher.final(\"utf8\");\n\n // Rimuove il padding manuale\n const lastChar = decoded.charCodeAt(decoded.length - 1);\n decoded = decoded.slice(0, decoded.length - lastChar);\n\n return decoded;\n } catch (error) {\n CryptUtilities.logger.error(\"Errore durante la decifratura:\", error);\n return null;\n }\n }\n}\n\nexport class PasswordUtilities {\n private static readonly HASH_PREFIX = \"scrypt\";\n private static readonly LEGACY_HASH_PREFIX = \"scrypt-legacy\";\n private static readonly SCRYPT_N = 16384;\n private static readonly SCRYPT_R = 8;\n private static readonly SCRYPT_P = 1;\n private static readonly SALT_LENGTH = 16;\n\n private static hashSecret(secretValue: string, prefix: string): string {\n if (typeof secretValue !== \"string\" || secretValue.length === 0) {\n throw new Error(\"Il valore da proteggere non puo essere vuoto.\");\n }\n const salt = crypto.randomBytes(this.SALT_LENGTH).toString(\"hex\");\n const derivedKey = crypto.scryptSync(\n secretValue,\n salt,\n 64,\n {\n N: this.SCRYPT_N,\n r: this.SCRYPT_R,\n p: this.SCRYPT_P,\n maxmem: 64 * 1024 * 1024,\n },\n );\n\n return [\n prefix,\n this.SCRYPT_N,\n this.SCRYPT_R,\n this.SCRYPT_P,\n salt,\n derivedKey.toString(\"hex\"),\n ].join(\"$\");\n }\n\n private static hasPrefix(value: string, prefix: string): boolean {\n return typeof value === \"string\" && value.startsWith(`${prefix}$`);\n }\n\n private static parseHash(\n storedPassword: string,\n expectedPrefix: string\n ): {\n salt: string;\n expectedHash: Buffer;\n N: number;\n r: number;\n p: number;\n } | null {\n if (!this.hasPrefix(storedPassword, expectedPrefix)) {\n return null;\n }\n\n const [, rawN, rawR, rawP, salt, expectedHashHex] = storedPassword.split(\"$\");\n const N = Number(rawN);\n const r = Number(rawR);\n const p = Number(rawP);\n\n if (!salt || !expectedHashHex || !Number.isFinite(N) || !Number.isFinite(r) || !Number.isFinite(p)) {\n return null;\n }\n\n const expectedHash = Buffer.from(expectedHashHex, \"hex\");\n if (expectedHash.length === 0) {\n return null;\n }\n\n return {\n salt,\n expectedHash,\n N,\n r,\n p,\n };\n }\n\n private static verifySecret(secretValue: string, storedPassword: string, expectedPrefix: string): boolean {\n if (typeof secretValue !== \"string\") {\n return false;\n }\n\n const parsedHash = this.parseHash(storedPassword, expectedPrefix);\n if (!parsedHash) {\n return false;\n }\n\n const derivedKey = crypto.scryptSync(\n secretValue,\n parsedHash.salt,\n parsedHash.expectedHash.length,\n {\n N: parsedHash.N,\n r: parsedHash.r,\n p: parsedHash.p,\n maxmem: 64 * 1024 * 1024,\n },\n );\n\n return crypto.timingSafeEqual(derivedKey, parsedHash.expectedHash);\n }\n\n public static hashPassword(plainPassword: string): string {\n return this.hashSecret(plainPassword, this.HASH_PREFIX);\n }\n\n public static hashLegacyEncryptedPassword(legacyEncryptedPassword: string): string {\n return this.hashSecret(legacyEncryptedPassword, this.LEGACY_HASH_PREFIX);\n }\n\n public static isPasswordHash(value: string): boolean {\n return this.hasPrefix(value, this.HASH_PREFIX);\n }\n\n public static isLegacyPasswordHash(value: string): boolean {\n return this.hasPrefix(value, this.LEGACY_HASH_PREFIX);\n }\n\n /** Confronto a tempo costante tra due stringhe (per dati legacy non hashati). */\n public static timingSafeStringEquals(value: string, candidate: string): boolean {\n if (typeof value !== \"string\" || typeof candidate !== \"string\") {\n return false;\n }\n\n const valueBuffer = Buffer.from(value, \"utf8\");\n const candidateBuffer = Buffer.from(candidate, \"utf8\");\n\n if (valueBuffer.length !== candidateBuffer.length) {\n // Confronta comunque per non rivelare la lunghezza tramite timing.\n crypto.timingSafeEqual(valueBuffer, valueBuffer);\n return false;\n }\n\n return crypto.timingSafeEqual(valueBuffer, candidateBuffer);\n }\n\n public static verifyPassword(plainPassword: string, storedPassword: string): boolean {\n return this.verifySecret(plainPassword, storedPassword, this.HASH_PREFIX);\n }\n\n public static verifyLegacyEncryptedPassword(\n legacyEncryptedPassword: string,\n storedPassword: string\n ): boolean {\n return this.verifySecret(legacyEncryptedPassword, storedPassword, this.LEGACY_HASH_PREFIX);\n }\n}\n\n\n\n\n\n/**\n * Utility class for managing database-related configurations and operations.\n */\nexport class DatabaseUtilities {\n /**\n * Creates a configuration object for connecting to a Firebird database.\n *\n * @param {string} host - The hostname or IP address of the database server.\n * @param {number} port - The port number on which the database server is running.\n * @param {string} database - The path or alias of the database to connect to.\n * @param {string} [username='SYSDBA'] - The username for authentication. Defaults to 'SYSDBA'.\n * @param {string} [password='masterkey'] - The password for authentication. Defaults to 'masterkey'.\n * @returns {Options} - The configuration object to use for establishing a Firebird database connection.\n *\n * @example\n * ```typescript\n * const options = DatabaseUtilities.createOption(\n * 'localhost',\n * 3050,\n * '/path/to/database.fdb',\n * 'myUsername',\n * 'myPassword'\n * );\n * ```\n */\n public static createOption(\n host: string,\n port: number,\n database: string,\n username = 'SYSDBA',\n password = 'masterkey'\n ): FirebirdOptions {\n return {\n host, // The hostname or IP address of the database server.\n port, // The port number used by the database server.\n user: username, // The username for database authentication.\n password, // The password for database authentication.\n database, // The path or alias of the target database.\n lowercase_keys: false, // Determines if the keys in query results should be in lowercase. Default: false.\n role: undefined, // The role for the database connection. Default: undefined.\n pageSize: 100000, // The page size for database transactions. Default: 100,000.\n retryConnectionInterval: 1000, // The interval (in ms) to retry a failed connection. Default: 1,000 ms.\n blobAsText: true, // Determines if BLOB fields should be treated as text. Default: true.\n connectTimeout: 15000,\n connectTimeoutMs: 15000,\n trimStringResults: true,\n };\n }\n}\n\nconst deprecationLogger = new Logger('Deprecated');\n\nexport function Deprecated(message: string) {\n return function (target: object, key?: string, descriptor?: PropertyDescriptor) {\n void target;\n void key;\n void descriptor;\n deprecationLogger.warning(`[DEPRECATED] ${message}`);\n };\n }\n"]}
@@ -4,12 +4,16 @@
4
4
  * @module AccessiModule
5
5
  * @author mttdev382
6
6
  */
7
- import { Options } from 'es-node-firebird';
7
+ import { Options } from 'node-firebird';
8
8
  import { DynamicModule } from '@nestjs/common';
9
+ /** JWT emesso da Accessi dopo un login locale o SSO. Non riutilizzare il segreto del provider SSO. */
9
10
  export interface JwtOptions {
11
+ /** Segreto simmetrico per firmare e verificare i JWT Accessi; deve essere unico per ambiente. */
10
12
  secret: string;
13
+ /** Durata compatibile con `jsonwebtoken`, per esempio `24h` o `3600s`. */
11
14
  expiresIn: string;
12
15
  }
16
+ /** Parametri SMTP usati esclusivamente per impostazione e reset della password. */
13
17
  export interface EmailOptions {
14
18
  host: string;
15
19
  port: number;
@@ -24,17 +28,25 @@ export interface EmailOptions {
24
28
  pass: string;
25
29
  };
26
30
  }
31
+ /** Configura campi applicativi aggiuntivi restituiti insieme al profilo Accessi. */
27
32
  export interface ExtensionFieldsOptions {
33
+ /** Connessione al database contenente la tabella estesa. */
28
34
  databaseOptions: Options;
35
+ /** Chiave con cui i dati saranno esposti nella risposta. */
29
36
  objectKey: string;
37
+ /** Tabella applicativa contenente i dati estesi. */
30
38
  tableName: string;
39
+ /** Colonne consentite; non valorizzarle mai con input HTTP. */
31
40
  tableFields: string[];
41
+ /** Colonna correlata a `UTENTI.CODUTE`. */
32
42
  tableJoinFieldName: string;
33
43
  }
44
+ /** Limite per una singola categoria di endpoint pubblici. */
34
45
  export interface PublicAuthRateLimitRuleOptions {
35
46
  windowMs: number;
36
47
  maxAttempts: number;
37
48
  }
49
+ /** Protezione in-memory degli endpoint pubblici. In cluster aggiungere un limite anche al gateway. */
38
50
  export interface PublicAuthRateLimitOptions {
39
51
  enabled?: boolean;
40
52
  login?: PublicAuthRateLimitRuleOptions;
@@ -42,8 +54,42 @@ export interface PublicAuthRateLimitOptions {
42
54
  passwordResetEmail?: PublicAuthRateLimitRuleOptions;
43
55
  passwordResetConfirm?: PublicAuthRateLimitRuleOptions;
44
56
  getUserByToken?: PublicAuthRateLimitRuleOptions;
57
+ twoFactorVerify?: PublicAuthRateLimitRuleOptions;
58
+ twoFactorResend?: PublicAuthRateLimitRuleOptions;
45
59
  }
60
+ /** Controls the legacy public username/password registration endpoint. Disabled by default. */
61
+ export interface PublicRegistrationOptions {
62
+ /** Enables POST /accessi/user/register. Applications that used it before must opt in explicitly. */
63
+ enabled?: boolean;
64
+ }
65
+ /** Configurazione dei token di servizio (macchina-a-macchina, senza utente). */
66
+ export interface ServiceTokenOptions {
67
+ /** Abilita gli endpoint amministrativi dei service token. Default `true`. */
68
+ enabled?: boolean;
69
+ /** Durata predefinita in giorni quando non e indicata una scadenza esplicita. Default: nessuna scadenza. */
70
+ defaultTtlDays?: number;
71
+ }
72
+ /**
73
+ * Enables Accessi's provider-agnostic federated identity capability.
74
+ *
75
+ * Accessi never validates Azure, Google, Apple, SAML, or other provider tokens.
76
+ * The hosting backend must validate its own SSO flow and pass only a verified
77
+ * `{ provider, subject }` identity to FederatedAuthService.
78
+ */
79
+ export interface FederatedAuthenticationOptions {
80
+ /** Attiva le API SSO generiche; con `false` il comportamento password storico rimane invariato. */
81
+ enabled?: boolean;
82
+ /** @deprecated Schema management is centralized in autoUpdateDatabase. This legacy flag no longer starts separate SSO migrations. */
83
+ autoUpdateSchema?: boolean;
84
+ /** Allows a backend to create a user from a verified external identity without a master user. Default false. */
85
+ allowSelfRegistration?: boolean;
86
+ }
87
+ /**
88
+ * Configurazione completa del modulo Accessi, fornita esclusivamente dal backend ospitante.
89
+ * Segreti JWT, SMTP, database e le configurazioni tecniche dei provider SSO non devono mai raggiungere il browser.
90
+ */
46
91
  export interface AccessiOptions {
92
+ /** Connessione Firebird alla base dati Accessi. */
47
93
  databaseOptions: Options;
48
94
  /**
49
95
  * Basepath del sito es: 'http://www.il-mio-sito.it/nome-progetto(se c'è)'
@@ -54,19 +100,42 @@ export interface AccessiOptions {
54
100
  * N.B si sostituisce al confirmationMailURl
55
101
  */
56
102
  customResetPage?: string;
103
+ /** URL di ritorno della pagina standard di reset dopo il completamento. */
57
104
  confirmationEmailReturnUrl: string;
105
+ /** Prefisso applicativo facoltativo trasmesso alla pagina standard di reset. */
58
106
  confirmationEmailPrefix?: string;
107
+ /** Chiave riservata alla compatibilita e alla migrazione delle password legacy cifrate. */
59
108
  encryptionKey: string;
109
+ /** Abilita gli utenti fittizi `admin` e `demo` solo fuori produzione. */
60
110
  mockDemoUser: boolean;
111
+ /** Attiva il controllo della scadenza password durante il login locale. */
61
112
  passwordExpiration?: boolean;
113
+ /** Giorni di validita della password; quando assente Accessi usa 90 giorni. */
62
114
  passwordExpirationDays?: number;
115
+ /** Esegue al bootstrap la conversione non distruttiva delle password legacy. Default `true`. */
63
116
  legacyPasswordMigrationOnStartup?: boolean;
117
+ /** Riconcilia lo schema al bootstrap (default `true`). Con `false` verifica comunque la compatibilita in sola lettura e blocca avvii incompatibili. */
64
118
  autoUpdateDatabase?: boolean;
119
+ /** Parametri JWT dei token emessi da Accessi. */
65
120
  jwtOptions: JwtOptions;
121
+ /** Parametri SMTP per reset e attivazione password. */
66
122
  emailOptions: EmailOptions;
67
123
  publicAuthRateLimit?: PublicAuthRateLimitOptions;
124
+ /** Public local registration is deliberately opt-in. Existing applications must set enabled: true to retain it. */
125
+ publicRegistration?: PublicRegistrationOptions;
126
+ /** Optional provider-agnostic SSO support. Provider-specific configuration remains in the hosting backend. */
127
+ federatedAuthentication?: FederatedAuthenticationOptions;
68
128
  extensionFieldsOptions?: ExtensionFieldsOptions[];
129
+ /** Token di servizio per chiamate tecniche macchina-a-macchina. Abilitati di default. */
130
+ serviceTokens?: ServiceTokenOptions;
69
131
  }
70
132
  export declare class AccessiModule {
133
+ /**
134
+ * Registra Accessi nel contenitore Nest del backend ospitante.
135
+ *
136
+ * Usare questo metodo una sola volta nella composizione dell'applicazione. Per un backend
137
+ * Express esistente usare invece `initializeAccessiModule`, che crea e monta l'host Nest interno.
138
+ * La configurazione viene registrata con il token DI `ACCESSI_OPTIONS` ed e condivisa dai servizi.
139
+ */
71
140
  static forRoot(options: AccessiOptions): DynamicModule;
72
141
  }
@@ -8,6 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var AccessiModule_1;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.AccessiModule = void 0;
11
+ const TwoFactorService_1 = require("./Services/TwoFactorService/TwoFactorService");
11
12
  const common_1 = require("@nestjs/common");
12
13
  const AuthService_1 = require("./Services/AuthService/AuthService");
13
14
  const EmailService_1 = require("./Services/EmailService/EmailService");
@@ -24,8 +25,24 @@ const ConfiguratorService_1 = require("./Services/ConfiguratorService/Configurat
24
25
  const jwt_strategy_1 = require("./jwt/jwt.strategy");
25
26
  const authenticateGen_1 = require("./middleware/authenticateGen");
26
27
  const AccessiDatabaseUpdater_1 = require("./database-updates/AccessiDatabaseUpdater");
28
+ const FederatedAuthService_1 = require("./federated-auth/FederatedAuthService");
29
+ const FederatedAuthController_1 = require("./federated-auth/FederatedAuthController");
30
+ const AccessiConsoleController_1 = require("./Controllers/AccessiConsoleController");
31
+ const ServiceTokenController_1 = require("./Controllers/ServiceTokenController");
32
+ const ServiceTokenService_1 = require("./Services/ServiceTokenService/ServiceTokenService");
33
+ const serviceTokenGuard_1 = require("./security/serviceTokenGuard");
34
+ const emailConfiguration_1 = require("./security/emailConfiguration");
27
35
  let AccessiModule = AccessiModule_1 = class AccessiModule {
36
+ /**
37
+ * Registra Accessi nel contenitore Nest del backend ospitante.
38
+ *
39
+ * Usare questo metodo una sola volta nella composizione dell'applicazione. Per un backend
40
+ * Express esistente usare invece `initializeAccessiModule`, che crea e monta l'host Nest interno.
41
+ * La configurazione viene registrata con il token DI `ACCESSI_OPTIONS` ed e condivisa dai servizi.
42
+ */
28
43
  static forRoot(options) {
44
+ // Il servizio email e obbligatorio: reset password, 2FA e creazione utente ne dipendono.
45
+ (0, emailConfiguration_1.assertEmailConfigured)(options);
29
46
  return {
30
47
  module: AccessiModule_1,
31
48
  providers: [
@@ -34,6 +51,7 @@ let AccessiModule = AccessiModule_1 = class AccessiModule {
34
51
  useValue: options,
35
52
  },
36
53
  AuthService_1.AuthService,
54
+ TwoFactorService_1.TwoFactorService,
37
55
  UserService_1.UserService,
38
56
  EmailService_1.EmailService,
39
57
  PermissionService_1.PermissionService,
@@ -41,7 +59,10 @@ let AccessiModule = AccessiModule_1 = class AccessiModule {
41
59
  ConfiguratorService_1.ConfiguratorService,
42
60
  jwt_strategy_1.JwtSimpleGuard,
43
61
  authenticateGen_1.AuthenticateGenService,
44
- AccessiDatabaseUpdater_1.AccessiDatabaseUpdater
62
+ AccessiDatabaseUpdater_1.AccessiDatabaseUpdater,
63
+ FederatedAuthService_1.FederatedAuthService,
64
+ ServiceTokenService_1.ServiceTokenService,
65
+ serviceTokenGuard_1.ServiceTokenGuard
45
66
  ],
46
67
  exports: [
47
68
  'ACCESSI_OPTIONS',
@@ -52,7 +73,10 @@ let AccessiModule = AccessiModule_1 = class AccessiModule {
52
73
  FiltriService_1.FiltriService,
53
74
  ConfiguratorService_1.ConfiguratorService,
54
75
  jwt_strategy_1.JwtSimpleGuard,
55
- authenticateGen_1.AuthenticateGenService
76
+ authenticateGen_1.AuthenticateGenService,
77
+ FederatedAuthService_1.FederatedAuthService,
78
+ ServiceTokenService_1.ServiceTokenService,
79
+ serviceTokenGuard_1.ServiceTokenGuard
56
80
  ],
57
81
  };
58
82
  }
@@ -67,10 +91,13 @@ exports.AccessiModule = AccessiModule = AccessiModule_1 = __decorate([
67
91
  PermissionController_1.PermissionController,
68
92
  UserController_1.UserController,
69
93
  FiltriController_1.FiltriController,
70
- ConfiguratorController_1.ConfiguratorController
94
+ ConfiguratorController_1.ConfiguratorController,
95
+ FederatedAuthController_1.FederatedAuthController,
96
+ AccessiConsoleController_1.AccessiConsoleController,
97
+ ServiceTokenController_1.ServiceTokenController,
71
98
  ],
72
- providers: [AuthService_1.AuthService, UserService_1.UserService, EmailService_1.EmailService, PermissionService_1.PermissionService, FiltriService_1.FiltriService, ConfiguratorService_1.ConfiguratorService, jwt_strategy_1.JwtSimpleGuard, authenticateGen_1.AuthenticateGenService, AccessiDatabaseUpdater_1.AccessiDatabaseUpdater],
73
- exports: [AuthService_1.AuthService, UserService_1.UserService, EmailService_1.EmailService, PermissionService_1.PermissionService, FiltriService_1.FiltriService, ConfiguratorService_1.ConfiguratorService, jwt_strategy_1.JwtSimpleGuard, authenticateGen_1.AuthenticateGenService],
99
+ providers: [AuthService_1.AuthService, TwoFactorService_1.TwoFactorService, UserService_1.UserService, EmailService_1.EmailService, PermissionService_1.PermissionService, FiltriService_1.FiltriService, ConfiguratorService_1.ConfiguratorService, jwt_strategy_1.JwtSimpleGuard, authenticateGen_1.AuthenticateGenService, AccessiDatabaseUpdater_1.AccessiDatabaseUpdater, FederatedAuthService_1.FederatedAuthService, ServiceTokenService_1.ServiceTokenService, serviceTokenGuard_1.ServiceTokenGuard],
100
+ exports: [AuthService_1.AuthService, UserService_1.UserService, EmailService_1.EmailService, PermissionService_1.PermissionService, FiltriService_1.FiltriService, ConfiguratorService_1.ConfiguratorService, jwt_strategy_1.JwtSimpleGuard, authenticateGen_1.AuthenticateGenService, FederatedAuthService_1.FederatedAuthService, ServiceTokenService_1.ServiceTokenService, serviceTokenGuard_1.ServiceTokenGuard],
74
101
  })
75
102
  ], AccessiModule);
76
103
  //# sourceMappingURL=AccessiModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessiModule.js","sourceRoot":"","sources":["../../src/accessi-module/AccessiModule.ts"],"names":[],"mappings":";;;;;;;;;;AAOA,2CAA+D;AAC/D,oEAAiE;AACjE,uEAAoE;AACpE,sFAAmF;AACnF,oEAAiE;AACjE,mEAAgE;AAChE,iEAA8D;AAC9D,6EAA0E;AAC1E,iEAA8D;AAC9D,0EAAuE;AACvE,qEAAkE;AAClE,iFAA8E;AAC9E,4FAAyF;AACzF,qDAAoD;AACpD,kEAAsE;AACtE,sFAAmF;AAkF5E,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB,MAAM,CAAC,OAAO,CAAC,OAAuB;QACpC,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,OAAO;iBAClB;gBACD,yBAAW;gBACX,yBAAW;gBACX,2BAAY;gBACZ,qCAAiB;gBACjB,6BAAa;gBACb,yCAAmB;gBACnB,6BAAc;gBACd,wCAAsB;gBACtB,+CAAsB;aACvB;YACD,OAAO,EAAE;gBACP,iBAAiB;gBACjB,yBAAW;gBACX,yBAAW;gBACX,2BAAY;gBACZ,qCAAiB;gBACjB,6BAAa;gBACb,yCAAmB;gBACnB,6BAAc;gBACd,wCAAsB;aACvB;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,sCAAa;wBAAb,aAAa;IAbzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,WAAW,EAAE;YACX,iCAAe;YACf,+BAAc;YACd,2CAAoB;YACpB,+BAAc;YACd,mCAAgB;YAChB,+CAAsB;SACvB;QACD,SAAS,EAAE,CAAC,yBAAW,EAAE,yBAAW,EAAE,2BAAY,EAAE,qCAAiB,EAAE,6BAAa,EAAE,yCAAmB,EAAE,6BAAc,EAAE,wCAAsB,EAAE,+CAAsB,CAAC;QAC1K,OAAO,EAAE,CAAC,yBAAW,EAAE,yBAAW,EAAE,2BAAY,EAAE,qCAAiB,EAAE,6BAAa,EAAE,yCAAmB,EAAE,6BAAc,EAAE,wCAAsB,CAAC;KACjJ,CAAC;GACW,aAAa,CAgCzB","sourcesContent":["/**\r\n * Modulo che gestisce le operazioni di accesso degli utenti, incluse le rotte, il controller e il modello.\r\n *\r\n * @module AccessiModule\r\n * @author mttdev382\r\n */\r\nimport { Options } from 'es-node-firebird';\r\nimport { DynamicModule, Global, Module } from '@nestjs/common';\r\nimport { AuthService } from './Services/AuthService/AuthService';\r\nimport { EmailService } from './Services/EmailService/EmailService';\r\nimport { PermissionService } from './Services/PermissionService/PermissionService';\r\nimport { UserService } from './Services/UserService/UserService';\r\nimport { EmailController } from './Controllers/EmailController';\r\nimport { AuthController } from './Controllers/AuthController';\r\nimport { PermissionController } from './Controllers/PermissionController';\r\nimport { UserController } from './Controllers/UserController';\r\nimport { FiltriService } from './Services/FiltriService/FiltriService';\r\nimport { FiltriController } from './Controllers/FiltriController';\r\nimport { ConfiguratorController } from './Controllers/ConfiguratorController';\r\nimport { ConfiguratorService } from './Services/ConfiguratorService/ConfiguratorService';\r\nimport { JwtSimpleGuard } from './jwt/jwt.strategy';\r\nimport { AuthenticateGenService } from './middleware/authenticateGen';\r\nimport { AccessiDatabaseUpdater } from './database-updates/AccessiDatabaseUpdater';\r\n\r\nexport interface JwtOptions {\r\n secret: string;\r\n expiresIn: string;\r\n}\r\n\r\nexport interface EmailOptions {\r\n host: string;\r\n port: number;\r\n secure: boolean;\r\n requireTLS : boolean;\r\n tls: {\r\n rejectUnauthorized: boolean,\r\n }\r\n from: string;\r\n auth: {\r\n user: string;\r\n pass: string;\r\n };\r\n}\r\n\r\nexport interface ExtensionFieldsOptions {\r\n databaseOptions: Options;\r\n objectKey: string;\r\n tableName: string;\r\n tableFields: string[];\r\n tableJoinFieldName: string;\r\n}\r\n\r\nexport interface PublicAuthRateLimitRuleOptions {\r\n windowMs: number;\r\n maxAttempts: number;\r\n}\r\n\r\nexport interface PublicAuthRateLimitOptions {\r\n enabled?: boolean;\r\n login?: PublicAuthRateLimitRuleOptions;\r\n register?: PublicAuthRateLimitRuleOptions;\r\n passwordResetEmail?: PublicAuthRateLimitRuleOptions;\r\n passwordResetConfirm?: PublicAuthRateLimitRuleOptions;\r\n getUserByToken?: PublicAuthRateLimitRuleOptions;\r\n}\r\n\r\nexport interface AccessiOptions {\r\n databaseOptions: Options;\r\n /**\r\n * Basepath del sito es: 'http://www.il-mio-sito.it/nome-progetto(se c'è)'\r\n */\r\n confirmationEmailUrl: string;\r\n /**\r\n * Percorso della pagina di reset personalizzata es. http://localhost:4200/#/admin/reset-password\r\n * N.B si sostituisce al confirmationMailURl\r\n */\r\n customResetPage?: string;\r\n confirmationEmailReturnUrl: string;\r\n confirmationEmailPrefix?: string;\r\n encryptionKey: string;\r\n mockDemoUser: boolean;\r\n passwordExpiration?: boolean;\n passwordExpirationDays?: number;\n legacyPasswordMigrationOnStartup?: boolean;\n autoUpdateDatabase?: boolean;\n jwtOptions: JwtOptions;\r\n emailOptions: EmailOptions;\r\n publicAuthRateLimit?: PublicAuthRateLimitOptions;\r\n extensionFieldsOptions?: ExtensionFieldsOptions[];\r\n}\r\n\r\n@Global()\r\n@Module({\r\n controllers: [\r\n EmailController,\r\n AuthController,\r\n PermissionController,\r\n UserController,\r\n FiltriController,\r\n ConfiguratorController\r\n ],\r\n providers: [AuthService, UserService, EmailService, PermissionService, FiltriService, ConfiguratorService, JwtSimpleGuard, AuthenticateGenService, AccessiDatabaseUpdater],\r\n exports: [AuthService, UserService, EmailService, PermissionService, FiltriService, ConfiguratorService, JwtSimpleGuard, AuthenticateGenService],\r\n})\r\nexport class AccessiModule {\r\n static forRoot(options: AccessiOptions): DynamicModule {\r\n return {\r\n module: AccessiModule,\r\n providers: [\r\n {\r\n provide: 'ACCESSI_OPTIONS',\r\n useValue: options,\r\n },\r\n AuthService,\r\n UserService,\r\n EmailService,\r\n PermissionService,\r\n FiltriService,\r\n ConfiguratorService,\r\n JwtSimpleGuard,\r\n AuthenticateGenService,\r\n AccessiDatabaseUpdater\r\n ],\r\n exports: [\r\n 'ACCESSI_OPTIONS',\r\n AuthService,\r\n UserService,\r\n EmailService,\r\n PermissionService,\r\n FiltriService,\r\n ConfiguratorService,\r\n JwtSimpleGuard,\r\n AuthenticateGenService\r\n ],\r\n };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AccessiModule.js","sourceRoot":"","sources":["../../src/accessi-module/AccessiModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,mFAAgF;AAQhF,2CAA+D;AAC/D,oEAAiE;AACjE,uEAAoE;AACpE,sFAAmF;AACnF,oEAAiE;AACjE,mEAAgE;AAChE,iEAA8D;AAC9D,6EAA0E;AAC1E,iEAA8D;AAC9D,0EAAuE;AACvE,qEAAkE;AAClE,iFAA8E;AAC9E,4FAAyF;AACzF,qDAAoD;AACpD,kEAAsE;AACtE,sFAAmF;AACnF,gFAA6E;AAC7E,sFAAmF;AACnF,qFAAkF;AAClF,iFAA8E;AAC9E,4FAAyF;AACzF,oEAAiE;AACjE,sEAAsE;AAsJ/D,IAAM,aAAa,qBAAnB,MAAM,aAAa;IACxB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,OAAuB;QACpC,yFAAyF;QACzF,IAAA,0CAAqB,EAAC,OAAO,CAAC,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,eAAa;YACrB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,QAAQ,EAAE,OAAO;iBAClB;gBACD,yBAAW;gBACX,mCAAgB;gBAChB,yBAAW;gBACX,2BAAY;gBACZ,qCAAiB;gBACjB,6BAAa;gBACb,yCAAmB;gBACnB,6BAAc;gBACd,wCAAsB;gBACtB,+CAAsB;gBACtB,2CAAoB;gBACpB,yCAAmB;gBACnB,qCAAiB;aAClB;YACD,OAAO,EAAE;gBACP,iBAAiB;gBACjB,yBAAW;gBACX,yBAAW;gBACX,2BAAY;gBACZ,qCAAiB;gBACjB,6BAAa;gBACb,yCAAmB;gBACnB,6BAAc;gBACd,wCAAsB;gBACtB,2CAAoB;gBACpB,yCAAmB;gBACnB,qCAAiB;aAClB;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAhDY,sCAAa;wBAAb,aAAa;IAhBzB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,WAAW,EAAE;YACX,iCAAe;YACf,+BAAc;YACd,2CAAoB;YACpB,+BAAc;YACd,mCAAgB;YAChB,+CAAsB;YACtB,iDAAuB;YACvB,mDAAwB;YACxB,+CAAsB;SACvB;QACD,SAAS,EAAE,CAAC,yBAAW,EAAE,mCAAgB,EAAE,yBAAW,EAAE,2BAAY,EAAE,qCAAiB,EAAE,6BAAa,EAAE,yCAAmB,EAAE,6BAAc,EAAE,wCAAsB,EAAE,+CAAsB,EAAE,2CAAoB,EAAE,yCAAmB,EAAE,qCAAiB,CAAC;QAC1P,OAAO,EAAE,CAAC,yBAAW,EAAE,yBAAW,EAAE,2BAAY,EAAE,qCAAiB,EAAE,6BAAa,EAAE,yCAAmB,EAAE,6BAAc,EAAE,wCAAsB,EAAE,2CAAoB,EAAE,yCAAmB,EAAE,qCAAiB,CAAC;KAC/M,CAAC;GACW,aAAa,CAgDzB","sourcesContent":["import { TwoFactorService } from './Services/TwoFactorService/TwoFactorService';\n/**\n * Modulo che gestisce le operazioni di accesso degli utenti, incluse le rotte, il controller e il modello.\n *\n * @module AccessiModule\n * @author mttdev382\n */\nimport { Options } from 'node-firebird';\nimport { DynamicModule, Global, Module } from '@nestjs/common';\nimport { AuthService } from './Services/AuthService/AuthService';\nimport { EmailService } from './Services/EmailService/EmailService';\nimport { PermissionService } from './Services/PermissionService/PermissionService';\nimport { UserService } from './Services/UserService/UserService';\nimport { EmailController } from './Controllers/EmailController';\nimport { AuthController } from './Controllers/AuthController';\nimport { PermissionController } from './Controllers/PermissionController';\nimport { UserController } from './Controllers/UserController';\nimport { FiltriService } from './Services/FiltriService/FiltriService';\nimport { FiltriController } from './Controllers/FiltriController';\nimport { ConfiguratorController } from './Controllers/ConfiguratorController';\nimport { ConfiguratorService } from './Services/ConfiguratorService/ConfiguratorService';\nimport { JwtSimpleGuard } from './jwt/jwt.strategy';\nimport { AuthenticateGenService } from './middleware/authenticateGen';\nimport { AccessiDatabaseUpdater } from './database-updates/AccessiDatabaseUpdater';\nimport { FederatedAuthService } from './federated-auth/FederatedAuthService';\nimport { FederatedAuthController } from './federated-auth/FederatedAuthController';\nimport { AccessiConsoleController } from './Controllers/AccessiConsoleController';\nimport { ServiceTokenController } from './Controllers/ServiceTokenController';\nimport { ServiceTokenService } from './Services/ServiceTokenService/ServiceTokenService';\nimport { ServiceTokenGuard } from './security/serviceTokenGuard';\nimport { assertEmailConfigured } from './security/emailConfiguration';\n\n/** JWT emesso da Accessi dopo un login locale o SSO. Non riutilizzare il segreto del provider SSO. */\nexport interface JwtOptions {\n /** Segreto simmetrico per firmare e verificare i JWT Accessi; deve essere unico per ambiente. */\n secret: string;\n /** Durata compatibile con `jsonwebtoken`, per esempio `24h` o `3600s`. */\n expiresIn: string;\n}\n\n/** Parametri SMTP usati esclusivamente per impostazione e reset della password. */\nexport interface EmailOptions {\n host: string;\n port: number;\n secure: boolean;\n requireTLS : boolean;\n tls: {\n rejectUnauthorized: boolean,\n }\n from: string;\n auth: {\n user: string;\n pass: string;\n };\n}\n\n/** Configura campi applicativi aggiuntivi restituiti insieme al profilo Accessi. */\nexport interface ExtensionFieldsOptions {\n /** Connessione al database contenente la tabella estesa. */\n databaseOptions: Options;\n /** Chiave con cui i dati saranno esposti nella risposta. */\n objectKey: string;\n /** Tabella applicativa contenente i dati estesi. */\n tableName: string;\n /** Colonne consentite; non valorizzarle mai con input HTTP. */\n tableFields: string[];\n /** Colonna correlata a `UTENTI.CODUTE`. */\n tableJoinFieldName: string;\n}\n\n/** Limite per una singola categoria di endpoint pubblici. */\nexport interface PublicAuthRateLimitRuleOptions {\n windowMs: number;\n maxAttempts: number;\n}\n\n/** Protezione in-memory degli endpoint pubblici. In cluster aggiungere un limite anche al gateway. */\nexport interface PublicAuthRateLimitOptions {\n enabled?: boolean;\n login?: PublicAuthRateLimitRuleOptions;\n register?: PublicAuthRateLimitRuleOptions;\n passwordResetEmail?: PublicAuthRateLimitRuleOptions;\n passwordResetConfirm?: PublicAuthRateLimitRuleOptions;\n getUserByToken?: PublicAuthRateLimitRuleOptions;\n twoFactorVerify?: PublicAuthRateLimitRuleOptions;\n twoFactorResend?: PublicAuthRateLimitRuleOptions;\n}\n\n/** Controls the legacy public username/password registration endpoint. Disabled by default. */\nexport interface PublicRegistrationOptions {\n /** Enables POST /accessi/user/register. Applications that used it before must opt in explicitly. */\n enabled?: boolean;\n}\n\n/** Configurazione dei token di servizio (macchina-a-macchina, senza utente). */\nexport interface ServiceTokenOptions {\n /** Abilita gli endpoint amministrativi dei service token. Default `true`. */\n enabled?: boolean;\n /** Durata predefinita in giorni quando non e indicata una scadenza esplicita. Default: nessuna scadenza. */\n defaultTtlDays?: number;\n}\n\n/**\n * Enables Accessi's provider-agnostic federated identity capability.\n *\n * Accessi never validates Azure, Google, Apple, SAML, or other provider tokens.\n * The hosting backend must validate its own SSO flow and pass only a verified\n * `{ provider, subject }` identity to FederatedAuthService.\n */\nexport interface FederatedAuthenticationOptions {\n /** Attiva le API SSO generiche; con `false` il comportamento password storico rimane invariato. */\n enabled?: boolean;\n /** @deprecated Schema management is centralized in autoUpdateDatabase. This legacy flag no longer starts separate SSO migrations. */\n autoUpdateSchema?: boolean;\n /** Allows a backend to create a user from a verified external identity without a master user. Default false. */\n allowSelfRegistration?: boolean;\n}\n\n/**\n * Configurazione completa del modulo Accessi, fornita esclusivamente dal backend ospitante.\n * Segreti JWT, SMTP, database e le configurazioni tecniche dei provider SSO non devono mai raggiungere il browser.\n */\nexport interface AccessiOptions {\n /** Connessione Firebird alla base dati Accessi. */\n databaseOptions: Options;\n /**\n * Basepath del sito es: 'http://www.il-mio-sito.it/nome-progetto(se c'è)'\n */\n confirmationEmailUrl: string;\n /**\n * Percorso della pagina di reset personalizzata es. http://localhost:4200/#/admin/reset-password\n * N.B si sostituisce al confirmationMailURl\n */\n customResetPage?: string;\n /** URL di ritorno della pagina standard di reset dopo il completamento. */\n confirmationEmailReturnUrl: string;\n /** Prefisso applicativo facoltativo trasmesso alla pagina standard di reset. */\n confirmationEmailPrefix?: string;\n /** Chiave riservata alla compatibilita e alla migrazione delle password legacy cifrate. */\n encryptionKey: string;\n /** Abilita gli utenti fittizi `admin` e `demo` solo fuori produzione. */\n mockDemoUser: boolean;\n /** Attiva il controllo della scadenza password durante il login locale. */\n passwordExpiration?: boolean;\n /** Giorni di validita della password; quando assente Accessi usa 90 giorni. */\n passwordExpirationDays?: number;\n /** Esegue al bootstrap la conversione non distruttiva delle password legacy. Default `true`. */\n legacyPasswordMigrationOnStartup?: boolean;\n /** Riconcilia lo schema al bootstrap (default `true`). Con `false` verifica comunque la compatibilita in sola lettura e blocca avvii incompatibili. */\n autoUpdateDatabase?: boolean;\n /** Parametri JWT dei token emessi da Accessi. */\n jwtOptions: JwtOptions;\n /** Parametri SMTP per reset e attivazione password. */\n emailOptions: EmailOptions;\n publicAuthRateLimit?: PublicAuthRateLimitOptions;\n /** Public local registration is deliberately opt-in. Existing applications must set enabled: true to retain it. */\n publicRegistration?: PublicRegistrationOptions;\n /** Optional provider-agnostic SSO support. Provider-specific configuration remains in the hosting backend. */\n federatedAuthentication?: FederatedAuthenticationOptions;\n extensionFieldsOptions?: ExtensionFieldsOptions[];\n /** Token di servizio per chiamate tecniche macchina-a-macchina. Abilitati di default. */\n serviceTokens?: ServiceTokenOptions;\n}\n\n@Global()\n@Module({\n controllers: [\n EmailController,\n AuthController,\n PermissionController,\n UserController,\n FiltriController,\n ConfiguratorController,\n FederatedAuthController,\n AccessiConsoleController,\n ServiceTokenController,\n ],\n providers: [AuthService, TwoFactorService, UserService, EmailService, PermissionService, FiltriService, ConfiguratorService, JwtSimpleGuard, AuthenticateGenService, AccessiDatabaseUpdater, FederatedAuthService, ServiceTokenService, ServiceTokenGuard],\n exports: [AuthService, UserService, EmailService, PermissionService, FiltriService, ConfiguratorService, JwtSimpleGuard, AuthenticateGenService, FederatedAuthService, ServiceTokenService, ServiceTokenGuard],\n})\nexport class AccessiModule {\n /**\n * Registra Accessi nel contenitore Nest del backend ospitante.\n *\n * Usare questo metodo una sola volta nella composizione dell'applicazione. Per un backend\n * Express esistente usare invece `initializeAccessiModule`, che crea e monta l'host Nest interno.\n * La configurazione viene registrata con il token DI `ACCESSI_OPTIONS` ed e condivisa dai servizi.\n */\n static forRoot(options: AccessiOptions): DynamicModule {\n // Il servizio email e obbligatorio: reset password, 2FA e creazione utente ne dipendono.\n assertEmailConfigured(options);\n return {\n module: AccessiModule,\n providers: [\n {\n provide: 'ACCESSI_OPTIONS',\n useValue: options,\n },\n AuthService,\n TwoFactorService,\n UserService,\n EmailService,\n PermissionService,\n FiltriService,\n ConfiguratorService,\n JwtSimpleGuard,\n AuthenticateGenService,\n AccessiDatabaseUpdater,\n FederatedAuthService,\n ServiceTokenService,\n ServiceTokenGuard\n ],\n exports: [\n 'ACCESSI_OPTIONS',\n AuthService,\n UserService,\n EmailService,\n PermissionService,\n FiltriService,\n ConfiguratorService,\n JwtSimpleGuard,\n AuthenticateGenService,\n FederatedAuthService,\n ServiceTokenService,\n ServiceTokenGuard\n ],\n };\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /** Imposta il JWT usato da tutte le funzioni generate da Orval. */
2
+ export declare function setAccessiConsoleToken(token: string | null): void;
3
+ /**
4
+ * Trasporto comune del client Orval: aggiunge il Bearer token e converte le
5
+ * risposte di errore Accessi in Error JavaScript leggibili dalla console.
6
+ */
7
+ export declare function accessiFetch<T>(url: string, options: RequestInit): Promise<T>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.setAccessiConsoleToken = setAccessiConsoleToken;
13
+ exports.accessiFetch = accessiFetch;
14
+ let accessToken = null;
15
+ const loadingEventName = 'accessi-console-network';
16
+ /** Notifies the browser shell without coupling generated Orval calls to the UI implementation. */
17
+ function notifyNetworkActivity(active) {
18
+ if (typeof window !== 'undefined') {
19
+ window.dispatchEvent(new CustomEvent(loadingEventName, { detail: { active } }));
20
+ }
21
+ }
22
+ /** Imposta il JWT usato da tutte le funzioni generate da Orval. */
23
+ function setAccessiConsoleToken(token) {
24
+ accessToken = token;
25
+ }
26
+ /**
27
+ * Trasporto comune del client Orval: aggiunge il Bearer token e converte le
28
+ * risposte di errore Accessi in Error JavaScript leggibili dalla console.
29
+ */
30
+ function accessiFetch(url, options) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ var _a, _b;
33
+ const headers = new Headers(options.headers);
34
+ headers.set('Accept', 'application/json');
35
+ if (options.body !== undefined && !headers.has('Content-Type')) {
36
+ headers.set('Content-Type', 'application/json');
37
+ }
38
+ if (accessToken)
39
+ headers.set('Authorization', `Bearer ${accessToken}`);
40
+ notifyNetworkActivity(true);
41
+ try {
42
+ const response = yield fetch(url, Object.assign(Object.assign({}, options), { headers }));
43
+ const payload = yield response.json().catch(() => undefined);
44
+ if (!response.ok) {
45
+ const message = (_b = (_a = payload === null || payload === void 0 ? void 0 : payload.message) !== null && _a !== void 0 ? _a : payload === null || payload === void 0 ? void 0 : payload.error) !== null && _b !== void 0 ? _b : `Errore HTTP ${response.status}`;
46
+ throw new Error(message);
47
+ }
48
+ return {
49
+ data: payload,
50
+ status: response.status,
51
+ headers: response.headers,
52
+ };
53
+ }
54
+ finally {
55
+ notifyNetworkActivity(false);
56
+ }
57
+ });
58
+ }
59
+ //# sourceMappingURL=accessiFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessiFetch.js","sourceRoot":"","sources":["../../../src/accessi-module/Console/accessiFetch.ts"],"names":[],"mappings":";;;;;;;;;;;AAYA,wDAEC;AAMD,oCAwBC;AA5CD,IAAI,WAAW,GAAkB,IAAI,CAAC;AAEtC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAEnD,kGAAkG;AAClG,SAAS,qBAAqB,CAAC,MAAe;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,SAAgB,sBAAsB,CAAC,KAAoB;IACzD,WAAW,GAAG,KAAK,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAsB,YAAY,CAAI,GAAW,EAAE,OAAoB;;;QACrE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAEvE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,kCAAO,OAAO,KAAE,OAAO,IAAG,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,eAAe,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACvF,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;aACrB,CAAC;QACT,CAAC;gBAAS,CAAC;YACT,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CAAA","sourcesContent":["let accessToken: string | null = null;\n\nconst loadingEventName = 'accessi-console-network';\n\n/** Notifies the browser shell without coupling generated Orval calls to the UI implementation. */\nfunction notifyNetworkActivity(active: boolean): void {\n if (typeof window !== 'undefined') {\n window.dispatchEvent(new CustomEvent(loadingEventName, { detail: { active } }));\n }\n}\n\n/** Imposta il JWT usato da tutte le funzioni generate da Orval. */\nexport function setAccessiConsoleToken(token: string | null): void {\n accessToken = token;\n}\n\n/**\n * Trasporto comune del client Orval: aggiunge il Bearer token e converte le\n * risposte di errore Accessi in Error JavaScript leggibili dalla console.\n */\nexport async function accessiFetch<T>(url: string, options: RequestInit): Promise<T> {\n const headers = new Headers(options.headers);\n headers.set('Accept', 'application/json');\n if (options.body !== undefined && !headers.has('Content-Type')) {\n headers.set('Content-Type', 'application/json');\n }\n if (accessToken) headers.set('Authorization', `Bearer ${accessToken}`);\n\n notifyNetworkActivity(true);\n try {\n const response = await fetch(url, { ...options, headers });\n const payload = await response.json().catch(() => undefined);\n if (!response.ok) {\n const message = payload?.message ?? payload?.error ?? `Errore HTTP ${response.status}`;\n throw new Error(message);\n }\n return {\n data: payload,\n status: response.status,\n headers: response.headers,\n } as T;\n } finally {\n notifyNetworkActivity(false);\n }\n}\n"]}