emilsoftware-utilities 2.0.0-dev.4 → 2.0.0-dev.40

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 (596) hide show
  1. package/README.MD +199 -38
  2. package/dist/ContractGenerator.d.ts +4 -3
  3. package/dist/ContractGenerator.js +15 -5
  4. package/dist/ContractGenerator.js.map +1 -1
  5. package/dist/DailyFileTransport.d.ts +21 -0
  6. package/dist/DailyFileTransport.js +74 -0
  7. package/dist/DailyFileTransport.js.map +1 -0
  8. package/dist/DatabaseUpdater.d.ts +1 -1
  9. package/dist/DatabaseUpdater.js +32 -29
  10. package/dist/DatabaseUpdater.js.map +1 -1
  11. package/dist/EmilsoftwareModule.js.map +1 -1
  12. package/dist/ExecutionTimeLogger.d.ts +2 -2
  13. package/dist/ExecutionTimeLogger.js +5 -4
  14. package/dist/ExecutionTimeLogger.js.map +1 -1
  15. package/dist/Logger.d.ts +22 -11
  16. package/dist/Logger.js +132 -119
  17. package/dist/Logger.js.map +1 -1
  18. package/dist/Orm.d.ts +28 -12
  19. package/dist/Orm.js +194 -153
  20. package/dist/Orm.js.map +1 -1
  21. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  22. package/dist/Utilities.d.ts +18 -8
  23. package/dist/Utilities.js +117 -38
  24. package/dist/Utilities.js.map +1 -1
  25. package/dist/accessi-module/AccessiModule.d.ts +116 -2
  26. package/dist/accessi-module/AccessiModule.js +36 -5
  27. package/dist/accessi-module/AccessiModule.js.map +1 -1
  28. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  29. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  30. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  31. package/dist/accessi-module/Console/console.css +676 -0
  32. package/dist/accessi-module/Console/console.d.ts +1 -0
  33. package/dist/accessi-module/Console/console.js +3351 -0
  34. package/dist/accessi-module/Console/console.js.map +1 -0
  35. package/dist/accessi-module/Console/generated/accessiApi.d.ts +582 -0
  36. package/dist/accessi-module/Console/generated/accessiApi.js +549 -0
  37. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  38. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  39. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  40. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  41. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  42. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  43. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  44. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  45. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  46. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  47. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  48. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  49. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  50. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  51. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  52. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  53. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  54. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  55. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  56. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  57. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  58. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  59. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.d.ts +17 -0
  60. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js +9 -0
  61. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +1 -0
  62. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.d.ts +14 -0
  63. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js +3 -0
  64. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +1 -0
  65. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.d.ts +13 -0
  66. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js +9 -0
  67. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  68. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  69. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  70. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  71. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  72. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  73. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  74. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  75. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  76. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  77. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  78. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  79. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  80. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  81. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  82. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  83. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  84. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  85. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  86. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +22 -0
  87. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  88. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  89. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  90. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  91. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  92. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  93. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  94. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  95. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  96. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  97. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  98. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  99. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  100. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  101. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  102. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  103. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  104. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  105. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  106. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  107. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  108. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  109. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  110. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  111. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  112. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  113. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  114. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  115. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  116. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  117. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  118. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  119. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  120. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  121. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  122. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  123. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  124. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  125. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  126. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  127. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  128. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  129. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  130. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  131. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  132. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  133. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  134. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  135. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  136. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  137. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  138. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  139. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  140. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  141. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  142. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  143. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  144. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  145. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  146. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  147. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  148. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  149. package/dist/accessi-module/Console/generated/model/getSchemaResponse.d.ts +14 -0
  150. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js +3 -0
  151. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +1 -0
  152. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  153. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  154. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  155. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  156. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  157. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  158. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  159. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  160. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  161. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  162. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  163. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  164. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  165. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  166. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  167. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  168. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  169. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  170. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  171. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  172. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  173. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  174. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  175. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  176. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  177. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  178. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  179. package/dist/accessi-module/Console/generated/model/index.d.ts +99 -0
  180. package/dist/accessi-module/Console/generated/model/index.js +116 -0
  181. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  182. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  183. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  184. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  185. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  186. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  187. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  188. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  189. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  190. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  191. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  192. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  193. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  194. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  195. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  196. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  197. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  198. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  199. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  200. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  201. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  202. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  203. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  204. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  205. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  206. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  207. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  208. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  209. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  210. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  211. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  212. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  213. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  214. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  215. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  216. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  217. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  218. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  219. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  220. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  221. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  222. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  223. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  224. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  225. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  226. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  227. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  228. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  229. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  230. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  231. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  232. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  233. package/dist/accessi-module/Console/generated/model/schemaDdlResult.d.ts +20 -0
  234. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js +3 -0
  235. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +1 -0
  236. package/dist/accessi-module/Console/generated/model/schemaDdlSection.d.ts +12 -0
  237. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js +9 -0
  238. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +1 -0
  239. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  240. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  241. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  242. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  243. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  244. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  245. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  246. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  247. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  248. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  249. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  250. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  251. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  252. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  253. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  254. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  255. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  256. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  257. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  258. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  259. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  260. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  261. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  262. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  263. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  264. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  265. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  266. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  267. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  268. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  269. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  270. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  271. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  272. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  273. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  274. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  275. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  276. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  277. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  278. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  279. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  280. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  281. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  282. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  283. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  284. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  285. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  286. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  287. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  288. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  289. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  290. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  291. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  292. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  293. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  294. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  295. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  296. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +17 -0
  297. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  298. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  299. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  300. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  301. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  302. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  303. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  304. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  305. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  306. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  307. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  308. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  309. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  310. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  311. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  312. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  313. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  314. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  315. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  316. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  317. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  318. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  319. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  320. package/dist/accessi-module/Console/help.d.ts +13 -0
  321. package/dist/accessi-module/Console/help.js +355 -0
  322. package/dist/accessi-module/Console/help.js.map +1 -0
  323. package/dist/accessi-module/Console/index.html +153 -0
  324. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  325. package/dist/accessi-module/Console/wiki.js +730 -0
  326. package/dist/accessi-module/Console/wiki.js.map +1 -0
  327. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +18 -0
  328. package/dist/accessi-module/Controllers/AccessiConsoleController.js +111 -0
  329. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  330. package/dist/accessi-module/Controllers/AuthController.d.ts +12 -6
  331. package/dist/accessi-module/Controllers/AuthController.js +167 -82
  332. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  333. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -5
  334. package/dist/accessi-module/Controllers/ConfiguratorController.js +26 -44
  335. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  336. package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
  337. package/dist/accessi-module/Controllers/EmailController.js +12 -14
  338. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  339. package/dist/accessi-module/Controllers/FiltriController.d.ts +5 -4
  340. package/dist/accessi-module/Controllers/FiltriController.js +125 -6
  341. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  342. package/dist/accessi-module/Controllers/PermissionController.d.ts +12 -1
  343. package/dist/accessi-module/Controllers/PermissionController.js +322 -51
  344. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  345. package/dist/accessi-module/Controllers/SchemaController.d.ts +9 -0
  346. package/dist/accessi-module/Controllers/SchemaController.js +79 -0
  347. package/dist/accessi-module/Controllers/SchemaController.js.map +1 -0
  348. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  349. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  350. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  351. package/dist/accessi-module/Controllers/UserController.d.ts +8 -4
  352. package/dist/accessi-module/Controllers/UserController.js +161 -28
  353. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  354. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  355. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  356. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  357. package/dist/accessi-module/Dtos/AdminBootstrapDtos.d.ts +19 -0
  358. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js +83 -0
  359. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +1 -0
  360. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  361. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  362. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
  363. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  364. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
  365. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
  366. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  367. package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
  368. package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
  369. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  370. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +64 -0
  371. package/dist/accessi-module/Dtos/CatalogDtos.js +322 -0
  372. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  373. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  374. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  375. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  376. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  377. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  378. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  379. package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
  380. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  381. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js +1 -1
  382. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  383. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  384. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  385. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  386. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  387. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +26 -0
  388. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  389. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  390. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  391. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  392. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  393. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  394. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  395. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  396. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  397. package/dist/accessi-module/Dtos/LoginResponse.d.ts +6 -2
  398. package/dist/accessi-module/Dtos/LoginResponse.js +20 -7
  399. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  400. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  401. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  402. package/dist/accessi-module/Dtos/Permission.js +1 -0
  403. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  404. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  405. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
  406. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  407. package/dist/accessi-module/Dtos/RegisterRequest.d.ts +2 -4
  408. package/dist/accessi-module/Dtos/RegisterRequest.js +18 -28
  409. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  410. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  411. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  412. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  413. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  414. package/dist/accessi-module/Dtos/Role.js +4 -0
  415. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  416. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  417. package/dist/accessi-module/Dtos/SchemaDtos.d.ts +19 -0
  418. package/dist/accessi-module/Dtos/SchemaDtos.js +84 -0
  419. package/dist/accessi-module/Dtos/SchemaDtos.js.map +1 -0
  420. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  421. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  422. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  423. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  424. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  425. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  426. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  427. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  428. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  429. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  430. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  431. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  432. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  433. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  434. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  435. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  436. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  437. package/dist/accessi-module/Dtos/UserDto.d.ts +9 -4
  438. package/dist/accessi-module/Dtos/UserDto.js +39 -24
  439. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  440. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  441. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  442. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  443. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  444. package/dist/accessi-module/Dtos/index.d.ts +13 -0
  445. package/dist/accessi-module/Dtos/index.js +13 -0
  446. package/dist/accessi-module/Dtos/index.js.map +1 -1
  447. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +33 -0
  448. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +106 -0
  449. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +1 -0
  450. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +40 -5
  451. package/dist/accessi-module/Services/AuthService/AuthService.js +192 -42
  452. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  453. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  454. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  455. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  456. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  457. package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
  458. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  459. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  460. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
  461. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  462. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +77 -2
  463. package/dist/accessi-module/Services/PermissionService/PermissionService.js +603 -206
  464. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  465. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.d.ts +36 -0
  466. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js +125 -0
  467. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +1 -0
  468. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  469. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  470. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  471. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  472. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  473. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  474. package/dist/accessi-module/Services/UserService/UserService.d.ts +51 -5
  475. package/dist/accessi-module/Services/UserService/UserService.js +396 -294
  476. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  477. package/dist/accessi-module/Views/reset-password.html +213 -213
  478. package/dist/accessi-module/accessiRuntime.d.ts +45 -0
  479. package/dist/accessi-module/accessiRuntime.js +39 -0
  480. package/dist/accessi-module/accessiRuntime.js.map +1 -0
  481. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.d.ts +83 -0
  482. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js +360 -0
  483. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +1 -0
  484. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +57 -10
  485. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +475 -179
  486. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  487. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.d.ts +5 -0
  488. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +79 -0
  489. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -0
  490. package/dist/accessi-module/database-updates/accessiSchema.d.ts +67 -0
  491. package/dist/accessi-module/database-updates/accessiSchema.js +124 -0
  492. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  493. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  494. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  495. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  496. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.d.ts +1 -0
  497. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js +69 -0
  498. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  499. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +15 -53
  500. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  501. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +24 -0
  502. package/dist/accessi-module/federated-auth/FederatedAuthController.js +333 -0
  503. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  504. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +100 -0
  505. package/dist/accessi-module/federated-auth/FederatedAuthService.js +451 -0
  506. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  507. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  508. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  509. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  510. package/dist/accessi-module/index.d.ts +29 -0
  511. package/dist/accessi-module/index.js +89 -19
  512. package/dist/accessi-module/index.js.map +1 -1
  513. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  514. package/dist/accessi-module/jwt/jwt.strategy.js +16 -7
  515. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  516. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  517. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  518. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  519. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  520. package/dist/accessi-module/middleware/authenticateGen.js +63 -25
  521. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  522. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  523. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  524. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  525. package/dist/accessi-module/security/accessControl.d.ts +22 -2
  526. package/dist/accessi-module/security/accessControl.js +47 -8
  527. package/dist/accessi-module/security/accessControl.js.map +1 -1
  528. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  529. package/dist/accessi-module/security/accessiValidation.js +41 -0
  530. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  531. package/dist/accessi-module/security/adminBootstrap.d.ts +8 -0
  532. package/dist/accessi-module/security/adminBootstrap.js +41 -0
  533. package/dist/accessi-module/security/adminBootstrap.js.map +1 -0
  534. package/dist/accessi-module/security/authenticatedToken.d.ts +16 -2
  535. package/dist/accessi-module/security/authenticatedToken.js +31 -4
  536. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  537. package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
  538. package/dist/accessi-module/security/emailConfiguration.js +41 -0
  539. package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
  540. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  541. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  542. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  543. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +3 -3
  544. package/dist/accessi-module/security/publicAuthRateLimit.js +31 -8
  545. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  546. package/dist/accessi-module/security/serviceTokenGuard.d.ts +25 -0
  547. package/dist/accessi-module/security/serviceTokenGuard.js +85 -0
  548. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  549. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +8 -0
  550. package/dist/accessi-module/security/serviceTokenRateLimit.js +49 -0
  551. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  552. package/dist/accessi-module/startupLog.d.ts +6 -0
  553. package/dist/accessi-module/startupLog.js +25 -0
  554. package/dist/accessi-module/startupLog.js.map +1 -0
  555. package/dist/allegati-module/AllegatiModule.d.ts +12 -1
  556. package/dist/allegati-module/AllegatiModule.js +11 -1
  557. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  558. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  559. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  560. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  561. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  562. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  563. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  564. package/dist/allegati-module/Dtos/index.js.map +1 -1
  565. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  566. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  567. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  568. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  569. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  570. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  571. package/dist/allegati-module/index.js.map +1 -1
  572. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  573. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  574. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  575. package/dist/autobind.d.ts +10 -3
  576. package/dist/autobind.js +24 -9
  577. package/dist/autobind.js.map +1 -1
  578. package/dist/emilsoftware-utilities-2.0.0-dev.40.tgz +0 -0
  579. package/dist/firebird-compat.d.ts +27 -6
  580. package/dist/firebird-compat.js +150 -135
  581. package/dist/firebird-compat.js.map +1 -1
  582. package/dist/index.d.ts +2 -2
  583. package/dist/index.js +2 -2
  584. package/dist/index.js.map +1 -1
  585. package/dist/initEmilsoftwareModule.js +13 -3
  586. package/dist/initEmilsoftwareModule.js.map +1 -1
  587. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  588. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  589. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  590. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  591. package/dist/scripts/generateAccessiWiki.js +131 -0
  592. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  593. package/dist/swagger/SwaggerConfig.d.ts +7 -1
  594. package/dist/swagger/SwaggerConfig.js +22 -8
  595. package/dist/swagger/SwaggerConfig.js.map +1 -1
  596. package/package.json +105 -83
@@ -20,14 +20,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
20
20
  step((generator = generator.apply(thisArg, _arguments || [])).next());
21
21
  });
22
22
  };
23
+ var __rest = (this && this.__rest) || function (s, e) {
24
+ var t = {};
25
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
26
+ t[p] = s[p];
27
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
28
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
29
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
30
+ t[p[i]] = s[p[i]];
31
+ }
32
+ return t;
33
+ };
23
34
  Object.defineProperty(exports, "__esModule", { value: true });
24
35
  exports.UserService = void 0;
25
36
  const common_1 = require("@nestjs/common");
37
+ const optionalColumns_1 = require("../../database-updates/optionalColumns");
26
38
  const autobind_1 = require("../../../autobind");
27
39
  const Orm_1 = require("../../../Orm");
28
40
  const Utilities_1 = require("../../../Utilities");
29
41
  const FiltriUtente_1 = require("../../Dtos/FiltriUtente");
30
42
  const StatoRegistrazione_1 = require("../../Dtos/StatoRegistrazione");
43
+ const emailConfiguration_1 = require("../../security/emailConfiguration");
31
44
  const EmailService_1 = require("../EmailService/EmailService");
32
45
  const FiltriService_1 = require("../FiltriService/FiltriService");
33
46
  const PermissionService_1 = require("../PermissionService/PermissionService");
@@ -41,9 +54,13 @@ let UserService = class UserService {
41
54
  normalizeDatabaseBoolean(value) {
42
55
  return value === true || value === 1 || value === '1';
43
56
  }
57
+ normalizeUserFlags(user) {
58
+ const normalized = Object.assign(Object.assign({}, user), { flagSuper: this.normalizeDatabaseBoolean(user.flagSuper), flagAdmin: this.normalizeDatabaseBoolean(user.flagAdmin), flagDueFattori: this.normalizeDatabaseBoolean(user.flagDueFattori), passwordlessLoginEnabled: this.normalizeDatabaseBoolean(user.passwordlessLoginEnabled), passwordLoginEnabled: user.passwordLoginEnabled == null || this.normalizeDatabaseBoolean(user.passwordLoginEnabled) });
59
+ return normalized;
60
+ }
44
61
  normalizeEmail(email) {
45
62
  if (typeof email !== 'string' || email.trim() === '') {
46
- throw new Error("L'email e' obbligatoria.");
63
+ throw new common_1.BadRequestException({ code: 'ACCESSI_EMAIL_REQUIRED', message: "L'email è obbligatoria." });
47
64
  }
48
65
  return email.trim().toLowerCase();
49
66
  }
@@ -53,44 +70,32 @@ let UserService = class UserService {
53
70
  const existingUser = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase)[0];
54
71
  if ((existingUser === null || existingUser === void 0 ? void 0 : existingUser.codiceUtente) &&
55
72
  (!currentUserCode || existingUser.codiceUtente !== currentUserCode)) {
56
- throw new Error("Questa e-mail e' gia stata utilizzata!");
73
+ throw new common_1.ConflictException({ code: 'ACCESSI_EMAIL_ALREADY_EXISTS', message: "L'email è già associata a un utente Accessi." });
57
74
  }
58
75
  });
59
76
  }
60
- isAdminConfigurator(codiceUtente) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- var _a;
63
- if (!codiceUtente) {
64
- return false;
65
- }
66
- const query = `SELECT FLGADMINCONFIG AS flag_admin_configurator FROM UTENTI_CONFIG WHERE CODUTE = ?`;
67
- const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [codiceUtente]);
68
- if (!result || result === 0) {
69
- return false;
70
- }
71
- const mapped = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
72
- const flagValue = (_a = mapped[0]) === null || _a === void 0 ? void 0 : _a.flag_admin_configurator;
73
- if (typeof flagValue === 'boolean') {
74
- return flagValue;
75
- }
76
- return flagValue === 1;
77
- });
78
- }
77
+ /**
78
+ * Legge il minimo profilo autorevole usato da JWT e middleware. Restituisce `null` per utenti inesistenti.
79
+ * Non usare `UserDto` dal token per decisioni di sicurezza: i flag vengono sempre riletti qui.
80
+ */
79
81
  getAuthenticatedUserSnapshot(codiceUtente) {
80
82
  return __awaiter(this, void 0, void 0, function* () {
81
83
  if (!codiceUtente || codiceUtente <= 0) {
82
84
  return null;
83
85
  }
84
- const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `
85
- SELECT
86
- U.CODUTE AS codice_utente,
87
- U.USRNAME AS email,
88
- U.STAREG AS stato_registrazione,
89
- C.FLGSUPER AS flag_super,
90
- C.FLGADMINCONFIG AS flag_admin_configurator
91
- FROM UTENTI U
92
- LEFT JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
93
- WHERE U.CODUTE = ?
86
+ const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `
87
+ SELECT
88
+ U.CODUTE AS codice_utente,
89
+ U.USRNAME AS email,
90
+ U.STAREG AS stato_registrazione,
91
+ C.FLGSUPER AS flag_super,
92
+ C.FLGADMIN AS flag_admin
93
+ , C.FLG2FATT AS flag_due_fattori
94
+ , C.FLGPWDLESS AS passwordless_login_enabled
95
+ , COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled
96
+ FROM UTENTI U
97
+ LEFT JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
98
+ WHERE U.CODUTE = ?
94
99
  `, [codiceUtente]);
95
100
  const user = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase)[0];
96
101
  if (!(user === null || user === void 0 ? void 0 : user.codiceUtente)) {
@@ -101,71 +106,129 @@ let UserService = class UserService {
101
106
  email: typeof user.email === 'string' ? user.email : undefined,
102
107
  statoRegistrazione: Number(user.statoRegistrazione),
103
108
  flagSuper: this.normalizeDatabaseBoolean(user.flagSuper),
104
- flagAdminConfigurator: this.normalizeDatabaseBoolean(user.flagAdminConfigurator),
109
+ flagAdmin: this.normalizeDatabaseBoolean(user.flagAdmin),
110
+ flagDueFattori: this.normalizeDatabaseBoolean(user.flagDueFattori),
111
+ passwordlessLoginEnabled: this.normalizeDatabaseBoolean(user.passwordlessLoginEnabled),
112
+ passwordLoginEnabled: this.normalizeDatabaseBoolean(user.passwordLoginEnabled),
105
113
  };
106
114
  });
107
115
  }
116
+ /**
117
+ * Elenca gli utenti con filtri opzionali. Grant e campi estesi sono costosi e vengono caricati soltanto
118
+ * quando richiesti esplicitamente nelle opzioni; usare filtri puntuali nei flussi di autenticazione.
119
+ */
108
120
  getUsers(filters, options) {
109
121
  return __awaiter(this, void 0, void 0, function* () {
122
+ var _a, _b, _c, _d, _e;
110
123
  try {
111
- let query = `
112
- SELECT
113
- U.CODUTE as codice_utente,
114
- U.USRNAME as email,
115
- U.FLGGDPR as flag_gdpr,
116
- U.DATGDPR as data_gdpr,
117
- U.DATINS as data_inserimento,
118
- U.DATSCAPWD as data_scadenza_password,
119
- U.DATLASTLOGIN as data_last_login,
120
- U.STAREG as stato_registrazione,
121
- G.COGNOME as cognome,
122
- G.NOME as nome,
123
- G.AVATAR as avatar,
124
- G.FLG2FATT as flag_due_fattori,
125
- G.CODLINGUA as codice_lingua,
126
- G.CELLULARE as cellulare,
127
- G.FLGSUPER as flag_super,
128
- G.FLGADMINCONFIG as flag_admin_configurator,
129
- G.PAGDEF as pagina_default,
130
- G.JSON_METADATA as json_metadata,
131
- G.RAGSOCCLI as rag_soc_cli,
132
- G.NUMMAC as nummac,
133
- F.NUMREP AS num_rep,
134
- F.IDXPERS AS idx_pers,
135
- F.CODCLISUPER AS cod_cli_super,
136
- F.CODAGE AS cod_age,
137
- F.CODCLICOL AS cod_cli_col,
138
- F.CODCLIENTI AS cod_clienti,
139
- F.TIPFIL AS tip_fil,
140
- F.IDXPOS AS idx_postazione
141
- FROM UTENTI U
142
- INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE
143
- LEFT JOIN FILTRI F ON F.CODUTE = U.CODUTE
144
- WHERE 1=1
124
+ const filterColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'FILTRI');
125
+ // Paginazione opzionale con limiti sani: il default resta "tutti gli utenti".
126
+ const limit = Number.isInteger(filters === null || filters === void 0 ? void 0 : filters.limit) && ((_a = filters === null || filters === void 0 ? void 0 : filters.limit) !== null && _a !== void 0 ? _a : 0) > 0
127
+ ? Math.min(filters === null || filters === void 0 ? void 0 : filters.limit, 1000)
128
+ : undefined;
129
+ const offset = Number.isInteger(filters === null || filters === void 0 ? void 0 : filters.offset) && ((_b = filters === null || filters === void 0 ? void 0 : filters.offset) !== null && _b !== void 0 ? _b : 0) > 0
130
+ ? Math.trunc(filters === null || filters === void 0 ? void 0 : filters.offset)
131
+ : 0;
132
+ const pagination = `${limit !== undefined ? ` FIRST ${limit}` : ''}${offset > 0 ? ` SKIP ${offset}` : ''}`;
133
+ let query = `
134
+ SELECT${pagination}
135
+ U.CODUTE as codice_utente,
136
+ U.USRNAME as email,
137
+ U.FLGGDPR as flag_gdpr,
138
+ U.DATGDPR as data_gdpr,
139
+ U.DATINS as data_inserimento,
140
+ U.DATSCAPWD as data_scadenza_password,
141
+ U.DATLASTLOGIN as data_last_login,
142
+ U.STAREG as stato_registrazione,
143
+ G.COGNOME as cognome,
144
+ G.NOME as nome,
145
+ G.AVATAR as avatar,
146
+ G.FLG2FATT as flag_due_fattori,
147
+ G.FLGPWDLESS as passwordless_login_enabled,
148
+ G.CODLINGUA as codice_lingua,
149
+ G.CELLULARE as cellulare,
150
+ G.PAGDEF as pagina_default,
151
+ G.FLGSUPER as flag_super,
152
+ G.FLGADMIN as flag_admin,
153
+ COALESCE(G.FLGPASSWORD, 1) as password_login_enabled,
154
+ G.JSON_METADATA as json_metadata,
155
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODDIP', 'F', 'cod_dipendente')},
156
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'NUMREP', 'F', 'num_rep', true)},
157
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'IDXPERS', 'F', 'idx_pers', true)},
158
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLISUPER', 'F', 'cod_cli_super', true)},
159
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODAGE', 'F', 'cod_age', true)},
160
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLICOL', 'F', 'cod_cli_col', true)},
161
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLIENTI', 'F', 'cod_clienti', false)},
162
+ F.TIPFIL AS tip_fil,
163
+ ${(0, optionalColumns_1.optionalColumn)(filterColumns, 'IDXPOS', 'F', 'idx_postazione', true)}
164
+ FROM UTENTI U
165
+ INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE
166
+ LEFT JOIN FILTRI F ON F.CODUTE = U.CODUTE
167
+ WHERE 1=1
145
168
  `;
146
169
  const queryParams = [];
147
170
  if (filters === null || filters === void 0 ? void 0 : filters.email) {
148
171
  query += ` AND LOWER(U.USRNAME) = ? `;
149
172
  queryParams.push(filters.email.trim().toLowerCase());
150
173
  }
151
- if (filters === null || filters === void 0 ? void 0 : filters.codiceUtente) {
152
- query += ` AND U.CODUTE = ? `;
153
- queryParams.push(filters.codiceUtente);
174
+ if ((filters === null || filters === void 0 ? void 0 : filters.codiceUtente) !== undefined) {
175
+ const codes = (Array.isArray(filters.codiceUtente) ? filters.codiceUtente : [filters.codiceUtente])
176
+ .map((value) => Number(value))
177
+ .filter((value) => Number.isFinite(value) && value > 0);
178
+ if (codes.length === 0) {
179
+ return [];
180
+ }
181
+ query += ` AND U.CODUTE IN (${codes.map(() => '?').join(', ')}) `;
182
+ queryParams.push(...codes);
183
+ }
184
+ if ((filters === null || filters === void 0 ? void 0 : filters.numRep) !== undefined) {
185
+ const reparti = (Array.isArray(filters.numRep) ? filters.numRep : [filters.numRep])
186
+ .map((value) => Number(value))
187
+ .filter((value) => Number.isFinite(value));
188
+ if (reparti.length === 0) {
189
+ return [];
190
+ }
191
+ query += ` AND F.NUMREP IN (${reparti.map(() => '?').join(', ')}) `;
192
+ queryParams.push(...reparti);
193
+ }
194
+ if ((filters === null || filters === void 0 ? void 0 : filters.codDipendente) !== undefined) {
195
+ query += ` AND F.CODDIP = ? `;
196
+ queryParams.push(Number(filters.codDipendente));
197
+ }
198
+ if ((filters === null || filters === void 0 ? void 0 : filters.tipFil) !== undefined) {
199
+ query += ` AND F.TIPFIL = ? `;
200
+ queryParams.push(Number(filters.tipFil));
201
+ }
202
+ if (filters === null || filters === void 0 ? void 0 : filters.cellulare) {
203
+ query += ` AND TRIM(G.CELLULARE) = ? `;
204
+ queryParams.push(String(filters.cellulare).trim());
205
+ }
206
+ if ((filters === null || filters === void 0 ? void 0 : filters.flagSuper) !== undefined) {
207
+ query += filters.flagSuper ? ` AND COALESCE(G.FLGSUPER, 0) <> 0 ` : ` AND COALESCE(G.FLGSUPER, 0) = 0 `;
154
208
  }
155
209
  query += ` ORDER BY U.CODUTE DESC `;
156
210
  let users = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, queryParams));
157
- users = users.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
211
+ users = users.map(Utilities_1.RestUtilities.convertKeysToCamelCase).map(user => this.normalizeUserFlags(user));
158
212
  const usersResponse = [];
213
+ // I campi estensione sono caricati una volta per tabella (non una per utente) in query IN
214
+ // suddivise in blocchi per non superare i limiti di parametri del driver.
215
+ const extensionFieldsByUser = (options === null || options === void 0 ? void 0 : options.includeExtensionFields)
216
+ ? yield this.loadExtensionFieldsForUsers(users.map((user) => user.codiceUtente))
217
+ : undefined;
218
+ // I grant sono caricati in batch (query IN) invece che utente per utente.
219
+ const grantsByUser = (options === null || options === void 0 ? void 0 : options.includeGrants)
220
+ ? yield this.permissionService.getUsersRolesAndGrants(users.map((user) => user.codiceUtente))
221
+ : undefined;
159
222
  for (const user of users) {
160
- let userGrants = null;
223
+ let userGrants;
161
224
  if (options === null || options === void 0 ? void 0 : options.includeGrants) {
162
- userGrants = yield this.permissionService.getUserRolesAndGrants(user.codiceUtente);
225
+ userGrants = grantsByUser === null || grantsByUser === void 0 ? void 0 : grantsByUser.get(user.codiceUtente);
163
226
  }
164
- let extensionFields = (options === null || options === void 0 ? void 0 : options.includeExtensionFields) ? {} : null;
165
- if ((options === null || options === void 0 ? void 0 : options.includeExtensionFields) && this.accessiOptions.extensionFieldsOptions) {
166
- for (const ext of this.accessiOptions.extensionFieldsOptions) {
167
- const values = (yield Orm_1.Orm.query(ext.databaseOptions, `SELECT ${ext.tableFields.join(',')} FROM ${ext.tableName} WHERE ${ext.tableJoinFieldName} = ?`, [user.codiceUtente])).map(Utilities_1.RestUtilities.convertKeysToCamelCase);
168
- extensionFields[ext.objectKey] = values;
227
+ let extensionFields;
228
+ if (options === null || options === void 0 ? void 0 : options.includeExtensionFields) {
229
+ extensionFields = {};
230
+ for (const ext of (_c = this.accessiOptions.extensionFieldsOptions) !== null && _c !== void 0 ? _c : []) {
231
+ extensionFields[ext.objectKey] = (_e = (_d = extensionFieldsByUser === null || extensionFieldsByUser === void 0 ? void 0 : extensionFieldsByUser.get(ext.objectKey)) === null || _d === void 0 ? void 0 : _d.get(user.codiceUtente)) !== null && _e !== void 0 ? _e : [];
169
232
  }
170
233
  }
171
234
  usersResponse.push({
@@ -181,6 +244,68 @@ let UserService = class UserService {
181
244
  }
182
245
  });
183
246
  }
247
+ /** Conteggio utenti con gli stessi filtri di `getUsers`, per la paginazione (header X-Total-Count). */
248
+ countUsers(filters) {
249
+ return __awaiter(this, void 0, void 0, function* () {
250
+ var _a, _b;
251
+ const conditions = [];
252
+ const params = [];
253
+ if (filters === null || filters === void 0 ? void 0 : filters.email) {
254
+ conditions.push('LOWER(U.USRNAME) = ?');
255
+ params.push(filters.email.trim().toLowerCase());
256
+ }
257
+ if (filters === null || filters === void 0 ? void 0 : filters.codiceUtente) {
258
+ conditions.push('U.CODUTE = ?');
259
+ params.push(filters.codiceUtente);
260
+ }
261
+ 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(' ')}`;
262
+ const rows = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, params, false));
263
+ const row = rows[0];
264
+ return Number((_b = (_a = row === null || row === void 0 ? void 0 : row.TOTAL) !== null && _a !== void 0 ? _a : row === null || row === void 0 ? void 0 : row.total) !== null && _b !== void 0 ? _b : 0) || 0;
265
+ });
266
+ }
267
+ loadExtensionFieldsForUsers(codiceUtenti) {
268
+ return __awaiter(this, void 0, void 0, function* () {
269
+ var _a;
270
+ const byObjectKey = new Map();
271
+ const extensions = (_a = this.accessiOptions.extensionFieldsOptions) !== null && _a !== void 0 ? _a : [];
272
+ const uniqueCodes = Array.from(new Set(codiceUtenti));
273
+ for (const ext of extensions) {
274
+ const grouped = new Map();
275
+ for (const chunk of this.chunkArray(uniqueCodes, 500)) {
276
+ if (chunk.length === 0) {
277
+ continue;
278
+ }
279
+ const placeholders = chunk.map(() => '?').join(', ');
280
+ const rows = (yield Orm_1.Orm.query(ext.databaseOptions, `SELECT ${ext.tableJoinFieldName} AS __joinkey, ${ext.tableFields.join(', ')} FROM ${ext.tableName} WHERE ${ext.tableJoinFieldName} IN (${placeholders})`, chunk)).map(Utilities_1.RestUtilities.convertKeysToCamelCase);
281
+ for (const row of rows) {
282
+ const { __joinkey } = row, rest = __rest(row, ["__joinkey"]);
283
+ const key = Number(__joinkey);
284
+ if (!Number.isFinite(key)) {
285
+ continue;
286
+ }
287
+ const bucket = grouped.get(key);
288
+ if (bucket) {
289
+ bucket.push(rest);
290
+ }
291
+ else {
292
+ grouped.set(key, [rest]);
293
+ }
294
+ }
295
+ }
296
+ byObjectKey.set(ext.objectKey, grouped);
297
+ }
298
+ return byObjectKey;
299
+ });
300
+ }
301
+ chunkArray(items, size) {
302
+ const chunks = [];
303
+ for (let index = 0; index < items.length; index += size) {
304
+ chunks.push(items.slice(index, index + size));
305
+ }
306
+ return chunks;
307
+ }
308
+ /** Cerca il codice interno per email normalizzata. Il chiamante deve gestire il caso senza righe. */
184
309
  getCodiceUtenteByEmail(email) {
185
310
  return __awaiter(this, void 0, void 0, function* () {
186
311
  try {
@@ -195,179 +320,139 @@ let UserService = class UserService {
195
320
  }
196
321
  });
197
322
  }
323
+ /** Recupera il profilo locale usato dal login, compresi filtri Accessi eventualmente presenti. */
198
324
  getUserByEmail(email) {
199
325
  return __awaiter(this, void 0, void 0, function* () {
200
- var _a;
201
- const query = `
202
- SELECT
203
- U.CODUTE AS codice_utente,
204
- U.USRNAME AS email,
205
- U.FLGGDPR AS flag_gdpr,
206
- U.DATSCAPWD as data_scadenza_password,
207
- U.STAREG AS stato_registrazione,
208
- C.COGNOME AS cognome,
209
- C.NOME AS nome,
210
- C.AVATAR AS avatar,
211
- C.FLG2FATT AS flag_due_fattori,
212
- C.CODLINGUA AS codice_lingua,
213
- C.CELLULARE AS cellulare,
214
- C.FLGSUPER AS flag_super,
215
- C.FLGADMINCONFIG AS flag_admin_configurator,
216
- C.PAGDEF AS pagina_default,
217
- C.NUMMAC AS nummac,
218
- C.RAGSOCCLI AS rag_soc_cli
219
- FROM UTENTI U
220
- INNER JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
221
- WHERE LOWER(U.USRNAME) = ?
326
+ const query = `
327
+ SELECT
328
+ U.CODUTE AS codice_utente,
329
+ U.USRNAME AS email,
330
+ U.FLGGDPR AS flag_gdpr,
331
+ U.DATSCAPWD as data_scadenza_password,
332
+ U.STAREG AS stato_registrazione,
333
+ C.COGNOME AS cognome,
334
+ C.NOME AS nome,
335
+ C.AVATAR AS avatar,
336
+ C.FLG2FATT AS flag_due_fattori,
337
+ C.FLGPWDLESS AS passwordless_login_enabled,
338
+ C.CODLINGUA AS codice_lingua,
339
+ C.CELLULARE AS cellulare,
340
+ C.PAGDEF AS pagina_default,
341
+ C.FLGSUPER AS flag_super,
342
+ C.FLGADMIN AS flag_admin,
343
+ COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled
344
+ FROM UTENTI U
345
+ INNER JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
346
+ WHERE LOWER(U.USRNAME) = ?
222
347
  `;
223
348
  const utenti = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [email]).then((results) => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
224
- const filtriUtente = yield this.filtriService.getFiltriUser((_a = utenti[0]) === null || _a === void 0 ? void 0 : _a.codiceUtente);
225
- if (utenti.length <= 0) {
349
+ const user = utenti[0];
350
+ if (!user)
226
351
  return null;
227
- }
228
- if (utenti.length > 0 && filtriUtente.length > 0) {
229
- const user = utenti[0];
230
- const filtro = filtriUtente[0];
352
+ const filtro = (yield this.filtriService.getFiltriUser(user.codiceUtente))[0];
353
+ if (filtro) {
354
+ const filterValues = {};
231
355
  Object.entries(FiltriUtente_1.FILTRI_UTENTE_DB_MAPPING).forEach(([key]) => {
232
356
  if (key in filtro) {
233
- user[key] = filtro[key];
357
+ filterValues[key] = filtro[key];
234
358
  }
235
359
  });
360
+ Object.assign(user, filterValues);
236
361
  }
237
- return utenti.length > 0 ? utenti[0] : null;
362
+ return this.normalizeUserFlags(user);
238
363
  });
239
364
  }
240
365
  insertUserFilters(codiceUtente, filterData) {
241
366
  return __awaiter(this, void 0, void 0, function* () {
242
- try {
243
- if (!codiceUtente || codiceUtente <= 0) {
244
- throw new Error('Codice utente non valido');
245
- }
246
- const fieldMapping = {
247
- numeroReport: { dbField: 'NUMREP', type: 'number' },
248
- indicePersonale: { dbField: 'IDXPERS', type: 'number' },
249
- codiceClienteSuper: { dbField: 'CODCLISUPER', type: 'number' },
250
- codAge: { dbField: 'CODAGE', type: 'number' },
251
- codiceClienteCollegato: { dbField: 'CODCLICOL', type: 'number' },
252
- codiceClienti: { dbField: 'CODCLIENTI', type: 'string' },
253
- tipFil: { dbField: 'TIPFIL', type: 'number' },
254
- idxPostazione: { dbField: 'IDXPOS', type: 'number' },
255
- };
256
- const fieldsToInsert = Object.entries(fieldMapping)
257
- .filter(([tsField]) => {
258
- const value = filterData[tsField];
259
- return value !== undefined && value !== null && value !== '';
260
- })
261
- .map(([tsField, config]) => {
262
- const value = filterData[tsField];
263
- if (config.type === 'number' && typeof value !== 'number') {
264
- throw new Error(`Il campo ${tsField} deve essere un numero`);
265
- }
266
- if (config.type === 'string' && typeof value !== 'string') {
267
- throw new Error(`Il campo ${tsField} deve essere una stringa`);
268
- }
269
- return { tsField, dbField: config.dbField, value };
270
- });
271
- if (fieldsToInsert.length === 0) {
272
- return;
273
- }
274
- yield this.executeInTransaction(() => __awaiter(this, void 0, void 0, function* () {
275
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, 'DELETE FROM FILTRI WHERE CODUTE = ?', [codiceUtente]);
276
- const dbFields = ['CODUTE', ...fieldsToInsert.map((f) => f.dbField)];
277
- const placeholders = dbFields.map(() => '?');
278
- const values = [codiceUtente, ...fieldsToInsert.map((f) => f.value)];
279
- const insertQuery = `INSERT INTO FILTRI (${dbFields.join(', ')}) VALUES (${placeholders.join(', ')})`;
280
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, insertQuery, values);
281
- }));
282
- }
283
- catch (error) {
284
- throw new Error(`Errore durante l'inserimento dei filtri per utente ${codiceUtente}: ${error.message}`);
285
- }
286
- });
287
- }
288
- executeInTransaction(operation) {
289
- return __awaiter(this, void 0, void 0, function* () {
290
- yield operation();
367
+ yield this.filtriService.upsertFiltriUtente(codiceUtente, filterData);
291
368
  });
292
369
  }
370
+ /**
371
+ * Crea utente, configurazione e filtri. La registrazione pubblica resta in stato `INVIO` e non puo
372
+ * impostare privilegi, ruoli o grant; soltanto flussi backend fidati possono usare `allowPrivilegedFields`.
373
+ */
293
374
  register(registrationData, options) {
294
375
  return __awaiter(this, void 0, void 0, function* () {
295
- var _a, _b, _c;
376
+ var _a;
296
377
  try {
297
378
  const allowPrivilegedFields = (options === null || options === void 0 ? void 0 : options.allowPrivilegedFields) === true;
298
379
  const normalizedEmail = this.normalizeEmail(registrationData.email);
380
+ if (registrationData.flagDueFattori !== undefined && typeof registrationData.flagDueFattori !== 'boolean') {
381
+ throw new common_1.BadRequestException('Il flag due fattori deve essere booleano.');
382
+ }
383
+ if (registrationData.flagDueFattori && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(normalizedEmail)) {
384
+ throw new common_1.BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');
385
+ }
299
386
  if (!allowPrivilegedFields &&
300
387
  (registrationData.flagSuper !== undefined ||
301
- registrationData.flagAdminConfigurator !== undefined ||
388
+ registrationData.flagAdmin !== undefined ||
389
+ registrationData.flagDueFattori !== undefined ||
302
390
  registrationData.roles !== undefined ||
303
391
  registrationData.permissions !== undefined)) {
304
392
  throw new Error('I campi privilegiati non sono consentiti nella registrazione pubblica.');
305
393
  }
306
394
  yield this.ensureEmailIsAvailable(normalizedEmail);
307
- const queryUtenti = `INSERT INTO UTENTI (USRNAME, STAREG) VALUES (?,?)`;
308
- const paramsUtenti = [normalizedEmail, StatoRegistrazione_1.StatoRegistrazione.INVIO];
309
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, queryUtenti, paramsUtenti);
310
- const codiceUtenteResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, 'SELECT FIRST 1 CODUTE FROM UTENTI WHERE USRNAME = ? ORDER BY CODUTE DESC', [normalizedEmail]);
311
- const codiceUtente = Number((_b = (_a = codiceUtenteResult === null || codiceUtenteResult === void 0 ? void 0 : codiceUtenteResult[0]) === null || _a === void 0 ? void 0 : _a.CODUTE) !== null && _b !== void 0 ? _b : (_c = codiceUtenteResult === null || codiceUtenteResult === void 0 ? void 0 : codiceUtenteResult[0]) === null || _c === void 0 ? void 0 : _c.codute);
312
- if (!codiceUtente) {
313
- throw new Error('Creazione utente non riuscita: impossibile recuperare CODUTE.');
314
- }
315
- const utentiConfigFields = ['CODUTE', 'COGNOME', 'NOME'];
316
- const utentiConfigPlaceholders = ['?', '?', '?'];
317
- const utentiConfigParams = [codiceUtente, registrationData.cognome, registrationData.nome];
318
- const optionalFields = [
319
- {
320
- key: 'cellulare',
321
- dbField: 'CELLULARE',
322
- transform: (v) => String(v),
323
- },
324
- {
325
- key: 'avatar',
326
- dbField: 'AVATAR',
327
- transform: (v) => String(v),
328
- },
329
- {
330
- key: 'flagDueFattori',
331
- dbField: 'FLG2FATT',
332
- transform: (v) => (v ? 1 : 0),
333
- },
334
- {
335
- key: 'paginaDefault',
336
- dbField: 'PAGDEF',
337
- transform: (v) => String(v),
338
- },
339
- {
340
- key: 'nummac',
341
- dbField: 'NUMMAC',
342
- transform: (v) => Number(v),
343
- },
344
- {
345
- key: 'ragSocCli',
346
- dbField: 'RAGSOCCLI',
347
- transform: (v) => String(v),
348
- },
349
- ];
350
- if (allowPrivilegedFields) {
351
- optionalFields.push({
352
- key: 'flagSuper',
353
- dbField: 'FLGSUPER',
354
- transform: (v) => (v ? 1 : 0),
355
- }, {
356
- key: 'flagAdminConfigurator',
357
- dbField: 'FLGADMINCONFIG',
358
- transform: (v) => (v ? 1 : 0),
359
- });
360
- }
361
- for (const field of optionalFields) {
362
- const value = registrationData[field.key];
363
- if (value !== undefined && value !== null) {
364
- utentiConfigFields.push(field.dbField);
365
- utentiConfigPlaceholders.push('?');
366
- utentiConfigParams.push(field.transform ? field.transform(value) : value);
395
+ const queryUtenti = `INSERT INTO UTENTI (USRNAME, STAREG) VALUES (?,?) RETURNING CODUTE`;
396
+ // Public/local registrations keep the historic INVIO state; trusted master or SSO flows may opt into CONF.
397
+ const paramsUtenti = [normalizedEmail, (_a = options === null || options === void 0 ? void 0 : options.initialState) !== null && _a !== void 0 ? _a : StatoRegistrazione_1.StatoRegistrazione.INVIO];
398
+ // Utente e configurazione sono creati in un'unica transazione; filtri e assegnazioni restano
399
+ // fuori perché delegati a servizi dedicati.
400
+ const codiceUtente = yield Orm_1.Orm.withTransaction(this.accessiOptions.databaseOptions, (transaction) => __awaiter(this, void 0, void 0, function* () {
401
+ var _a;
402
+ const insertedUsers = yield Orm_1.Orm.transactionQuery(transaction, queryUtenti, paramsUtenti);
403
+ const insertedUser = (Array.isArray(insertedUsers) ? insertedUsers[0] : insertedUsers);
404
+ const newCodiceUtente = Number((_a = insertedUser === null || insertedUser === void 0 ? void 0 : insertedUser.CODUTE) !== null && _a !== void 0 ? _a : insertedUser === null || insertedUser === void 0 ? void 0 : insertedUser.codute);
405
+ if (!newCodiceUtente) {
406
+ throw new Error('Creazione utente non riuscita: impossibile recuperare CODUTE.');
367
407
  }
368
- }
369
- const queryUtentiConfig = `INSERT INTO UTENTI_CONFIG (${utentiConfigFields.join(', ')}) VALUES (${utentiConfigPlaceholders.join(', ')})`;
370
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, queryUtentiConfig, utentiConfigParams);
408
+ const utentiConfigFields = ['CODUTE', 'COGNOME', 'NOME'];
409
+ const utentiConfigPlaceholders = ['?', '?', '?'];
410
+ const utentiConfigParams = [newCodiceUtente, registrationData.cognome, registrationData.nome];
411
+ const optionalFields = [
412
+ {
413
+ key: 'cellulare',
414
+ dbField: 'CELLULARE',
415
+ transform: (v) => String(v),
416
+ },
417
+ {
418
+ key: 'avatar',
419
+ dbField: 'AVATAR',
420
+ transform: (v) => String(v),
421
+ },
422
+ {
423
+ key: 'paginaDefault',
424
+ dbField: 'PAGDEF',
425
+ transform: (v) => String(v),
426
+ },
427
+ {
428
+ key: 'flagDueFattori',
429
+ dbField: 'FLG2FATT',
430
+ transform: (v) => (v ? 1 : 0),
431
+ },
432
+ ];
433
+ if (allowPrivilegedFields) {
434
+ optionalFields.push({
435
+ key: 'flagSuper',
436
+ dbField: 'FLGSUPER',
437
+ transform: (v) => (v ? 1 : 0),
438
+ }, {
439
+ key: 'flagAdmin',
440
+ dbField: 'FLGADMIN',
441
+ transform: (v) => (v ? 1 : 0),
442
+ });
443
+ }
444
+ for (const field of optionalFields) {
445
+ const value = registrationData[field.key];
446
+ if (value !== undefined && value !== null) {
447
+ utentiConfigFields.push(field.dbField);
448
+ utentiConfigPlaceholders.push('?');
449
+ utentiConfigParams.push(field.transform ? field.transform(value) : value);
450
+ }
451
+ }
452
+ const queryUtentiConfig = `INSERT INTO UTENTI_CONFIG (${utentiConfigFields.join(', ')}) VALUES (${utentiConfigPlaceholders.join(', ')})`;
453
+ yield Orm_1.Orm.transactionQuery(transaction, queryUtentiConfig, utentiConfigParams);
454
+ return newCodiceUtente;
455
+ }));
371
456
  yield this.filtriService.upsertFiltriUtente(codiceUtente, registrationData);
372
457
  if (allowPrivilegedFields && !!registrationData.roles && registrationData.roles.length > 0) {
373
458
  yield this.permissionService.assignRolesToUser(codiceUtente, registrationData.roles);
@@ -384,20 +469,44 @@ let UserService = class UserService {
384
469
  }
385
470
  });
386
471
  }
472
+ /**
473
+ * Aggiorna il profilo utente e i filtri. Le modifiche a stato, ruoli, grant e flag amministrativi richiedono
474
+ * `allowPrivilegedChanges`; gli array ruolo/grant passati in un flusso fidato sostituiscono le assegnazioni.
475
+ */
387
476
  updateUser(codiceUtente, user, options) {
388
477
  return __awaiter(this, void 0, void 0, function* () {
478
+ var _a, _b, _c, _d;
389
479
  try {
390
480
  if (!codiceUtente)
391
481
  throw new Error('Impossibile aggiornare senza codice utente.');
392
482
  const allowPrivilegedChanges = (options === null || options === void 0 ? void 0 : options.allowPrivilegedChanges) === true;
483
+ for (const value of [user.flagDueFattori, user.passwordlessLoginEnabled]) {
484
+ if (value !== undefined && typeof value !== 'boolean')
485
+ throw new common_1.BadRequestException('Le policy di autenticazione devono essere booleane.');
486
+ }
393
487
  if (!allowPrivilegedChanges &&
394
488
  (user.statoRegistrazione !== undefined ||
395
489
  user.flagSuper !== undefined ||
396
- user.flagAdminConfigurator !== undefined ||
490
+ user.flagAdmin !== undefined ||
491
+ user.passwordLoginEnabled !== undefined ||
492
+ user.passwordlessLoginEnabled !== undefined ||
493
+ user.flagDueFattori !== undefined ||
397
494
  user.roles !== undefined ||
398
495
  user.permissions !== undefined)) {
399
496
  throw new Error('Non e consentito modificare campi privilegiati.');
400
497
  }
498
+ if (user.flagDueFattori !== undefined || user.passwordlessLoginEnabled !== undefined || user.email !== undefined) {
499
+ const current = yield this.getAuthenticatedUserSnapshot(codiceUtente);
500
+ if (!current)
501
+ throw new common_1.BadRequestException('Utente non trovato.');
502
+ const twoFactor = (_a = user.flagDueFattori) !== null && _a !== void 0 ? _a : current.flagDueFattori;
503
+ const passwordless = (_b = user.passwordlessLoginEnabled) !== null && _b !== void 0 ? _b : current.passwordlessLoginEnabled;
504
+ if (passwordless && !twoFactor)
505
+ throw new common_1.BadRequestException('Il login senza password richiede il codice di accesso attivo.');
506
+ if (twoFactor && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(((_d = (_c = user.email) !== null && _c !== void 0 ? _c : current.email) !== null && _d !== void 0 ? _d : '').trim())) {
507
+ throw new common_1.BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');
508
+ }
509
+ }
401
510
  const utentiUpdates = [];
402
511
  const utentiParams = [];
403
512
  if (user.email !== undefined) {
@@ -435,7 +544,11 @@ let UserService = class UserService {
435
544
  }
436
545
  if (user.flagDueFattori !== undefined) {
437
546
  utentiConfigUpdates.push('flg2fatt = ?');
438
- utentiConfigParams.push(user.flagDueFattori);
547
+ utentiConfigParams.push(user.flagDueFattori ? 1 : 0);
548
+ }
549
+ if (user.passwordlessLoginEnabled !== undefined) {
550
+ utentiConfigUpdates.push('flgpwdless = ?');
551
+ utentiConfigParams.push(user.passwordlessLoginEnabled ? 1 : 0);
439
552
  }
440
553
  if (user.codiceLingua !== undefined) {
441
554
  utentiConfigUpdates.push('codlingua = ?');
@@ -445,35 +558,35 @@ let UserService = class UserService {
445
558
  utentiConfigUpdates.push('cellulare = ?');
446
559
  utentiConfigParams.push(user.cellulare);
447
560
  }
561
+ if (user.paginaDefault !== undefined) {
562
+ utentiConfigUpdates.push('PAGDEF = ?');
563
+ utentiConfigParams.push(user.paginaDefault);
564
+ }
448
565
  if (allowPrivilegedChanges && user.flagSuper !== undefined) {
449
566
  utentiConfigUpdates.push('flgsuper = ?');
450
567
  utentiConfigParams.push(user.flagSuper);
451
568
  }
452
- if (allowPrivilegedChanges && user.flagAdminConfigurator !== undefined) {
453
- utentiConfigUpdates.push('flgadminconfig = ?');
454
- utentiConfigParams.push(user.flagAdminConfigurator);
569
+ if (allowPrivilegedChanges && user.flagAdmin !== undefined) {
570
+ utentiConfigUpdates.push('FLGADMIN = ?');
571
+ utentiConfigParams.push(user.flagAdmin);
455
572
  }
456
- if (user.paginaDefault !== undefined) {
457
- utentiConfigUpdates.push('pagdef = ?');
458
- utentiConfigParams.push(user.paginaDefault);
573
+ if (allowPrivilegedChanges && user.passwordLoginEnabled !== undefined) {
574
+ utentiConfigUpdates.push('flgpassword = ?');
575
+ utentiConfigParams.push(user.passwordLoginEnabled ? 1 : 0);
459
576
  }
460
577
  if (user.jsonMetadata !== undefined) {
461
578
  utentiConfigUpdates.push('json_metadata = ?');
462
579
  utentiConfigParams.push(user.jsonMetadata);
463
580
  }
464
- if (user.ragSocCli !== undefined) {
465
- utentiConfigUpdates.push('ragsoccli = ?');
466
- utentiConfigParams.push(user.ragSocCli);
467
- }
468
581
  if (utentiConfigUpdates.length > 0) {
469
582
  const queryUtentiConfig = `UPDATE UTENTI_CONFIG SET ${utentiConfigUpdates.join(', ')} WHERE CODUTE = ?`;
470
583
  utentiConfigParams.push(codiceUtente);
471
584
  yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, queryUtentiConfig, utentiConfigParams);
472
585
  }
473
- if (allowPrivilegedChanges && !!user.roles && user.roles.length > 0) {
586
+ if (allowPrivilegedChanges && Array.isArray(user.roles)) {
474
587
  yield this.permissionService.assignRolesToUser(codiceUtente, user.roles);
475
588
  }
476
- if (allowPrivilegedChanges && !!user.permissions && user.permissions.length > 0) {
589
+ if (allowPrivilegedChanges && Array.isArray(user.permissions)) {
477
590
  yield this.permissionService.assignPermissionsToUser(codiceUtente, user.permissions);
478
591
  }
479
592
  yield this.filtriService.upsertFiltriUtente(codiceUtente, user);
@@ -485,64 +598,10 @@ let UserService = class UserService {
485
598
  }
486
599
  updateUserFilters(codiceUtente, user) {
487
600
  return __awaiter(this, void 0, void 0, function* () {
488
- try {
489
- if (!codiceUtente || codiceUtente <= 0) {
490
- throw new Error('Codice utente non valido');
491
- }
492
- const fieldMapping = {
493
- numRep: { dbField: 'NUMREP', type: 'number' },
494
- idxPers: { dbField: 'IDXPERS', type: 'number' },
495
- codCliSuper: { dbField: 'CODCLISUPER', type: 'number' },
496
- codAge: { dbField: 'CODAGE', type: 'number' },
497
- codCliCol: { dbField: 'CODCLICOL', type: 'number' },
498
- codiceClienti: { dbField: 'CODCLIENTI', type: 'string' },
499
- tipFil: { dbField: 'TIPFIL', type: 'number' },
500
- idxPostazione: { dbField: 'IDXPOS', type: 'number' },
501
- };
502
- const fieldsToUpdate = Object.entries(fieldMapping)
503
- .filter(([tsField]) => {
504
- const value = user[tsField];
505
- return value !== undefined && value !== null;
506
- })
507
- .map(([tsField, config]) => {
508
- const value = user[tsField];
509
- if (config.type === 'number' && typeof value !== 'number') {
510
- throw new Error(`Il campo ${tsField} deve essere un numero`);
511
- }
512
- if (config.type === 'string' && typeof value !== 'string') {
513
- throw new Error(`Il campo ${tsField} deve essere una stringa`);
514
- }
515
- return { tsField, dbField: config.dbField, value };
516
- });
517
- if (fieldsToUpdate.length === 0) {
518
- return;
519
- }
520
- yield this.executeInTransaction(() => __awaiter(this, void 0, void 0, function* () {
521
- const checkQuery = `SELECT COUNT(*) as CNT FROM FILTRI WHERE CODUTE = ?`;
522
- const existingRecord = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, checkQuery, [
523
- codiceUtente,
524
- ]);
525
- const exists = existingRecord[0].CNT > 0;
526
- if (exists) {
527
- const updates = fieldsToUpdate.map((f) => `${f.dbField} = ?`).join(', ');
528
- const values = [...fieldsToUpdate.map((f) => f.value), codiceUtente];
529
- const updateQuery = `UPDATE FILTRI SET ${updates} WHERE CODUTE = ?`;
530
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, updateQuery, values);
531
- }
532
- else {
533
- const dbFields = ['CODUTE', ...fieldsToUpdate.map((f) => f.dbField)];
534
- const placeholders = dbFields.map(() => '?');
535
- const insertValues = [codiceUtente, ...fieldsToUpdate.map((f) => f.value)];
536
- const insertQuery = `INSERT INTO FILTRI (${dbFields.join(', ')}) VALUES (${placeholders.join(', ')})`;
537
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, insertQuery, insertValues);
538
- }
539
- }));
540
- }
541
- catch (error) {
542
- throw new Error(`Errore durante l'aggiornamento dei filtri per utente ${codiceUtente}: ${error.message}`);
543
- }
601
+ yield this.filtriService.upsertFiltriUtente(codiceUtente, user);
544
602
  });
545
603
  }
604
+ /** Eliminazione logica: imposta lo stato `DELETE` senza cancellare lo storico o i collegamenti SSO. */
546
605
  deleteUser(codiceCliente) {
547
606
  return __awaiter(this, void 0, void 0, function* () {
548
607
  try {
@@ -557,6 +616,7 @@ let UserService = class UserService {
557
616
  }
558
617
  });
559
618
  }
619
+ /** Cambia esplicitamente lo stato di registrazione; usare questa API per blocco, conferma o eliminazione logica. */
560
620
  setStato(codiceCliente, statoRegistrazione) {
561
621
  return __awaiter(this, void 0, void 0, function* () {
562
622
  try {
@@ -574,15 +634,57 @@ let UserService = class UserService {
574
634
  setGdpr(codiceUtente) {
575
635
  return __awaiter(this, void 0, void 0, function* () {
576
636
  try {
577
- const query = ` UPDATE OR INSERT UTENTI_GDPR SET CODUTE = ?, GDPR = ? `;
578
- const params = [codiceUtente, true];
579
- return yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, query, params);
637
+ return yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, [
638
+ { query: 'INSERT INTO UTENTI_GDPR (CODUTE, GDPR) VALUES (?, ?)', params: [codiceUtente, 'true'] },
639
+ { query: 'UPDATE UTENTI SET FLGGDPR = 1, DATGDPR = CURRENT_DATE WHERE CODUTE = ?', params: [codiceUtente] },
640
+ ]);
580
641
  }
581
642
  catch (error) {
582
643
  throw error;
583
644
  }
584
645
  });
585
646
  }
647
+ /**
648
+ * Forza l'invio dell'email di reset password per un utente. Operazione amministrativa.
649
+ * Richiede un servizio email configurato: altrimenti solleva ACCESSI_EMAIL_NOT_CONFIGURED.
650
+ */
651
+ forcePasswordReset(codiceUtente) {
652
+ return __awaiter(this, void 0, void 0, function* () {
653
+ var _a, _b;
654
+ (0, emailConfiguration_1.assertEmailConfigured)(this.accessiOptions);
655
+ const rows = yield this.getUsers({ codiceUtente });
656
+ const email = (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.utente) === null || _b === void 0 ? void 0 : _b.email;
657
+ if (typeof email !== 'string' || email.trim() === '') {
658
+ throw new common_1.NotFoundException(`Nessun utente con email per il codice ${codiceUtente}.`);
659
+ }
660
+ yield this.emailService.sendPasswordResetEmail(email);
661
+ });
662
+ }
663
+ /**
664
+ * Forza l'invio dell'email di reset a tutti gli utenti la cui password non e ancora nel formato
665
+ * moderno (`scrypt$...`), cioe' legacy grezza o `scrypt-legacy` non piu verificabile. Utile quando
666
+ * la `encryptionKey` storica e perduta. Richiede email configurata. Ritorna quanti utenti hanno
667
+ * ricevuto l'email.
668
+ */
669
+ forcePasswordResetForLegacyPasswords() {
670
+ return __awaiter(this, void 0, void 0, function* () {
671
+ (0, emailConfiguration_1.assertEmailConfigured)(this.accessiOptions);
672
+ const rows = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT U.CODUTE AS codice_utente, U.USRNAME AS email
673
+ FROM UTENTI U
674
+ JOIN UTENTI_PWD P ON P.CODUTE = U.CODUTE
675
+ WHERE P.PWD IS NOT NULL AND P.PWD NOT STARTING WITH 'scrypt$'`, [], false);
676
+ let sent = 0;
677
+ for (const row of rows) {
678
+ const raw = Utilities_1.RestUtilities.convertKeysToCamelCase(row);
679
+ const email = typeof raw.email === 'string' ? raw.email.trim() : '';
680
+ if (email === '')
681
+ continue;
682
+ yield this.emailService.sendPasswordResetEmail(email);
683
+ sent += 1;
684
+ }
685
+ return sent;
686
+ });
687
+ }
586
688
  };
587
689
  exports.UserService = UserService;
588
690
  exports.UserService = UserService = __decorate([