emilsoftware-utilities 2.0.0-dev.22 → 2.0.0-dev.24

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 (550) hide show
  1. package/README.MD +182 -38
  2. package/dist/ContractGenerator.d.ts +4 -3
  3. package/dist/ContractGenerator.js +15 -5
  4. package/dist/ContractGenerator.js.map +1 -1
  5. package/dist/DailyFileTransport.d.ts +21 -0
  6. package/dist/DailyFileTransport.js +74 -0
  7. package/dist/DailyFileTransport.js.map +1 -0
  8. package/dist/DatabaseUpdater.js +32 -29
  9. package/dist/DatabaseUpdater.js.map +1 -1
  10. package/dist/EmilsoftwareModule.js.map +1 -1
  11. package/dist/ExecutionTimeLogger.d.ts +2 -2
  12. package/dist/ExecutionTimeLogger.js +5 -4
  13. package/dist/ExecutionTimeLogger.js.map +1 -1
  14. package/dist/Logger.d.ts +22 -11
  15. package/dist/Logger.js +132 -119
  16. package/dist/Logger.js.map +1 -1
  17. package/dist/Orm.d.ts +26 -6
  18. package/dist/Orm.js +144 -40
  19. package/dist/Orm.js.map +1 -1
  20. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  21. package/dist/Utilities.d.ts +18 -8
  22. package/dist/Utilities.js +115 -35
  23. package/dist/Utilities.js.map +1 -1
  24. package/dist/accessi-module/AccessiModule.d.ts +69 -0
  25. package/dist/accessi-module/AccessiModule.js +29 -5
  26. package/dist/accessi-module/AccessiModule.js.map +1 -1
  27. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  28. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  29. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  30. package/dist/accessi-module/Console/console.css +618 -0
  31. package/dist/accessi-module/Console/console.d.ts +1 -0
  32. package/dist/accessi-module/Console/console.js +3101 -0
  33. package/dist/accessi-module/Console/console.js.map +1 -0
  34. package/dist/accessi-module/Console/generated/accessiApi.d.ts +542 -0
  35. package/dist/accessi-module/Console/generated/accessiApi.js +517 -0
  36. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  37. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  38. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  39. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  40. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.d.ts +12 -0
  41. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.js +9 -0
  42. package/dist/accessi-module/Console/generated/model/abilitazioneMenuIcona.js.map +1 -0
  43. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.d.ts +12 -0
  44. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.js +9 -0
  45. package/dist/accessi-module/Console/generated/model/abilitazioneMenuNote.js.map +1 -0
  46. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.d.ts +12 -0
  47. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.js +9 -0
  48. package/dist/accessi-module/Console/generated/model/abilitazioneMenuPagina.js.map +1 -0
  49. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.d.ts +12 -0
  50. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.js +9 -0
  51. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipo.js.map +1 -0
  52. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  53. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  54. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  55. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  56. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  57. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  58. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  59. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  60. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  61. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  62. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  63. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  64. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  65. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  66. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  67. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  68. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  69. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  70. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  71. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  72. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  73. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  74. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  75. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  76. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  77. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  78. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  79. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  80. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  81. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  82. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  83. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  84. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  85. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  86. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  87. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  88. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +27 -0
  89. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  90. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  91. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  92. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  93. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  94. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  95. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  96. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  97. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  98. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  99. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  100. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  101. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  102. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  103. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  104. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  105. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  106. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  107. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  108. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  109. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  110. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  111. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  112. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  113. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  114. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  115. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  116. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  117. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  118. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  119. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  120. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  121. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  122. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  123. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  124. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  125. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  126. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  127. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  128. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  129. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  130. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  131. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  132. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  133. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  134. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  135. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  136. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  137. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  138. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  139. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  140. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  141. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  142. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  143. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  144. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  145. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  146. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  147. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  148. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  149. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  150. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  151. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  152. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  153. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  154. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  155. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  156. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  157. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  158. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  159. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  160. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  161. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  162. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  163. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  164. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  165. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  166. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  167. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  168. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  169. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  170. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  171. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  172. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  173. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  174. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  175. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  176. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  177. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  178. package/dist/accessi-module/Console/generated/model/index.d.ts +93 -0
  179. package/dist/accessi-module/Console/generated/model/index.js +110 -0
  180. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  181. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  182. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  183. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  184. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  185. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  186. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  187. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  188. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  189. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  190. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  191. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  192. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  193. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  194. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  195. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  196. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  197. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  198. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  199. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  200. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  201. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  202. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  203. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  204. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  205. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  206. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  207. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  208. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  209. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  210. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  211. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  212. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  213. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  214. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.d.ts +13 -0
  215. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.js +9 -0
  216. package/dist/accessi-module/Console/generated/model/publicRegisterRequestCellulare.js.map +1 -0
  217. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  218. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  219. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  220. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.d.ts +13 -0
  221. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.js +9 -0
  222. package/dist/accessi-module/Console/generated/model/registerRequestCellulare.js.map +1 -0
  223. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  224. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  225. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  226. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  227. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  228. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  229. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  230. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  231. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  232. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  233. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  234. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  235. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  236. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  237. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  238. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  239. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  240. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  241. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  242. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  243. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  244. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  245. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  246. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  247. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  248. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  249. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  250. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  251. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  252. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  253. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  254. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  255. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  256. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  257. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  258. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  259. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  260. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  261. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  262. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  263. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  264. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  265. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  266. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  267. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  268. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  269. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  270. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  271. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  272. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  273. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  274. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  275. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  276. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  277. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  278. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  279. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  280. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  281. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  282. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  283. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  284. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  285. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  286. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  287. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  288. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  289. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  290. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  291. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  292. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  293. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  294. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  295. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +22 -0
  296. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  297. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  298. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  299. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  300. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  301. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  302. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  303. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  304. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  305. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  306. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  307. package/dist/accessi-module/Console/generated/model/userDtoAvatar.d.ts +13 -0
  308. package/dist/accessi-module/Console/generated/model/userDtoAvatar.js +9 -0
  309. package/dist/accessi-module/Console/generated/model/userDtoAvatar.js.map +1 -0
  310. package/dist/accessi-module/Console/generated/model/userDtoCellulare.d.ts +13 -0
  311. package/dist/accessi-module/Console/generated/model/userDtoCellulare.js +9 -0
  312. package/dist/accessi-module/Console/generated/model/userDtoCellulare.js.map +1 -0
  313. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  314. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  315. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  316. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  317. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  318. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  319. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  320. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  321. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  322. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  323. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  324. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  325. package/dist/accessi-module/Console/help.d.ts +13 -0
  326. package/dist/accessi-module/Console/help.js +348 -0
  327. package/dist/accessi-module/Console/help.js.map +1 -0
  328. package/dist/accessi-module/Console/index.html +127 -0
  329. package/dist/accessi-module/Console/openApiClient.d.ts +34 -0
  330. package/dist/accessi-module/Console/openApiClient.js +111 -0
  331. package/dist/accessi-module/Console/openApiClient.js.map +1 -0
  332. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  333. package/dist/accessi-module/Console/wiki.js +689 -0
  334. package/dist/accessi-module/Console/wiki.js.map +1 -0
  335. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +18 -0
  336. package/dist/accessi-module/Controllers/AccessiConsoleController.js +111 -0
  337. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  338. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -1
  339. package/dist/accessi-module/Controllers/AuthController.js +86 -47
  340. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  341. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -3
  342. package/dist/accessi-module/Controllers/ConfiguratorController.js +9 -9
  343. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  344. package/dist/accessi-module/Controllers/EmailController.d.ts +2 -2
  345. package/dist/accessi-module/Controllers/EmailController.js +4 -2
  346. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  347. package/dist/accessi-module/Controllers/FiltriController.d.ts +5 -4
  348. package/dist/accessi-module/Controllers/FiltriController.js +95 -5
  349. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  350. package/dist/accessi-module/Controllers/PermissionController.d.ts +12 -1
  351. package/dist/accessi-module/Controllers/PermissionController.js +282 -13
  352. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  353. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  354. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  355. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  356. package/dist/accessi-module/Controllers/UserController.d.ts +5 -3
  357. package/dist/accessi-module/Controllers/UserController.js +65 -11
  358. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  359. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  360. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  361. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  362. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  363. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -1
  364. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  365. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +3 -0
  366. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +18 -0
  367. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -1
  368. package/dist/accessi-module/Dtos/BaseResponse.d.ts +2 -0
  369. package/dist/accessi-module/Dtos/BaseResponse.js +21 -2
  370. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  371. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +66 -0
  372. package/dist/accessi-module/Dtos/CatalogDtos.js +336 -0
  373. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  374. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -1
  375. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  376. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  377. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  378. package/dist/accessi-module/Dtos/FiltriUtente.js +4 -1
  379. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  380. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  381. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  382. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  383. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  384. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -1
  385. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -1
  386. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  387. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  388. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  389. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  390. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  391. package/dist/accessi-module/Dtos/LoginResponse.d.ts +6 -2
  392. package/dist/accessi-module/Dtos/LoginResponse.js +20 -7
  393. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  394. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  395. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  396. package/dist/accessi-module/Dtos/Permission.js +1 -0
  397. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  398. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +1 -1
  399. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +1 -0
  400. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -1
  401. package/dist/accessi-module/Dtos/RegisterRequest.js +3 -1
  402. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  403. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  404. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  405. package/dist/accessi-module/Dtos/Role.js +4 -0
  406. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  407. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  408. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -1
  409. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  410. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  411. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  412. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  413. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  414. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  415. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  416. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  417. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  418. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  419. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  420. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  421. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  422. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  423. package/dist/accessi-module/Dtos/UserDto.d.ts +7 -0
  424. package/dist/accessi-module/Dtos/UserDto.js +26 -2
  425. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  426. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  427. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -1
  428. package/dist/accessi-module/Dtos/index.d.ts +4 -0
  429. package/dist/accessi-module/Dtos/index.js +4 -0
  430. package/dist/accessi-module/Dtos/index.js.map +1 -1
  431. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +40 -5
  432. package/dist/accessi-module/Services/AuthService/AuthService.js +192 -40
  433. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  434. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  435. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  436. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  437. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  438. package/dist/accessi-module/Services/EmailService/EmailService.js +43 -22
  439. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  440. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  441. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -9
  442. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  443. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +73 -2
  444. package/dist/accessi-module/Services/PermissionService/PermissionService.js +537 -198
  445. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  446. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  447. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  448. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  449. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  450. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  451. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  452. package/dist/accessi-module/Services/UserService/UserService.d.ts +36 -5
  453. package/dist/accessi-module/Services/UserService/UserService.js +341 -161
  454. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  455. package/dist/accessi-module/Views/reset-password.html +213 -213
  456. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +46 -10
  457. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +399 -181
  458. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  459. package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
  460. package/dist/accessi-module/database-updates/accessiSchema.js +87 -0
  461. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  462. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  463. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  464. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  465. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +18 -8
  466. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  467. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +24 -0
  468. package/dist/accessi-module/federated-auth/FederatedAuthController.js +333 -0
  469. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  470. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +100 -0
  471. package/dist/accessi-module/federated-auth/FederatedAuthService.js +451 -0
  472. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  473. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  474. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  475. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  476. package/dist/accessi-module/index.d.ts +17 -0
  477. package/dist/accessi-module/index.js +25 -11
  478. package/dist/accessi-module/index.js.map +1 -1
  479. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  480. package/dist/accessi-module/jwt/jwt.strategy.js +16 -7
  481. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  482. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  483. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  484. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  485. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  486. package/dist/accessi-module/middleware/authenticateGen.js +63 -25
  487. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  488. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  489. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  490. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  491. package/dist/accessi-module/security/accessControl.d.ts +11 -0
  492. package/dist/accessi-module/security/accessControl.js +19 -4
  493. package/dist/accessi-module/security/accessControl.js.map +1 -1
  494. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  495. package/dist/accessi-module/security/accessiValidation.js +41 -0
  496. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  497. package/dist/accessi-module/security/authenticatedToken.d.ts +15 -1
  498. package/dist/accessi-module/security/authenticatedToken.js +31 -4
  499. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  500. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  501. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  502. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  503. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +3 -3
  504. package/dist/accessi-module/security/publicAuthRateLimit.js +30 -8
  505. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  506. package/dist/accessi-module/security/serviceTokenGuard.d.ts +25 -0
  507. package/dist/accessi-module/security/serviceTokenGuard.js +85 -0
  508. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  509. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +8 -0
  510. package/dist/accessi-module/security/serviceTokenRateLimit.js +49 -0
  511. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  512. package/dist/allegati-module/AllegatiModule.d.ts +11 -0
  513. package/dist/allegati-module/AllegatiModule.js +11 -1
  514. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  515. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  516. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  517. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  518. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  519. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  520. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  521. package/dist/allegati-module/Dtos/index.js.map +1 -1
  522. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  523. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  524. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  525. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  526. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  527. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  528. package/dist/allegati-module/index.js.map +1 -1
  529. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  530. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  531. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  532. package/dist/autobind.d.ts +10 -3
  533. package/dist/autobind.js +24 -9
  534. package/dist/autobind.js.map +1 -1
  535. package/dist/firebird-compat.d.ts +13 -0
  536. package/dist/firebird-compat.js +3 -2
  537. package/dist/firebird-compat.js.map +1 -1
  538. package/dist/index.js.map +1 -1
  539. package/dist/initEmilsoftwareModule.js +7 -0
  540. package/dist/initEmilsoftwareModule.js.map +1 -1
  541. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  542. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  543. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  544. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  545. package/dist/scripts/generateAccessiWiki.js +131 -0
  546. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  547. package/dist/swagger/SwaggerConfig.js +6 -3
  548. package/dist/swagger/SwaggerConfig.js.map +1 -1
  549. package/package.json +103 -83
  550. package/dist/emilsoftware-utilities-2.0.0-dev.22.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"UserService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/UserService/UserService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\nimport { autobind } from '../../../autobind';\nimport { Orm } from '../../../Orm';\nimport { RestUtilities } from '../../../Utilities';\nimport { AccessiOptions } from '../../AccessiModule';\nimport { FILTRI_UTENTE_DB_MAPPING, FiltriUtente } from '../../Dtos/FiltriUtente';\nimport { GetUsersResult } from '../../Dtos/GetUsersResponse';\nimport { RegisterRequest } from '../../Dtos/RegisterRequest';\nimport { StatoRegistrazione } from '../../Dtos/StatoRegistrazione';\nimport { UserDto } from '../../Dtos/UserDto';\nimport { UserGrantsDto } from '../../Dtos/UserGrantsDto';\nimport { AccessiAuthenticatedUserSnapshot } from '../../security/authenticatedToken';\nimport { EmailService } from '../EmailService/EmailService';\nimport { FiltriService } from '../FiltriService/FiltriService';\nimport { PermissionService } from '../PermissionService/PermissionService';\n\ninterface OptionalField<T> {\n key: keyof RegisterRequest;\n dbField: string;\n transform?: (value: any) => T;\n}\n\n@autobind\n@Injectable()\nexport class UserService {\n constructor(\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions,\n private readonly emailService: EmailService,\n private readonly permissionService: PermissionService,\n private readonly filtriService: FiltriService,\n ) {}\n\n private normalizeDatabaseBoolean(value: unknown): boolean {\n return value === true || value === 1 || value === '1';\n }\n\n private normalizeEmail(email: string): string {\n if (typeof email !== 'string' || email.trim() === '') {\n throw new Error(\"L'email e' obbligatoria.\");\n }\n\n return email.trim().toLowerCase();\n }\n\n private async ensureEmailIsAvailable(email: string, currentUserCode?: number): Promise<void> {\n const result = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODUTE as codice_utente FROM UTENTI WHERE LOWER(USRNAME) = ?',\n [email],\n );\n\n const existingUser = result.map(RestUtilities.convertKeysToCamelCase)[0] as\n | { codiceUtente?: number }\n | undefined;\n\n if (\n existingUser?.codiceUtente &&\n (!currentUserCode || existingUser.codiceUtente !== currentUserCode)\n ) {\n throw new Error(\"Questa e-mail e' gia stata utilizzata!\");\n }\n }\n\n async isAdminConfigurator(codiceUtente: number): Promise<boolean> {\n if (!codiceUtente) {\n return false;\n }\n\n const query = `SELECT FLGADMINCONFIG AS flag_admin_configurator FROM UTENTI_CONFIG WHERE CODUTE = ?`;\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, [codiceUtente]);\n\n if (!result || result === 0) {\n return false;\n }\n\n const mapped = result.map(RestUtilities.convertKeysToCamelCase);\n return this.normalizeDatabaseBoolean(mapped[0]?.flagAdminConfigurator);\n }\n\n async getAuthenticatedUserSnapshot(\n codiceUtente: number,\n ): Promise<AccessiAuthenticatedUserSnapshot | null> {\n if (!codiceUtente || codiceUtente <= 0) {\n return null;\n }\n\n const result = await Orm.query(\n this.accessiOptions.databaseOptions,\n `\n SELECT\n U.CODUTE AS codice_utente,\n U.USRNAME AS email,\n U.STAREG AS stato_registrazione,\n C.FLGSUPER AS flag_super,\n C.FLGADMINCONFIG AS flag_admin_configurator\n FROM UTENTI U\n LEFT JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE\n WHERE U.CODUTE = ?\n `,\n [codiceUtente],\n );\n\n const user = result.map(RestUtilities.convertKeysToCamelCase)[0] as\n | {\n codiceUtente?: number;\n email?: string;\n statoRegistrazione?: StatoRegistrazione | number;\n flagSuper?: unknown;\n flagAdminConfigurator?: unknown;\n }\n | undefined;\n\n if (!user?.codiceUtente) {\n return null;\n }\n\n return {\n codiceUtente: Number(user.codiceUtente),\n email: typeof user.email === 'string' ? user.email : undefined,\n statoRegistrazione: Number(user.statoRegistrazione) as StatoRegistrazione,\n flagSuper: this.normalizeDatabaseBoolean(user.flagSuper),\n flagAdminConfigurator: this.normalizeDatabaseBoolean(user.flagAdminConfigurator),\n };\n }\n\n async getUsers(\n filters?: { email?: string; codiceUtente?: number },\n options?: { includeExtensionFields: boolean; includeGrants: boolean },\n ): Promise<GetUsersResult[]> {\n try {\n let query = ` \n SELECT \n U.CODUTE as codice_utente, \n U.USRNAME as email, \n U.FLGGDPR as flag_gdpr, \n U.DATGDPR as data_gdpr, \n U.DATINS as data_inserimento, \n U.DATSCAPWD as data_scadenza_password, \n U.DATLASTLOGIN as data_last_login, \n U.STAREG as stato_registrazione, \n G.COGNOME as cognome, \n G.NOME as nome, \n G.AVATAR as avatar, \n G.FLG2FATT as flag_due_fattori, \n G.CODLINGUA as codice_lingua,\n G.CELLULARE as cellulare,\n G.FLGSUPER as flag_super, \n G.FLGADMINCONFIG as flag_admin_configurator,\n G.PAGDEF as pagina_default,\n G.JSON_METADATA as json_metadata,\n G.RAGSOCCLI as rag_soc_cli,\n G.NUMMAC as nummac,\n F.NUMREP AS num_rep,\n F.IDXPERS AS idx_pers,\n F.CODCLISUPER AS cod_cli_super,\n F.CODAGE AS cod_age,\n F.CODCLICOL AS cod_cli_col,\n F.CODCLIENTI AS cod_clienti,\n F.TIPFIL AS tip_fil,\n F.IDXPOS AS idx_postazione\n FROM UTENTI U \n INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE\n LEFT JOIN FILTRI F ON F.CODUTE = U.CODUTE\n WHERE 1=1\n `;\n\n const queryParams: any[] = [];\n\n if (filters?.email) {\n query += ` AND LOWER(U.USRNAME) = ? `;\n queryParams.push(filters.email.trim().toLowerCase());\n }\n\n if (filters?.codiceUtente) {\n query += ` AND U.CODUTE = ? `;\n queryParams.push(filters.codiceUtente);\n }\n\n query += ` ORDER BY U.CODUTE DESC `;\n\n let users = (await Orm.query(\n this.accessiOptions.databaseOptions,\n query,\n queryParams,\n )) as UserDto[];\n users = users.map(RestUtilities.convertKeysToCamelCase);\n\n const usersResponse: GetUsersResult[] = [];\n\n for (const user of users) {\n let userGrants: UserGrantsDto | undefined;\n\n if (options?.includeGrants) {\n userGrants = await this.permissionService.getUserRolesAndGrants(user.codiceUtente);\n }\n\n let extensionFields: Record<string, unknown[]> | undefined;\n\n if (options?.includeExtensionFields) {\n extensionFields = {};\n }\n\n if (extensionFields && this.accessiOptions.extensionFieldsOptions) {\n for (const ext of this.accessiOptions.extensionFieldsOptions) {\n const values = (\n await Orm.query(\n ext.databaseOptions,\n `SELECT ${ext.tableFields.join(',')} FROM ${ext.tableName} WHERE ${\n ext.tableJoinFieldName\n } = ?`,\n [user.codiceUtente],\n )\n ).map(RestUtilities.convertKeysToCamelCase);\n\n extensionFields[ext.objectKey] = values;\n }\n }\n\n usersResponse.push({\n utente: user,\n userGrants,\n extensionFields,\n });\n }\n\n return usersResponse;\n } catch (error) {\n throw error;\n }\n }\n\n async getCodiceUtenteByEmail(email: string): Promise<{ codiceUtente: number }> {\n try {\n const query = `SELECT CODUTE as codice_utente FROM UTENTI WHERE LOWER(USRNAME) = ?`;\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, [\n email.trim().toLowerCase(),\n ]);\n return result.map(RestUtilities.convertKeysToCamelCase)[0];\n } catch (error) {\n throw error;\n }\n }\n\n async getUserByEmail(email: string): Promise<UserDto | null> {\n const query = `\n SELECT \n U.CODUTE AS codice_utente, \n U.USRNAME AS email, \n U.FLGGDPR AS flag_gdpr,\n U.DATSCAPWD as data_scadenza_password,\n U.STAREG AS stato_registrazione, \n C.COGNOME AS cognome, \n C.NOME AS nome, \n C.AVATAR AS avatar, \n C.FLG2FATT AS flag_due_fattori,\n C.CODLINGUA AS codice_lingua, \n C.CELLULARE AS cellulare, \n C.FLGSUPER AS flag_super,\n C.FLGADMINCONFIG AS flag_admin_configurator,\n C.PAGDEF AS pagina_default,\n C.NUMMAC AS nummac,\n C.RAGSOCCLI AS rag_soc_cli\n FROM UTENTI U\n INNER JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE\n WHERE LOWER(U.USRNAME) = ?\n `;\n\n const utenti = (await Orm.query(this.accessiOptions.databaseOptions, query, [email]).then(\n (results) => results.map(RestUtilities.convertKeysToCamelCase),\n )) as UserDto[];\n\n const filtriUtente = await this.filtriService.getFiltriUser(utenti[0]?.codiceUtente);\n\n if (utenti.length <= 0) {\n return null;\n }\n\n if (utenti.length > 0 && filtriUtente.length > 0) {\n const user = utenti[0];\n const filtro = filtriUtente[0];\n const filterValues: Record<string, unknown> = {};\n\n Object.entries(FILTRI_UTENTE_DB_MAPPING).forEach(([key]) => {\n if (key in filtro) {\n filterValues[key] = filtro[key as keyof FiltriUtente];\n }\n });\n\n Object.assign(user, filterValues);\n }\n\n return utenti.length > 0 ? utenti[0] : null;\n }\n\n async insertUserFilters(codiceUtente: number, filterData: RegisterRequest): Promise<void> {\n await this.filtriService.upsertFiltriUtente(codiceUtente, filterData);\n }\n\n private async executeInTransaction(operation: () => Promise<void>): Promise<void> {\n await operation();\n }\n\n async register(\n registrationData: RegisterRequest,\n options?: { allowPrivilegedFields?: boolean },\n ): Promise<number> {\n try {\n const allowPrivilegedFields = options?.allowPrivilegedFields === true;\n const normalizedEmail = this.normalizeEmail(registrationData.email);\n\n if (\n !allowPrivilegedFields &&\n (registrationData.flagSuper !== undefined ||\n registrationData.flagAdminConfigurator !== undefined ||\n registrationData.roles !== undefined ||\n registrationData.permissions !== undefined)\n ) {\n throw new Error('I campi privilegiati non sono consentiti nella registrazione pubblica.');\n }\n\n await this.ensureEmailIsAvailable(normalizedEmail);\n\n const queryUtenti = `INSERT INTO UTENTI (USRNAME, STAREG) VALUES (?,?)`;\n const paramsUtenti = [normalizedEmail, StatoRegistrazione.INVIO];\n\n await Orm.execute(this.accessiOptions.databaseOptions, queryUtenti, paramsUtenti);\n\n const codiceUtenteResult = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODUTE FROM UTENTI WHERE USRNAME = ? ORDER BY CODUTE DESC',\n [normalizedEmail],\n );\n\n const codiceUtente = Number(\n codiceUtenteResult?.[0]?.CODUTE ?? codiceUtenteResult?.[0]?.codute,\n );\n if (!codiceUtente) {\n throw new Error('Creazione utente non riuscita: impossibile recuperare CODUTE.');\n }\n\n const utentiConfigFields = ['CODUTE', 'COGNOME', 'NOME'];\n const utentiConfigPlaceholders = ['?', '?', '?'];\n const utentiConfigParams = [codiceUtente, registrationData.cognome, registrationData.nome];\n\n const optionalFields: OptionalField<any>[] = [\n {\n key: 'cellulare',\n dbField: 'CELLULARE',\n transform: (v) => String(v),\n },\n {\n key: 'avatar',\n dbField: 'AVATAR',\n transform: (v) => String(v),\n },\n {\n key: 'flagDueFattori',\n dbField: 'FLG2FATT',\n transform: (v) => (v ? 1 : 0),\n },\n {\n key: 'paginaDefault',\n dbField: 'PAGDEF',\n transform: (v) => String(v),\n },\n {\n key: 'nummac',\n dbField: 'NUMMAC',\n transform: (v) => Number(v),\n },\n {\n key: 'ragSocCli',\n dbField: 'RAGSOCCLI',\n transform: (v) => String(v),\n },\n ];\n\n if (allowPrivilegedFields) {\n optionalFields.push(\n {\n key: 'flagSuper',\n dbField: 'FLGSUPER',\n transform: (v) => (v ? 1 : 0),\n },\n {\n key: 'flagAdminConfigurator',\n dbField: 'FLGADMINCONFIG',\n transform: (v) => (v ? 1 : 0),\n },\n );\n }\n\n for (const field of optionalFields) {\n const value = registrationData[field.key];\n if (value !== undefined && value !== null) {\n utentiConfigFields.push(field.dbField);\n utentiConfigPlaceholders.push('?');\n utentiConfigParams.push(field.transform ? field.transform(value) : value);\n }\n }\n\n const queryUtentiConfig = `INSERT INTO UTENTI_CONFIG (${utentiConfigFields.join(\n ', ',\n )}) VALUES (${utentiConfigPlaceholders.join(', ')})`;\n await Orm.execute(this.accessiOptions.databaseOptions, queryUtentiConfig, utentiConfigParams);\n\n await this.filtriService.upsertFiltriUtente(codiceUtente, registrationData);\n\n if (allowPrivilegedFields && !!registrationData.roles && registrationData.roles.length > 0) {\n await this.permissionService.assignRolesToUser(codiceUtente, registrationData.roles);\n }\n\n if (\n allowPrivilegedFields &&\n !!registrationData.permissions &&\n registrationData.permissions.length > 0\n ) {\n await this.permissionService.assignPermissionsToUser(\n codiceUtente,\n registrationData.permissions,\n );\n }\n\n return codiceUtente;\n } catch (error) {\n throw error;\n }\n }\n\n async updateUser(\n codiceUtente: number,\n user: UserDto,\n options?: { allowPrivilegedChanges?: boolean },\n ): Promise<void> {\n try {\n if (!codiceUtente) throw new Error('Impossibile aggiornare senza codice utente.');\n const allowPrivilegedChanges = options?.allowPrivilegedChanges === true;\n\n if (\n !allowPrivilegedChanges &&\n (user.statoRegistrazione !== undefined ||\n user.flagSuper !== undefined ||\n user.flagAdminConfigurator !== undefined ||\n user.roles !== undefined ||\n user.permissions !== undefined)\n ) {\n throw new Error('Non e consentito modificare campi privilegiati.');\n }\n\n const utentiUpdates = [];\n const utentiParams = [];\n\n if (user.email !== undefined) {\n const normalizedEmail = this.normalizeEmail(user.email);\n await this.ensureEmailIsAvailable(normalizedEmail, codiceUtente);\n utentiUpdates.push('usrname = ?');\n utentiParams.push(normalizedEmail);\n }\n if (user.flagGdpr !== undefined) {\n utentiUpdates.push('flggdpr = ?');\n utentiParams.push(user.flagGdpr);\n }\n if (allowPrivilegedChanges && user.statoRegistrazione !== undefined) {\n utentiUpdates.push('stareg = ?');\n utentiParams.push(user.statoRegistrazione);\n }\n\n if (utentiUpdates.length > 0) {\n const queryUtenti = `UPDATE UTENTI SET ${utentiUpdates.join(', ')} WHERE CODUTE = ?`;\n utentiParams.push(codiceUtente);\n await Orm.execute(this.accessiOptions.databaseOptions, queryUtenti, utentiParams);\n }\n\n const utentiConfigUpdates = [];\n const utentiConfigParams = [];\n\n if (user.cognome !== undefined) {\n utentiConfigUpdates.push('cognome = ?');\n utentiConfigParams.push(user.cognome);\n }\n if (user.nome !== undefined) {\n utentiConfigUpdates.push('nome = ?');\n utentiConfigParams.push(user.nome);\n }\n if (user.avatar !== undefined) {\n utentiConfigUpdates.push('avatar = ?');\n utentiConfigParams.push(user.avatar);\n }\n if (user.flagDueFattori !== undefined) {\n utentiConfigUpdates.push('flg2fatt = ?');\n utentiConfigParams.push(user.flagDueFattori);\n }\n if (user.codiceLingua !== undefined) {\n utentiConfigUpdates.push('codlingua = ?');\n utentiConfigParams.push(user.codiceLingua);\n }\n if (user.cellulare !== undefined) {\n utentiConfigUpdates.push('cellulare = ?');\n utentiConfigParams.push(user.cellulare);\n }\n if (allowPrivilegedChanges && user.flagSuper !== undefined) {\n utentiConfigUpdates.push('flgsuper = ?');\n utentiConfigParams.push(user.flagSuper);\n }\n if (allowPrivilegedChanges && user.flagAdminConfigurator !== undefined) {\n utentiConfigUpdates.push('flgadminconfig = ?');\n utentiConfigParams.push(user.flagAdminConfigurator);\n }\n if (user.paginaDefault !== undefined) {\n utentiConfigUpdates.push('pagdef = ?');\n utentiConfigParams.push(user.paginaDefault);\n }\n if (user.jsonMetadata !== undefined) {\n utentiConfigUpdates.push('json_metadata = ?');\n utentiConfigParams.push(user.jsonMetadata);\n }\n if (user.ragSocCli !== undefined) {\n utentiConfigUpdates.push('ragsoccli = ?');\n utentiConfigParams.push(user.ragSocCli);\n }\n\n if (utentiConfigUpdates.length > 0) {\n const queryUtentiConfig = `UPDATE UTENTI_CONFIG SET ${utentiConfigUpdates.join(\n ', ',\n )} WHERE CODUTE = ?`;\n utentiConfigParams.push(codiceUtente);\n await Orm.execute(\n this.accessiOptions.databaseOptions,\n queryUtentiConfig,\n utentiConfigParams,\n );\n }\n\n if (allowPrivilegedChanges && !!user.roles && user.roles.length > 0) {\n await this.permissionService.assignRolesToUser(codiceUtente, user.roles);\n }\n\n if (allowPrivilegedChanges && !!user.permissions && user.permissions.length > 0) {\n await this.permissionService.assignPermissionsToUser(codiceUtente, user.permissions);\n }\n\n await this.filtriService.upsertFiltriUtente(codiceUtente, user);\n } catch (error) {\n throw error;\n }\n }\n\n async updateUserFilters(codiceUtente: number, user: UserDto): Promise<void> {\n await this.filtriService.upsertFiltriUtente(codiceUtente, user);\n }\n\n async deleteUser(codiceCliente: number): Promise<void> {\n try {\n const query = `UPDATE UTENTI SET STAREG = ? WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, query, [\n StatoRegistrazione.DELETE,\n codiceCliente,\n ]);\n } catch (error) {\n throw error;\n }\n }\n\n async setStato(codiceCliente: number, statoRegistrazione: StatoRegistrazione) {\n try {\n const query = `UPDATE UTENTI SET STAREG = ? WHERE CODUTE = ?`;\n await Orm.execute(this.accessiOptions.databaseOptions, query, [\n statoRegistrazione,\n codiceCliente,\n ]);\n } catch (error) {\n throw error;\n }\n }\n\n public async setGdpr(codiceUtente: number) {\n try {\n const query = ` UPDATE OR INSERT UTENTI_GDPR SET CODUTE = ?, GDPR = ? `;\n const params = [codiceUtente, true];\n return await Orm.execute(this.accessiOptions.databaseOptions, query, params);\n } catch (error) {\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"UserService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/UserService/UserService.ts"],"names":[],"mappings":"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","sourcesContent":["import { BadRequestException, ConflictException, Inject, Injectable } from '@nestjs/common';\r\nimport { getTableColumns, optionalColumn } from '../../database-updates/optionalColumns';\r\nimport { autobind } from '../../../autobind';\r\nimport { Orm } from '../../../Orm';\r\nimport { RestUtilities } from '../../../Utilities';\r\nimport type { AccessiOptions } from '../../AccessiModule';\r\nimport { FILTRI_UTENTE_DB_MAPPING, FiltriUtente } from '../../Dtos/FiltriUtente';\r\nimport { GetUsersResult } from '../../Dtos/GetUsersResponse';\r\nimport { RegisterRequest } from '../../Dtos/RegisterRequest';\r\nimport { StatoRegistrazione } from '../../Dtos/StatoRegistrazione';\r\nimport { UserDto } from '../../Dtos/UserDto';\r\nimport { UserGrantsDto } from '../../Dtos/UserGrantsDto';\r\nimport { AccessiAuthenticatedUserSnapshot } from '../../security/authenticatedToken';\r\nimport { EmailService } from '../EmailService/EmailService';\r\nimport { FiltriService } from '../FiltriService/FiltriService';\r\nimport { PermissionService } from '../PermissionService/PermissionService';\r\n\r\ninterface OptionalField<T> {\r\n key: keyof RegisterRequest;\r\n dbField: string;\r\n transform?: (value: unknown) => T;\r\n}\r\n\r\n@autobind\r\n@Injectable()\r\nexport class UserService {\r\n constructor(\r\n @Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions,\r\n _emailService: EmailService,\r\n private readonly permissionService: PermissionService,\r\n private readonly filtriService: FiltriService,\r\n ) {}\r\n\r\n private async validateApplicationFields(value: { nummac?: number; ragSocCli?: string } & Partial<FiltriUtente>): Promise<{ configColumns?: Set<string> }> {\r\n type ApplicationField = 'nummac' | 'ragSocCli';\r\n const applicationFields: ReadonlyArray<readonly [ApplicationField, string]> = [['nummac', 'NUMMAC'], ['ragSocCli', 'RAGSOCCLI']];\r\n let configColumns: Set<string> | undefined;\r\n if (applicationFields.some(([key]) => value[key] !== undefined)) {\r\n configColumns = await getTableColumns(this.accessiOptions, 'UTENTI_CONFIG');\r\n for (const [key, column] of applicationFields) {\r\n if (value[key] !== undefined && value[key] !== null && !configColumns.has(column)) {\r\n throw new BadRequestException(`Campo applicativo non configurato: UTENTI_CONFIG.${column}`);\r\n }\r\n }\r\n }\r\n const filterKeys = Object.keys(FILTRI_UTENTE_DB_MAPPING) as Array<keyof FiltriUtente>;\r\n if (filterKeys.some(key => value[key] !== undefined && value[key] !== null && value[key] !== '')) {\r\n await this.filtriService.validateSupportedFields(value);\r\n }\r\n return { configColumns };\r\n }\r\n\r\n private normalizeDatabaseBoolean(value: unknown): boolean {\r\n return value === true || value === 1 || value === '1';\r\n }\r\n\r\n private normalizeUserFlags(user: UserDto): UserDto {\r\n return { ...user,\r\n flagSuper: this.normalizeDatabaseBoolean(user.flagSuper),\r\n flagAdminConfigurator: this.normalizeDatabaseBoolean(user.flagAdminConfigurator),\r\n flagDueFattori: this.normalizeDatabaseBoolean(user.flagDueFattori),\r\n passwordlessLoginEnabled: this.normalizeDatabaseBoolean(user.passwordlessLoginEnabled),\r\n passwordLoginEnabled: user.passwordLoginEnabled == null || this.normalizeDatabaseBoolean(user.passwordLoginEnabled),\r\n };\r\n }\r\n\r\n private normalizeEmail(email: string): string {\r\n if (typeof email !== 'string' || email.trim() === '') {\r\n throw new BadRequestException({ code: 'ACCESSI_EMAIL_REQUIRED', message: \"L'email è obbligatoria.\" });\r\n }\r\n\r\n return email.trim().toLowerCase();\r\n }\r\n\r\n private async ensureEmailIsAvailable(email: string, currentUserCode?: number): Promise<void> {\r\n const result = await Orm.query(\r\n this.accessiOptions.databaseOptions,\r\n 'SELECT FIRST 1 CODUTE as codice_utente FROM UTENTI WHERE LOWER(USRNAME) = ?',\r\n [email],\r\n );\r\n\r\n const existingUser = result.map(RestUtilities.convertKeysToCamelCase)[0] as\r\n | { codiceUtente?: number }\r\n | undefined;\r\n\r\n if (\r\n existingUser?.codiceUtente &&\r\n (!currentUserCode || existingUser.codiceUtente !== currentUserCode)\r\n ) {\r\n throw new ConflictException({ code: 'ACCESSI_EMAIL_ALREADY_EXISTS', message: \"L'email è già associata a un utente Accessi.\" });\r\n }\r\n }\r\n\r\n /** Determina se l'utente puo amministrare il configuratore Accessi (`FLGADMINCONFIG`). */\r\n async isAdminConfigurator(codiceUtente: number): Promise<boolean> {\r\n if (!codiceUtente) {\r\n return false;\r\n }\r\n\r\n const query = `SELECT FLGADMINCONFIG AS flag_admin_configurator FROM UTENTI_CONFIG WHERE CODUTE = ?`;\r\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, [codiceUtente]);\r\n\r\n if (result.length === 0) {\r\n return false;\r\n }\r\n\r\n const mapped = result.map(RestUtilities.convertKeysToCamelCase);\r\n return this.normalizeDatabaseBoolean(mapped[0]?.flagAdminConfigurator);\r\n }\r\n\r\n /**\r\n * Legge il minimo profilo autorevole usato da JWT e middleware. Restituisce `null` per utenti inesistenti.\r\n * Non usare `UserDto` dal token per decisioni di sicurezza: i flag vengono sempre riletti qui.\r\n */\r\n async getAuthenticatedUserSnapshot(\r\n codiceUtente: number,\r\n ): Promise<AccessiAuthenticatedUserSnapshot | null> {\r\n if (!codiceUtente || codiceUtente <= 0) {\r\n return null;\r\n }\r\n\r\n const result = await Orm.query(\r\n this.accessiOptions.databaseOptions,\r\n `\r\n SELECT\r\n U.CODUTE AS codice_utente,\r\n U.USRNAME AS email,\r\n U.STAREG AS stato_registrazione,\r\n C.FLGSUPER AS flag_super,\r\n C.FLGADMINCONFIG AS flag_admin_configurator\r\n , C.FLG2FATT AS flag_due_fattori\r\n , C.FLGPWDLESS AS passwordless_login_enabled\r\n , COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled\r\n FROM UTENTI U\r\n LEFT JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE\r\n WHERE U.CODUTE = ?\r\n `,\r\n [codiceUtente],\r\n );\r\n\r\n const user = result.map(RestUtilities.convertKeysToCamelCase)[0] as\r\n | {\r\n codiceUtente?: number;\r\n email?: string;\r\n statoRegistrazione?: StatoRegistrazione | number;\r\n flagSuper?: unknown;\r\n flagAdminConfigurator?: unknown;\r\n flagDueFattori?: unknown;\r\n passwordlessLoginEnabled?: unknown;\r\n passwordLoginEnabled?: unknown;\r\n }\r\n | undefined;\r\n\r\n if (!user?.codiceUtente) {\r\n return null;\r\n }\r\n\r\n return {\r\n codiceUtente: Number(user.codiceUtente),\r\n email: typeof user.email === 'string' ? user.email : undefined,\r\n statoRegistrazione: Number(user.statoRegistrazione) as StatoRegistrazione,\r\n flagSuper: this.normalizeDatabaseBoolean(user.flagSuper),\r\n flagAdminConfigurator: this.normalizeDatabaseBoolean(user.flagAdminConfigurator),\r\n flagDueFattori: this.normalizeDatabaseBoolean(user.flagDueFattori),\r\n passwordlessLoginEnabled: this.normalizeDatabaseBoolean(user.passwordlessLoginEnabled),\r\n passwordLoginEnabled: this.normalizeDatabaseBoolean(user.passwordLoginEnabled),\r\n };\r\n }\r\n\r\n /**\r\n * Elenca gli utenti con filtri opzionali. Grant e campi estesi sono costosi e vengono caricati soltanto\r\n * quando richiesti esplicitamente nelle opzioni; usare filtri puntuali nei flussi di autenticazione.\r\n */\r\n async getUsers(\r\n filters?: { email?: string; codiceUtente?: number; limit?: number; offset?: number },\r\n options?: { includeExtensionFields: boolean; includeGrants: boolean },\r\n ): Promise<GetUsersResult[]> {\r\n try {\r\n const configColumns = await getTableColumns(this.accessiOptions, 'UTENTI_CONFIG');\r\n const filterColumns = await getTableColumns(this.accessiOptions, 'FILTRI');\r\n\r\n // Paginazione opzionale con limiti sani: il default resta \"tutti gli utenti\".\r\n const limit = Number.isInteger(filters?.limit) && (filters?.limit ?? 0) > 0\r\n ? Math.min(filters?.limit as number, 1000)\r\n : undefined;\r\n const offset = Number.isInteger(filters?.offset) && (filters?.offset ?? 0) > 0\r\n ? Math.trunc(filters?.offset as number)\r\n : 0;\r\n const pagination = `${limit !== undefined ? ` FIRST ${limit}` : ''}${offset > 0 ? ` SKIP ${offset}` : ''}`;\r\n\r\n let query = ` \r\n SELECT${pagination} \r\n U.CODUTE as codice_utente, \r\n U.USRNAME as email, \r\n U.FLGGDPR as flag_gdpr, \r\n U.DATGDPR as data_gdpr, \r\n U.DATINS as data_inserimento, \r\n U.DATSCAPWD as data_scadenza_password, \r\n U.DATLASTLOGIN as data_last_login, \r\n U.STAREG as stato_registrazione, \r\n G.COGNOME as cognome, \r\n G.NOME as nome, \r\n G.AVATAR as avatar, \r\n G.FLG2FATT as flag_due_fattori,\r\n G.FLGPWDLESS as passwordless_login_enabled,\r\n G.CODLINGUA as codice_lingua,\r\n G.CELLULARE as cellulare,\r\n G.FLGSUPER as flag_super, \r\n G.FLGADMINCONFIG as flag_admin_configurator,\r\n COALESCE(G.FLGPASSWORD, 1) as password_login_enabled,\r\n G.PAGDEF as pagina_default,\r\n G.JSON_METADATA as json_metadata,\r\n ${optionalColumn(configColumns, 'RAGSOCCLI', 'G', 'rag_soc_cli', false)},\r\n ${optionalColumn(configColumns, 'NUMMAC', 'G', 'nummac')},\r\n ${optionalColumn(filterColumns, 'NUMREP', 'F', 'num_rep', true)},\r\n ${optionalColumn(filterColumns, 'IDXPERS', 'F', 'idx_pers', true)},\r\n ${optionalColumn(filterColumns, 'CODCLISUPER', 'F', 'cod_cli_super', true)},\r\n ${optionalColumn(filterColumns, 'CODAGE', 'F', 'cod_age', true)},\r\n ${optionalColumn(filterColumns, 'CODCLICOL', 'F', 'cod_cli_col', true)},\r\n ${optionalColumn(filterColumns, 'CODCLIENTI', 'F', 'cod_clienti', false)},\r\n F.TIPFIL AS tip_fil,\r\n ${optionalColumn(filterColumns, 'IDXPOS', 'F', 'idx_postazione', true)}\r\n FROM UTENTI U \r\n INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE\r\n LEFT JOIN FILTRI F ON F.CODUTE = U.CODUTE\r\n WHERE 1=1\r\n `;\r\n\r\n const queryParams: unknown[] = [];\r\n\r\n if (filters?.email) {\r\n query += ` AND LOWER(U.USRNAME) = ? `;\r\n queryParams.push(filters.email.trim().toLowerCase());\r\n }\r\n\r\n if (filters?.codiceUtente) {\r\n query += ` AND U.CODUTE = ? `;\r\n queryParams.push(filters.codiceUtente);\r\n }\r\n\r\n query += ` ORDER BY U.CODUTE DESC `;\r\n\r\n let users = (await Orm.query(\r\n this.accessiOptions.databaseOptions,\r\n query,\r\n queryParams,\r\n )) as UserDto[];\r\n users = users.map(RestUtilities.convertKeysToCamelCase).map(user => this.normalizeUserFlags(user as unknown as UserDto));\r\n\r\n const usersResponse: GetUsersResult[] = [];\r\n\r\n // I campi estensione sono caricati una volta per tabella (non una per utente) in query IN\r\n // suddivise in blocchi per non superare i limiti di parametri del driver.\r\n const extensionFieldsByUser = options?.includeExtensionFields\r\n ? await this.loadExtensionFieldsForUsers(users.map((user) => user.codiceUtente))\r\n : undefined;\r\n\r\n // I grant sono caricati in batch (query IN) invece che utente per utente.\r\n const grantsByUser = options?.includeGrants\r\n ? await this.permissionService.getUsersRolesAndGrants(users.map((user) => user.codiceUtente))\r\n : undefined;\r\n\r\n for (const user of users) {\r\n let userGrants: UserGrantsDto | undefined;\r\n\r\n if (options?.includeGrants) {\r\n userGrants = grantsByUser?.get(user.codiceUtente);\r\n }\r\n\r\n let extensionFields: Record<string, unknown[]> | undefined;\r\n\r\n if (options?.includeExtensionFields) {\r\n extensionFields = {};\r\n for (const ext of this.accessiOptions.extensionFieldsOptions ?? []) {\r\n extensionFields[ext.objectKey] = extensionFieldsByUser?.get(ext.objectKey)?.get(user.codiceUtente) ?? [];\r\n }\r\n }\r\n\r\n usersResponse.push({\r\n utente: user,\r\n userGrants,\r\n extensionFields,\r\n });\r\n }\r\n\r\n return usersResponse;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n /** Conteggio utenti con gli stessi filtri di `getUsers`, per la paginazione (header X-Total-Count). */\r\n async countUsers(filters?: { email?: string; codiceUtente?: number }): Promise<number> {\r\n const conditions: string[] = [];\r\n const params: unknown[] = [];\r\n if (filters?.email) {\r\n conditions.push('LOWER(U.USRNAME) = ?');\r\n params.push(filters.email.trim().toLowerCase());\r\n }\r\n if (filters?.codiceUtente) {\r\n conditions.push('U.CODUTE = ?');\r\n params.push(filters.codiceUtente);\r\n }\r\n\r\n const query = `SELECT COUNT(*) AS TOTAL FROM UTENTI U INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE WHERE 1=1 ${conditions.map((condition) => `AND ${condition}`).join(' ')}`;\r\n const rows = (await Orm.query(this.accessiOptions.databaseOptions, query, params, false)) as Array<Record<string, unknown>>;\r\n const row = rows[0];\r\n return Number(row?.TOTAL ?? row?.total ?? 0) || 0;\r\n }\r\n\r\n private async loadExtensionFieldsForUsers(\r\n codiceUtenti: number[],\r\n ): Promise<Map<string, Map<number, Record<string, unknown>[]>>> {\r\n const byObjectKey = new Map<string, Map<number, Record<string, unknown>[]>>();\r\n const extensions = this.accessiOptions.extensionFieldsOptions ?? [];\r\n const uniqueCodes = Array.from(new Set(codiceUtenti));\r\n\r\n for (const ext of extensions) {\r\n const grouped = new Map<number, Record<string, unknown>[]>();\r\n\r\n for (const chunk of this.chunkArray(uniqueCodes, 500)) {\r\n if (chunk.length === 0) {\r\n continue;\r\n }\r\n\r\n const placeholders = chunk.map(() => '?').join(', ');\r\n const rows = (await Orm.query(\r\n ext.databaseOptions,\r\n `SELECT ${ext.tableJoinFieldName} AS __joinkey, ${ext.tableFields.join(', ')} FROM ${ext.tableName} WHERE ${ext.tableJoinFieldName} IN (${placeholders})`,\r\n chunk,\r\n )).map(RestUtilities.convertKeysToCamelCase) as Array<Record<string, unknown>>;\r\n\r\n for (const row of rows) {\r\n const { __joinkey, ...rest } = row;\r\n const key = Number(__joinkey);\r\n if (!Number.isFinite(key)) {\r\n continue;\r\n }\r\n\r\n const bucket = grouped.get(key);\r\n if (bucket) {\r\n bucket.push(rest);\r\n } else {\r\n grouped.set(key, [rest]);\r\n }\r\n }\r\n }\r\n\r\n byObjectKey.set(ext.objectKey, grouped);\r\n }\r\n\r\n return byObjectKey;\r\n }\r\n\r\n private chunkArray<T>(items: T[], size: number): T[][] {\r\n const chunks: T[][] = [];\r\n for (let index = 0; index < items.length; index += size) {\r\n chunks.push(items.slice(index, index + size));\r\n }\r\n return chunks;\r\n }\r\n\r\n /** Cerca il codice interno per email normalizzata. Il chiamante deve gestire il caso senza righe. */\r\n async getCodiceUtenteByEmail(email: string): Promise<{ codiceUtente: number }> {\r\n try {\r\n const query = `SELECT CODUTE as codice_utente FROM UTENTI WHERE LOWER(USRNAME) = ?`;\r\n const result = await Orm.query(this.accessiOptions.databaseOptions, query, [\r\n email.trim().toLowerCase(),\r\n ]);\r\n return result.map(RestUtilities.convertKeysToCamelCase)[0] as { codiceUtente: number };\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n /** Recupera il profilo locale usato dal login, compresi filtri Accessi eventualmente presenti. */\r\n async getUserByEmail(email: string): Promise<UserDto | null> {\r\n const configColumns = await getTableColumns(this.accessiOptions, 'UTENTI_CONFIG');\r\n const query = `\r\n SELECT \r\n U.CODUTE AS codice_utente, \r\n U.USRNAME AS email, \r\n U.FLGGDPR AS flag_gdpr,\r\n U.DATSCAPWD as data_scadenza_password,\r\n U.STAREG AS stato_registrazione, \r\n C.COGNOME AS cognome, \r\n C.NOME AS nome, \r\n C.AVATAR AS avatar, \r\n C.FLG2FATT AS flag_due_fattori,\r\n C.FLGPWDLESS AS passwordless_login_enabled,\r\n C.CODLINGUA AS codice_lingua, \r\n C.CELLULARE AS cellulare, \r\n C.FLGSUPER AS flag_super,\r\n C.FLGADMINCONFIG AS flag_admin_configurator,\r\n COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled,\r\n C.PAGDEF AS pagina_default,\r\n ${optionalColumn(configColumns, 'NUMMAC', 'C', 'nummac')},\r\n ${optionalColumn(configColumns, 'RAGSOCCLI', 'C', 'rag_soc_cli', false)}\r\n FROM UTENTI U\r\n INNER JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE\r\n WHERE LOWER(U.USRNAME) = ?\r\n `;\r\n\r\n const utenti = (await Orm.query(this.accessiOptions.databaseOptions, query, [email]).then(\r\n (results) => results.map(RestUtilities.convertKeysToCamelCase),\r\n )) as UserDto[];\r\n\r\n const user = utenti[0];\r\n if (!user) return null;\r\n\r\n const filtro = (await this.filtriService.getFiltriUser(user.codiceUtente))[0];\r\n if (filtro) {\r\n const filterValues: Record<string, unknown> = {};\r\n\r\n Object.entries(FILTRI_UTENTE_DB_MAPPING).forEach(([key]) => {\r\n if (key in filtro) {\r\n filterValues[key] = filtro[key as keyof FiltriUtente];\r\n }\r\n });\r\n\r\n Object.assign(user, filterValues);\r\n }\r\n\r\n return this.normalizeUserFlags(user);\r\n }\r\n\r\n async insertUserFilters(codiceUtente: number, filterData: RegisterRequest): Promise<void> {\r\n await this.filtriService.upsertFiltriUtente(codiceUtente, filterData);\r\n }\r\n\r\n /**\r\n * Crea utente, configurazione e filtri. La registrazione pubblica resta in stato `INVIO` e non puo\r\n * impostare privilegi, ruoli o grant; soltanto flussi backend fidati possono usare `allowPrivilegedFields`.\r\n */\r\n async register(\r\n registrationData: RegisterRequest,\r\n options?: { allowPrivilegedFields?: boolean; initialState?: StatoRegistrazione },\r\n ): Promise<number> {\r\n try {\r\n const allowPrivilegedFields = options?.allowPrivilegedFields === true;\r\n const normalizedEmail = this.normalizeEmail(registrationData.email);\r\n\r\n if (registrationData.flagDueFattori !== undefined && typeof registrationData.flagDueFattori !== 'boolean') {\r\n throw new BadRequestException('Il flag due fattori deve essere booleano.');\r\n }\r\n if (registrationData.flagDueFattori && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(normalizedEmail)) {\r\n throw new BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');\r\n }\r\n\r\n if (\r\n !allowPrivilegedFields &&\r\n (registrationData.flagSuper !== undefined ||\r\n registrationData.flagAdminConfigurator !== undefined ||\r\n registrationData.flagDueFattori !== undefined ||\r\n registrationData.roles !== undefined ||\r\n registrationData.permissions !== undefined)\r\n ) {\r\n throw new Error('I campi privilegiati non sono consentiti nella registrazione pubblica.');\r\n }\r\n\r\n await this.validateApplicationFields(registrationData);\r\n await this.ensureEmailIsAvailable(normalizedEmail);\r\n\r\n const queryUtenti = `INSERT INTO UTENTI (USRNAME, STAREG) VALUES (?,?) RETURNING CODUTE`;\r\n // Public/local registrations keep the historic INVIO state; trusted master or SSO flows may opt into CONF.\r\n const paramsUtenti = [normalizedEmail, options?.initialState ?? StatoRegistrazione.INVIO];\r\n\r\n // Utente e configurazione sono creati in un'unica transazione; filtri e assegnazioni restano\r\n // fuori perché delegati a servizi dedicati.\r\n const codiceUtente = await Orm.withTransaction(\r\n this.accessiOptions.databaseOptions,\r\n async (transaction) => {\r\n const insertedUsers = await Orm.transactionQuery<unknown>(\r\n transaction,\r\n queryUtenti,\r\n paramsUtenti,\r\n );\r\n\r\n const insertedUser = (Array.isArray(insertedUsers) ? insertedUsers[0] : insertedUsers) as Record<string, unknown> | undefined;\r\n const newCodiceUtente = Number(\r\n insertedUser?.CODUTE ?? insertedUser?.codute,\r\n );\r\n if (!newCodiceUtente) {\r\n throw new Error('Creazione utente non riuscita: impossibile recuperare CODUTE.');\r\n }\r\n\r\n const utentiConfigFields = ['CODUTE', 'COGNOME', 'NOME'];\r\n const utentiConfigPlaceholders = ['?', '?', '?'];\r\n const utentiConfigParams: unknown[] = [newCodiceUtente, registrationData.cognome, registrationData.nome];\r\n\r\n const optionalFields: OptionalField<unknown>[] = [\r\n {\r\n key: 'cellulare',\r\n dbField: 'CELLULARE',\r\n transform: (v) => String(v),\r\n },\r\n {\r\n key: 'avatar',\r\n dbField: 'AVATAR',\r\n transform: (v) => String(v),\r\n },\r\n {\r\n key: 'flagDueFattori',\r\n dbField: 'FLG2FATT',\r\n transform: (v) => (v ? 1 : 0),\r\n },\r\n {\r\n key: 'paginaDefault',\r\n dbField: 'PAGDEF',\r\n transform: (v) => String(v),\r\n },\r\n {\r\n key: 'nummac',\r\n dbField: 'NUMMAC',\r\n transform: (v) => Number(v),\r\n },\r\n {\r\n key: 'ragSocCli',\r\n dbField: 'RAGSOCCLI',\r\n transform: (v) => String(v),\r\n },\r\n ];\r\n\r\n if (allowPrivilegedFields) {\r\n optionalFields.push(\r\n {\r\n key: 'flagSuper',\r\n dbField: 'FLGSUPER',\r\n transform: (v) => (v ? 1 : 0),\r\n },\r\n {\r\n key: 'flagAdminConfigurator',\r\n dbField: 'FLGADMINCONFIG',\r\n transform: (v) => (v ? 1 : 0),\r\n },\r\n );\r\n }\r\n\r\n for (const field of optionalFields) {\r\n const value = registrationData[field.key];\r\n if (value !== undefined && value !== null) {\r\n utentiConfigFields.push(field.dbField);\r\n utentiConfigPlaceholders.push('?');\r\n utentiConfigParams.push(field.transform ? field.transform(value) : value);\r\n }\r\n }\r\n\r\n const queryUtentiConfig = `INSERT INTO UTENTI_CONFIG (${utentiConfigFields.join(\r\n ', ',\r\n )}) VALUES (${utentiConfigPlaceholders.join(', ')})`;\r\n await Orm.transactionQuery(transaction, queryUtentiConfig, utentiConfigParams);\r\n\r\n return newCodiceUtente;\r\n },\r\n );\r\n\r\n await this.filtriService.upsertFiltriUtente(codiceUtente, registrationData);\r\n\r\n if (allowPrivilegedFields && !!registrationData.roles && registrationData.roles.length > 0) {\r\n await this.permissionService.assignRolesToUser(codiceUtente, registrationData.roles);\r\n }\r\n\r\n if (\r\n allowPrivilegedFields &&\r\n !!registrationData.permissions &&\r\n registrationData.permissions.length > 0\r\n ) {\r\n await this.permissionService.assignPermissionsToUser(\r\n codiceUtente,\r\n registrationData.permissions,\r\n );\r\n }\r\n\r\n return codiceUtente;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Aggiorna il profilo utente e i filtri. Le modifiche a stato, ruoli, grant e flag amministrativi richiedono\r\n * `allowPrivilegedChanges`; gli array ruolo/grant passati in un flusso fidato sostituiscono le assegnazioni.\r\n */\r\n async updateUser(\r\n codiceUtente: number,\r\n user: UserDto,\r\n options?: { allowPrivilegedChanges?: boolean },\r\n ): Promise<void> {\r\n try {\r\n if (!codiceUtente) throw new Error('Impossibile aggiornare senza codice utente.');\r\n const allowPrivilegedChanges = options?.allowPrivilegedChanges === true;\r\n\r\n for (const value of [user.flagDueFattori, user.passwordlessLoginEnabled]) {\r\n if (value !== undefined && typeof value !== 'boolean') throw new BadRequestException('Le policy di autenticazione devono essere booleane.');\r\n }\r\n\r\n if (\r\n !allowPrivilegedChanges &&\r\n (user.statoRegistrazione !== undefined ||\r\n user.flagSuper !== undefined ||\r\n user.flagAdminConfigurator !== undefined ||\r\n user.passwordLoginEnabled !== undefined ||\r\n user.passwordlessLoginEnabled !== undefined ||\r\n user.flagDueFattori !== undefined ||\r\n user.roles !== undefined ||\r\n user.permissions !== undefined)\r\n ) {\r\n throw new Error('Non e consentito modificare campi privilegiati.');\r\n }\r\n\r\n if (user.flagDueFattori !== undefined || user.passwordlessLoginEnabled !== undefined || user.email !== undefined) {\r\n const current = await this.getAuthenticatedUserSnapshot(codiceUtente);\r\n if (!current) throw new BadRequestException('Utente non trovato.');\r\n const twoFactor = user.flagDueFattori ?? current.flagDueFattori;\r\n const passwordless = user.passwordlessLoginEnabled ?? current.passwordlessLoginEnabled;\r\n if (passwordless && !twoFactor) throw new BadRequestException('Il login senza password richiede il codice di accesso attivo.');\r\n if (twoFactor && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test((user.email ?? current.email ?? '').trim())) {\r\n throw new BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');\r\n }\r\n }\r\n\r\n const { configColumns } = await this.validateApplicationFields(user);\r\n const utentiUpdates = [];\r\n const utentiParams = [];\r\n\r\n if (user.email !== undefined) {\r\n const normalizedEmail = this.normalizeEmail(user.email);\r\n await this.ensureEmailIsAvailable(normalizedEmail, codiceUtente);\r\n utentiUpdates.push('usrname = ?');\r\n utentiParams.push(normalizedEmail);\r\n }\r\n if (user.flagGdpr !== undefined) {\r\n utentiUpdates.push('flggdpr = ?');\r\n utentiParams.push(user.flagGdpr);\r\n }\r\n if (allowPrivilegedChanges && user.statoRegistrazione !== undefined) {\r\n utentiUpdates.push('stareg = ?');\r\n utentiParams.push(user.statoRegistrazione);\r\n }\r\n\r\n if (utentiUpdates.length > 0) {\r\n const queryUtenti = `UPDATE UTENTI SET ${utentiUpdates.join(', ')} WHERE CODUTE = ?`;\r\n utentiParams.push(codiceUtente);\r\n await Orm.execute(this.accessiOptions.databaseOptions, queryUtenti, utentiParams);\r\n }\r\n\r\n const utentiConfigUpdates = [];\r\n const utentiConfigParams = [];\r\n\r\n if (user.cognome !== undefined) {\r\n utentiConfigUpdates.push('cognome = ?');\r\n utentiConfigParams.push(user.cognome);\r\n }\r\n if (user.nome !== undefined) {\r\n utentiConfigUpdates.push('nome = ?');\r\n utentiConfigParams.push(user.nome);\r\n }\r\n if (user.avatar !== undefined) {\r\n utentiConfigUpdates.push('avatar = ?');\r\n utentiConfigParams.push(user.avatar);\r\n }\r\n if (user.flagDueFattori !== undefined) {\r\n utentiConfigUpdates.push('flg2fatt = ?');\r\n utentiConfigParams.push(user.flagDueFattori ? 1 : 0);\r\n }\r\n if (user.passwordlessLoginEnabled !== undefined) {\r\n utentiConfigUpdates.push('flgpwdless = ?');\r\n utentiConfigParams.push(user.passwordlessLoginEnabled ? 1 : 0);\r\n }\r\n if (user.codiceLingua !== undefined) {\r\n utentiConfigUpdates.push('codlingua = ?');\r\n utentiConfigParams.push(user.codiceLingua);\r\n }\r\n if (user.cellulare !== undefined) {\r\n utentiConfigUpdates.push('cellulare = ?');\r\n utentiConfigParams.push(user.cellulare);\r\n }\r\n if (allowPrivilegedChanges && user.flagSuper !== undefined) {\r\n utentiConfigUpdates.push('flgsuper = ?');\r\n utentiConfigParams.push(user.flagSuper);\r\n }\r\n if (allowPrivilegedChanges && user.flagAdminConfigurator !== undefined) {\r\n utentiConfigUpdates.push('flgadminconfig = ?');\r\n utentiConfigParams.push(user.flagAdminConfigurator);\r\n }\r\n if (allowPrivilegedChanges && user.passwordLoginEnabled !== undefined) {\r\n utentiConfigUpdates.push('flgpassword = ?');\r\n utentiConfigParams.push(user.passwordLoginEnabled ? 1 : 0);\r\n }\r\n if (user.paginaDefault !== undefined) {\r\n utentiConfigUpdates.push('pagdef = ?');\r\n utentiConfigParams.push(user.paginaDefault);\r\n }\r\n if (user.jsonMetadata !== undefined) {\r\n utentiConfigUpdates.push('json_metadata = ?');\r\n utentiConfigParams.push(user.jsonMetadata);\r\n }\r\n if (user.ragSocCli !== undefined && (user.ragSocCli !== null || configColumns?.has('RAGSOCCLI'))) {\r\n utentiConfigUpdates.push('ragsoccli = ?');\r\n utentiConfigParams.push(user.ragSocCli);\r\n }\r\n\r\n if (utentiConfigUpdates.length > 0) {\r\n const queryUtentiConfig = `UPDATE UTENTI_CONFIG SET ${utentiConfigUpdates.join(\r\n ', ',\r\n )} WHERE CODUTE = ?`;\r\n utentiConfigParams.push(codiceUtente);\r\n await Orm.execute(\r\n this.accessiOptions.databaseOptions,\r\n queryUtentiConfig,\r\n utentiConfigParams,\r\n );\r\n }\r\n\r\n if (allowPrivilegedChanges && Array.isArray(user.roles)) {\r\n await this.permissionService.assignRolesToUser(codiceUtente, user.roles);\r\n }\r\n\r\n if (allowPrivilegedChanges && Array.isArray(user.permissions)) {\r\n await this.permissionService.assignPermissionsToUser(codiceUtente, user.permissions);\r\n }\r\n\r\n await this.filtriService.upsertFiltriUtente(codiceUtente, user);\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n async updateUserFilters(codiceUtente: number, user: UserDto): Promise<void> {\r\n await this.filtriService.upsertFiltriUtente(codiceUtente, user);\r\n }\r\n\r\n /** Eliminazione logica: imposta lo stato `DELETE` senza cancellare lo storico o i collegamenti SSO. */\r\n async deleteUser(codiceCliente: number): Promise<void> {\r\n try {\r\n const query = `UPDATE UTENTI SET STAREG = ? WHERE CODUTE = ?`;\r\n await Orm.execute(this.accessiOptions.databaseOptions, query, [\r\n StatoRegistrazione.DELETE,\r\n codiceCliente,\r\n ]);\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n /** Cambia esplicitamente lo stato di registrazione; usare questa API per blocco, conferma o eliminazione logica. */\r\n async setStato(codiceCliente: number, statoRegistrazione: StatoRegistrazione) {\r\n try {\r\n const query = `UPDATE UTENTI SET STAREG = ? WHERE CODUTE = ?`;\r\n await Orm.execute(this.accessiOptions.databaseOptions, query, [\r\n statoRegistrazione,\r\n codiceCliente,\r\n ]);\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n public async setGdpr(codiceUtente: number) {\r\n try {\r\n return await Orm.executeMultiple(this.accessiOptions.databaseOptions, [\r\n { query: 'INSERT INTO UTENTI_GDPR (CODUTE, GDPR) VALUES (?, ?)', params: [codiceUtente, 'true'] },\r\n { query: 'UPDATE UTENTI SET FLGGDPR = 1, DATGDPR = CURRENT_DATE WHERE CODUTE = ?', params: [codiceUtente] },\r\n ]);\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n}\r\n"]}
@@ -1,213 +1,213 @@
1
- <!DOCTYPE html>
2
- <html lang="it">
3
-
4
- <head>
5
- <meta charset="UTF-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <title>Reset Password</title>
8
- <style>
9
- * {
10
- box-sizing: border-box;
11
- margin: 0;
12
- padding: 0;
13
- font-family: Arial, sans-serif;
14
- }
15
-
16
- body {
17
- display: flex;
18
- justify-content: center;
19
- align-items: center;
20
- height: 100vh;
21
- background: linear-gradient(135deg, #0068ae, #004e80, #002c50);
22
- color: #fff;
23
- }
24
-
25
- .container {
26
- background: rgba(255, 255, 255, 0.15);
27
- padding: 25px;
28
- border-radius: 12px;
29
- backdrop-filter: blur(12px);
30
- box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.3);
31
- width: 380px;
32
- text-align: center;
33
- border: 1px solid rgba(255, 255, 255, 0.2);
34
- }
35
-
36
- h1 {
37
- font-size: 24px;
38
- margin-bottom: 15px;
39
- color: #ffffff;
40
- }
41
-
42
- .form-group {
43
- margin: 12px 0;
44
- text-align: left;
45
- }
46
-
47
- label {
48
- font-size: 14px;
49
- font-weight: bold;
50
- display: block;
51
- margin-bottom: 5px;
52
- color: #ffffff;
53
- }
54
-
55
- input {
56
- width: 100%;
57
- padding: 12px;
58
- border: none;
59
- border-radius: 6px;
60
- font-size: 14px;
61
- margin-top: 5px;
62
- background: rgba(255, 255, 255, 0.15);
63
- color: #ffffff;
64
- border: 1px solid rgba(255, 255, 255, 0.3);
65
- }
66
-
67
- input:focus {
68
- outline: none;
69
- border: 2px solid #ffffff;
70
- background: rgba(255, 255, 255, 0.2);
71
- }
72
-
73
- .error {
74
- color: #ff6b6b;
75
- font-size: 12px;
76
- margin-top: 5px;
77
- display: none;
78
- }
79
-
80
- button {
81
- background: linear-gradient(90deg, #0080ff, #0068ae);
82
- border: none;
83
- padding: 12px;
84
- font-size: 16px;
85
- border-radius: 6px;
86
- width: 100%;
87
- color: #ffffff;
88
- cursor: pointer;
89
- font-weight: bold;
90
- transition: all 0.3s ease;
91
- box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.2);
92
- }
93
-
94
- button:hover {
95
- background: linear-gradient(90deg, #0095ff, #0070c0);
96
- transform: scale(1.05);
97
- }
98
- </style>
99
- </head>
100
-
101
- <body>
102
- <div class="container">
103
- <h1>Reimposta la tua password</h1>
104
- <form id="resetForm">
105
- <input type="hidden" id="token" value="">
106
- <input type="hidden" id="returnUrl" value="">
107
- <input type="hidden" id="prefix" value="">
108
-
109
- <div class="form-group">
110
- <label for="password">Nuova Password:</label>
111
- <input type="password" id="password" required>
112
- <p class="error" id="passwordError">La password deve avere almeno 8 caratteri.</p>
113
- </div>
114
-
115
- <div class="form-group">
116
- <label for="confirmPassword">Conferma Password:</label>
117
- <input type="password" id="confirmPassword" required>
118
- <p class="error" id="confirmError">Le password non corrispondono.</p>
119
- </div>
120
-
121
- <button type="submit">Aggiorna password</button>
122
- </form>
123
- </div>
124
-
125
- <script>
126
- document.addEventListener("DOMContentLoaded", function () {
127
- function resolveSafeReturnUrl(rawReturnUrl) {
128
- if (!rawReturnUrl) {
129
- return "/";
130
- }
131
-
132
- if (rawReturnUrl.startsWith("/")) {
133
- return rawReturnUrl;
134
- }
135
-
136
- try {
137
- const parsed = new URL(rawReturnUrl, window.location.origin);
138
- if (parsed.origin === window.location.origin) {
139
- return `${parsed.pathname}${parsed.search}${parsed.hash}`;
140
- }
141
- } catch (error) {}
142
-
143
- return "/";
144
- }
145
-
146
- function resolveSafePrefix(rawPrefix) {
147
- if (!rawPrefix) {
148
- return "";
149
- }
150
-
151
- let normalizedPrefix = rawPrefix.trim();
152
- if (!normalizedPrefix.startsWith("/")) {
153
- normalizedPrefix = "/" + normalizedPrefix;
154
- }
155
-
156
- if (normalizedPrefix.endsWith("/")) {
157
- normalizedPrefix = normalizedPrefix.slice(0, -1);
158
- }
159
-
160
- return /^\/[A-Za-z0-9/_-]*$/.test(normalizedPrefix) ? normalizedPrefix : "";
161
- }
162
-
163
- const urlParams = new URLSearchParams(window.location.search);
164
- const token = window.location.pathname.split("/").pop();
165
- const returnUrl = resolveSafeReturnUrl(urlParams.get("returnUrl"));
166
- const prefix = resolveSafePrefix(urlParams.get("prefix"));
167
-
168
- document.getElementById("token").value = token;
169
- document.getElementById("returnUrl").value = returnUrl;
170
- document.getElementById("prefix").value = prefix;
171
-
172
- document.getElementById("resetForm").addEventListener("submit", async function (event) {
173
- event.preventDefault();
174
- const password = document.getElementById("password").value;
175
- const confirmPassword = document.getElementById("confirmPassword").value;
176
- const passwordError = document.getElementById("passwordError");
177
- const confirmError = document.getElementById("confirmError");
178
-
179
- passwordError.style.display = "none";
180
- confirmError.style.display = "none";
181
-
182
- if (password.length < 8) {
183
- passwordError.style.display = "block";
184
- return;
185
- }
186
-
187
- if (password !== confirmPassword) {
188
- confirmError.style.display = "block";
189
- return;
190
- }
191
-
192
- try {
193
- const response = await fetch(`${prefix}/api/accessi/auth/confirm-reset-password/${token}`, {
194
- method: "POST",
195
- headers: { "Content-Type": "application/json" },
196
- body: JSON.stringify({ newPassword: password })
197
- });
198
-
199
- const data = await response.json();
200
- alert(data.message || "Password aggiornata con successo!");
201
- } catch (error) {
202
- alert("Errore nel reset della password. Riprova piu tardi.");
203
- } finally {
204
- setTimeout(() => {
205
- window.location.href = returnUrl;
206
- }, 500);
207
- }
208
- });
209
- });
210
- </script>
211
- </body>
212
-
213
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="it">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Reset Password</title>
8
+ <style>
9
+ * {
10
+ box-sizing: border-box;
11
+ margin: 0;
12
+ padding: 0;
13
+ font-family: Arial, sans-serif;
14
+ }
15
+
16
+ body {
17
+ display: flex;
18
+ justify-content: center;
19
+ align-items: center;
20
+ height: 100vh;
21
+ background: linear-gradient(135deg, #0068ae, #004e80, #002c50);
22
+ color: #fff;
23
+ }
24
+
25
+ .container {
26
+ background: rgba(255, 255, 255, 0.15);
27
+ padding: 25px;
28
+ border-radius: 12px;
29
+ backdrop-filter: blur(12px);
30
+ box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.3);
31
+ width: 380px;
32
+ text-align: center;
33
+ border: 1px solid rgba(255, 255, 255, 0.2);
34
+ }
35
+
36
+ h1 {
37
+ font-size: 24px;
38
+ margin-bottom: 15px;
39
+ color: #ffffff;
40
+ }
41
+
42
+ .form-group {
43
+ margin: 12px 0;
44
+ text-align: left;
45
+ }
46
+
47
+ label {
48
+ font-size: 14px;
49
+ font-weight: bold;
50
+ display: block;
51
+ margin-bottom: 5px;
52
+ color: #ffffff;
53
+ }
54
+
55
+ input {
56
+ width: 100%;
57
+ padding: 12px;
58
+ border: none;
59
+ border-radius: 6px;
60
+ font-size: 14px;
61
+ margin-top: 5px;
62
+ background: rgba(255, 255, 255, 0.15);
63
+ color: #ffffff;
64
+ border: 1px solid rgba(255, 255, 255, 0.3);
65
+ }
66
+
67
+ input:focus {
68
+ outline: none;
69
+ border: 2px solid #ffffff;
70
+ background: rgba(255, 255, 255, 0.2);
71
+ }
72
+
73
+ .error {
74
+ color: #ff6b6b;
75
+ font-size: 12px;
76
+ margin-top: 5px;
77
+ display: none;
78
+ }
79
+
80
+ button {
81
+ background: linear-gradient(90deg, #0080ff, #0068ae);
82
+ border: none;
83
+ padding: 12px;
84
+ font-size: 16px;
85
+ border-radius: 6px;
86
+ width: 100%;
87
+ color: #ffffff;
88
+ cursor: pointer;
89
+ font-weight: bold;
90
+ transition: all 0.3s ease;
91
+ box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.2);
92
+ }
93
+
94
+ button:hover {
95
+ background: linear-gradient(90deg, #0095ff, #0070c0);
96
+ transform: scale(1.05);
97
+ }
98
+ </style>
99
+ </head>
100
+
101
+ <body>
102
+ <div class="container">
103
+ <h1>Reimposta la tua password</h1>
104
+ <form id="resetForm">
105
+ <input type="hidden" id="token" value="">
106
+ <input type="hidden" id="returnUrl" value="">
107
+ <input type="hidden" id="prefix" value="">
108
+
109
+ <div class="form-group">
110
+ <label for="password">Nuova Password:</label>
111
+ <input type="password" id="password" required>
112
+ <p class="error" id="passwordError">La password deve avere almeno 8 caratteri.</p>
113
+ </div>
114
+
115
+ <div class="form-group">
116
+ <label for="confirmPassword">Conferma Password:</label>
117
+ <input type="password" id="confirmPassword" required>
118
+ <p class="error" id="confirmError">Le password non corrispondono.</p>
119
+ </div>
120
+
121
+ <button type="submit">Aggiorna password</button>
122
+ </form>
123
+ </div>
124
+
125
+ <script>
126
+ document.addEventListener("DOMContentLoaded", function () {
127
+ function resolveSafeReturnUrl(rawReturnUrl) {
128
+ if (!rawReturnUrl) {
129
+ return "/";
130
+ }
131
+
132
+ if (rawReturnUrl.startsWith("/")) {
133
+ return rawReturnUrl;
134
+ }
135
+
136
+ try {
137
+ const parsed = new URL(rawReturnUrl, window.location.origin);
138
+ if (parsed.origin === window.location.origin) {
139
+ return `${parsed.pathname}${parsed.search}${parsed.hash}`;
140
+ }
141
+ } catch (error) {}
142
+
143
+ return "/";
144
+ }
145
+
146
+ function resolveSafePrefix(rawPrefix) {
147
+ if (!rawPrefix) {
148
+ return "";
149
+ }
150
+
151
+ let normalizedPrefix = rawPrefix.trim();
152
+ if (!normalizedPrefix.startsWith("/")) {
153
+ normalizedPrefix = "/" + normalizedPrefix;
154
+ }
155
+
156
+ if (normalizedPrefix.endsWith("/")) {
157
+ normalizedPrefix = normalizedPrefix.slice(0, -1);
158
+ }
159
+
160
+ return /^\/[A-Za-z0-9/_-]*$/.test(normalizedPrefix) ? normalizedPrefix : "";
161
+ }
162
+
163
+ const urlParams = new URLSearchParams(window.location.search);
164
+ const token = window.location.pathname.split("/").pop();
165
+ const returnUrl = resolveSafeReturnUrl(urlParams.get("returnUrl"));
166
+ const prefix = resolveSafePrefix(urlParams.get("prefix"));
167
+
168
+ document.getElementById("token").value = token;
169
+ document.getElementById("returnUrl").value = returnUrl;
170
+ document.getElementById("prefix").value = prefix;
171
+
172
+ document.getElementById("resetForm").addEventListener("submit", async function (event) {
173
+ event.preventDefault();
174
+ const password = document.getElementById("password").value;
175
+ const confirmPassword = document.getElementById("confirmPassword").value;
176
+ const passwordError = document.getElementById("passwordError");
177
+ const confirmError = document.getElementById("confirmError");
178
+
179
+ passwordError.style.display = "none";
180
+ confirmError.style.display = "none";
181
+
182
+ if (password.length < 8) {
183
+ passwordError.style.display = "block";
184
+ return;
185
+ }
186
+
187
+ if (password !== confirmPassword) {
188
+ confirmError.style.display = "block";
189
+ return;
190
+ }
191
+
192
+ try {
193
+ const response = await fetch(`${prefix}/api/accessi/auth/confirm-reset-password/${token}`, {
194
+ method: "POST",
195
+ headers: { "Content-Type": "application/json" },
196
+ body: JSON.stringify({ newPassword: password })
197
+ });
198
+
199
+ const data = await response.json();
200
+ alert(data.message || "Password aggiornata con successo!");
201
+ } catch (error) {
202
+ alert("Errore nel reset della password. Riprova piu tardi.");
203
+ } finally {
204
+ setTimeout(() => {
205
+ window.location.href = returnUrl;
206
+ }, 500);
207
+ }
208
+ });
209
+ });
210
+ </script>
211
+ </body>
212
+
213
+ </html>