emilsoftware-utilities 2.0.0-dev.21 → 2.0.0-dev.23

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 (379) hide show
  1. package/dist/DailyFileTransport.d.ts +15 -0
  2. package/dist/DailyFileTransport.js +67 -0
  3. package/dist/DailyFileTransport.js.map +1 -0
  4. package/dist/DatabaseUpdater.js +0 -2
  5. package/dist/DatabaseUpdater.js.map +1 -1
  6. package/dist/ExecutionTimeLogger.js +2 -2
  7. package/dist/ExecutionTimeLogger.js.map +1 -1
  8. package/dist/Logger.d.ts +0 -2
  9. package/dist/Logger.js +6 -70
  10. package/dist/Logger.js.map +1 -1
  11. package/dist/Utilities.d.ts +8 -3
  12. package/dist/Utilities.js +61 -16
  13. package/dist/Utilities.js.map +1 -1
  14. package/dist/accessi-module/AccessiModule.d.ts +60 -0
  15. package/dist/accessi-module/AccessiModule.js +21 -5
  16. package/dist/accessi-module/AccessiModule.js.map +1 -1
  17. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  18. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  19. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  20. package/dist/accessi-module/Console/console.css +370 -0
  21. package/dist/accessi-module/Console/console.d.ts +1 -0
  22. package/dist/accessi-module/Console/console.js +1105 -0
  23. package/dist/accessi-module/Console/console.js.map +1 -0
  24. package/dist/accessi-module/Console/generated/accessiApi.d.ts +376 -0
  25. package/dist/accessi-module/Console/generated/accessiApi.js +363 -0
  26. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  27. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +27 -0
  28. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  29. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  30. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  31. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  32. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  33. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  34. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  35. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  36. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  37. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  38. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  39. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  40. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  41. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  42. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  43. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  44. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  45. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  46. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  47. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  48. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  49. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  50. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  51. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  52. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  53. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  54. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  55. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  56. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  57. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  58. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  59. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  60. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  61. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  62. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  63. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  64. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  65. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  66. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  67. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  68. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  69. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  70. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  71. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  72. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  73. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  74. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  75. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  76. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  77. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  78. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  79. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  80. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  81. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  82. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  83. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  84. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  85. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  86. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  87. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  88. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  89. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  90. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  91. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  92. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  93. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  94. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  95. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  96. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  97. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  98. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  99. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  100. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  101. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  102. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  103. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  104. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  105. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  106. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  107. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  108. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  109. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  110. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  111. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +24 -0
  112. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  113. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  114. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  115. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  116. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  118. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  119. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  121. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  122. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  124. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  125. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/index.d.ts +75 -0
  127. package/dist/accessi-module/Console/generated/model/index.js +92 -0
  128. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  130. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  131. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  134. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  136. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  137. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  139. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  140. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  142. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  143. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  145. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  146. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  148. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  151. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  152. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  154. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  155. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  157. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  158. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  160. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  161. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  163. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  164. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  166. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  169. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  172. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  173. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  175. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  178. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  181. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  184. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  185. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  187. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  188. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  190. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  191. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  193. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  194. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  196. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  197. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  199. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  200. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  202. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  203. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  205. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  206. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  208. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  209. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  211. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  212. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  214. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  217. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  220. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  221. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  223. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  226. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  227. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  229. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  230. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  235. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  236. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  237. package/dist/accessi-module/Console/index.html +59 -0
  238. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +11 -0
  239. package/dist/accessi-module/Controllers/AccessiConsoleController.js +74 -0
  240. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  241. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -1
  242. package/dist/accessi-module/Controllers/AuthController.js +86 -47
  243. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  244. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -1
  245. package/dist/accessi-module/Controllers/ConfiguratorController.js +3 -1
  246. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  247. package/dist/accessi-module/Controllers/EmailController.d.ts +1 -1
  248. package/dist/accessi-module/Controllers/EmailController.js +3 -1
  249. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  250. package/dist/accessi-module/Controllers/FiltriController.d.ts +1 -1
  251. package/dist/accessi-module/Controllers/FiltriController.js +3 -1
  252. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  253. package/dist/accessi-module/Controllers/PermissionController.d.ts +1 -1
  254. package/dist/accessi-module/Controllers/PermissionController.js +9 -5
  255. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  256. package/dist/accessi-module/Controllers/UserController.d.ts +3 -1
  257. package/dist/accessi-module/Controllers/UserController.js +40 -2
  258. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  259. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -1
  260. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  261. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +3 -0
  262. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +18 -0
  263. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -1
  264. package/dist/accessi-module/Dtos/BaseResponse.d.ts +2 -0
  265. package/dist/accessi-module/Dtos/BaseResponse.js +21 -2
  266. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  267. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  268. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  269. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  270. package/dist/accessi-module/Dtos/FiltriUtente.js +4 -1
  271. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  272. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  273. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  274. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  275. package/dist/accessi-module/Dtos/LoginResponse.d.ts +5 -1
  276. package/dist/accessi-module/Dtos/LoginResponse.js +19 -6
  277. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  278. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  279. package/dist/accessi-module/Dtos/Permission.js +1 -0
  280. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  281. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +1 -1
  282. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +1 -0
  283. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -1
  284. package/dist/accessi-module/Dtos/RegisterRequest.js +1 -0
  285. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  286. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  287. package/dist/accessi-module/Dtos/Role.js +4 -0
  288. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  289. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  290. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  291. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  292. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  293. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  294. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  295. package/dist/accessi-module/Dtos/UserDto.d.ts +7 -0
  296. package/dist/accessi-module/Dtos/UserDto.js +22 -0
  297. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  298. package/dist/accessi-module/Dtos/index.d.ts +2 -0
  299. package/dist/accessi-module/Dtos/index.js +2 -0
  300. package/dist/accessi-module/Dtos/index.js.map +1 -1
  301. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +39 -4
  302. package/dist/accessi-module/Services/AuthService/AuthService.js +184 -32
  303. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  304. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  305. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  306. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  307. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +7 -1
  308. package/dist/accessi-module/Services/EmailService/EmailService.js +23 -5
  309. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  310. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +9 -1
  311. package/dist/accessi-module/Services/FiltriService/FiltriService.js +29 -4
  312. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  313. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +29 -1
  314. package/dist/accessi-module/Services/PermissionService/PermissionService.js +38 -7
  315. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  316. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  317. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +179 -0
  318. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  319. package/dist/accessi-module/Services/UserService/UserService.d.ts +26 -2
  320. package/dist/accessi-module/Services/UserService/UserService.js +124 -30
  321. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  322. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +38 -10
  323. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +368 -184
  324. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  325. package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
  326. package/dist/accessi-module/database-updates/accessiSchema.js +79 -0
  327. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  328. package/dist/accessi-module/database-updates/optionalColumns.d.ts +5 -0
  329. package/dist/accessi-module/database-updates/optionalColumns.js +26 -0
  330. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  331. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +11 -6
  332. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  333. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +23 -0
  334. package/dist/accessi-module/federated-auth/FederatedAuthController.js +307 -0
  335. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  336. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +94 -0
  337. package/dist/accessi-module/federated-auth/FederatedAuthService.js +424 -0
  338. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  339. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  340. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  341. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  342. package/dist/accessi-module/index.d.ts +14 -0
  343. package/dist/accessi-module/index.js +18 -10
  344. package/dist/accessi-module/index.js.map +1 -1
  345. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  346. package/dist/accessi-module/jwt/jwt.strategy.js +10 -4
  347. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  348. package/dist/accessi-module/middleware/accessiRequirements.d.ts +22 -0
  349. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  350. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  351. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  352. package/dist/accessi-module/middleware/authenticateGen.js +54 -20
  353. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  354. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  355. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  356. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  357. package/dist/accessi-module/security/accessControl.d.ts +11 -0
  358. package/dist/accessi-module/security/accessControl.js +11 -1
  359. package/dist/accessi-module/security/accessControl.js.map +1 -1
  360. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  361. package/dist/accessi-module/security/accessiValidation.js +41 -0
  362. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  363. package/dist/accessi-module/security/authenticatedToken.d.ts +14 -0
  364. package/dist/accessi-module/security/authenticatedToken.js +30 -4
  365. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  366. package/dist/accessi-module/security/passwordResetToken.d.ts +5 -1
  367. package/dist/accessi-module/security/passwordResetToken.js +5 -1
  368. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  369. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +2 -2
  370. package/dist/accessi-module/security/publicAuthRateLimit.js +2 -0
  371. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  372. package/dist/emilsoftware-utilities-2.0.0-dev.23.tgz +0 -0
  373. package/dist/initEmilsoftwareModule.js +7 -0
  374. package/dist/initEmilsoftwareModule.js.map +1 -1
  375. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  376. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  377. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  378. package/package.json +13 -4
  379. package/dist/emilsoftware-utilities-2.0.0-dev.21.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"EmailService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/EmailService/EmailService.ts"],"names":[],"mappings":"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","sourcesContent":["import nodemailer from 'nodemailer';\nimport { v4 as uuidv4 } from 'uuid';\nimport { AccessiOptions } from '../../AccessiModule';\nimport { Orm } from '../../../Orm';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { StatoRegistrazione } from '../../Dtos/StatoRegistrazione';\nimport {\n createPasswordResetToken,\n getAccessiJwtSecret,\n} from '../../security/passwordResetToken';\n\n@Injectable()\nexport class EmailService {\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\n\n sendAccountUpdateEmail(email: string, message: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n private transporter = nodemailer.createTransport(this.accessiOptions.emailOptions);\n\n public async sendPasswordResetEmail(email: string, htmlMail?: string): Promise<void> {\n let codiceUtente: number | null = null;\n let resetToken: string | null = null;\n\n try {\n if (typeof email !== 'string' || email.trim() === '') {\n return;\n }\n\n const normalizedEmail = email.trim().toLowerCase();\n const userResult = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODUTE as codice_utente, STAREG as stato_registrazione FROM UTENTI WHERE LOWER(USRNAME) = ?',\n [normalizedEmail],\n );\n const user = userResult.map((row) => ({\n codiceUtente: Number(row.CODICE_UTENTE ?? row.codice_utente ?? row.CODUTE ?? row.codute),\n statoRegistrazione: Number(\n row.STATO_REGISTRAZIONE ?? row.stato_registrazione ?? row.STAREG ?? row.stareg,\n ),\n }))[0];\n\n if (\n !user?.codiceUtente ||\n user.statoRegistrazione === StatoRegistrazione.BLOCC ||\n user.statoRegistrazione === StatoRegistrazione.DELETE\n ) {\n return;\n }\n\n codiceUtente = user.codiceUtente;\n const nonce = uuidv4();\n const secret = getAccessiJwtSecret(this.accessiOptions);\n resetToken = createPasswordResetToken(codiceUtente, nonce, secret);\n\n await Orm.execute(\n this.accessiOptions.databaseOptions,\n 'UPDATE UTENTI SET KEYREG = ? WHERE CODUTE = ? ',\n [nonce, codiceUtente],\n );\n\n //costruizione dei queryparams\n const returnUrlQueryParams =\n '?returnUrl=' +\n encodeURIComponent(this.accessiOptions.confirmationEmailReturnUrl) +\n '&prefix=' +\n encodeURIComponent(this.accessiOptions.confirmationEmailPrefix ?? '');\n const { confirmationEmailUrl, customResetPage } = this.accessiOptions;\n\n // costruisco l'url di base\n let resetUrl = `${confirmationEmailUrl}/api/accessi/email/reset-password-page/${encodeURIComponent(\n resetToken,\n )}${returnUrlQueryParams}`;\n\n //solo se gli do la customResetPage\n if (customResetPage) {\n resetUrl = `${customResetPage}?token=${encodeURIComponent(resetToken)}`;\n }\n\n let sPhrase: string;\n\n if (htmlMail) {\n sPhrase = htmlMail.replace('#link_conferma_password_url', resetUrl);\n } else {\n sPhrase = ` Gentile utente,<br>\n abbiamo ricevuto la tua richiesta.<br><br>\n\n Per completare l'operazione, clicca sul link qui sotto:<br>\n <a href=\"${resetUrl}\">completa la procedura</a><br><br>\n\n Se hai richiesto la registrazione al servizio o la reimpostazione della password, questo passaggio è necessario.<br>\n Se non sei stato tu a effettuare questa richiesta, puoi ignorare questo messaggio in tutta sicurezza.<br><br>\n\n Questa è una comunicazione automatica, ti preghiamo di non rispondere a questa email.<br><br>\n\n Grazie.<br>`;\n }\n\n const html = this.GetHtmlMail(sPhrase);\n const mailOptions = {\n from: this.accessiOptions.emailOptions.from,\n to: email,\n subject: 'Scelta nuova password',\n text: sPhrase,\n html: html,\n };\n\n await this.transporter.sendMail(mailOptions);\n } catch (error) {\n if (codiceUtente) {\n await Orm.execute(\n this.accessiOptions.databaseOptions,\n 'UPDATE UTENTI SET KEYREG = NULL WHERE CODUTE = ?',\n [codiceUtente],\n ).catch(() => undefined);\n }\n console.error(\"Errore nell'invio dell'email di reset password:\", error);\n throw new Error(\"Errore durante l'invio dell'email di reset password.\");\n }\n }\n\n private GetHtmlMail(sPhrase: string): string {\n let sTxt = '';\n sTxt += '<html xmlns=\"http://www.w3.org/1999/xhtml\">';\n sTxt += '<head>';\n sTxt += ' <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\">';\n sTxt += ' <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">';\n sTxt += ' <title></title>';\n sTxt += ' <style type=\"text/css\">';\n sTxt += ' @media only screen and (max-width:480px) {';\n sTxt += ' body,';\n sTxt += ' table,';\n sTxt += ' td,';\n sTxt += ' p,';\n sTxt += ' a,';\n sTxt += ' li,';\n sTxt += ' blockquote {';\n sTxt += ' -webkit-text-size-adjust: none !important';\n sTxt += ' }';\n sTxt += ' body {';\n sTxt += ' width: 100% !important;';\n sTxt += ' min-width: 100% !important';\n sTxt += ' }';\n sTxt += ' #bodyCell {';\n sTxt += ' padding: 10px !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileHide {';\n sTxt += ' display: none !important';\n sTxt += ' }';\n sTxt += ' table.kmDesktopOnly,';\n sTxt += ' td.kmDesktopOnly,';\n sTxt += ' th.kmDesktopOnly,';\n sTxt += ' tr.kmDesktopOnly,';\n sTxt += ' td.kmDesktopWrapHeaderMobileNone {';\n sTxt += ' display: none !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileOnly {';\n sTxt += ' display: table !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileOnly {';\n sTxt += ' display: table-row !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileOnly,';\n sTxt += ' td.kmDesktopWrapHeader,';\n sTxt += ' th.kmMobileOnly {';\n sTxt += ' display: table-cell !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileNoAlign,';\n sTxt += ' table.kmMobileNoAlign {';\n sTxt += ' float: none !important;';\n sTxt += ' text-align: initial !important;';\n sTxt += ' vertical-align: middle !important;';\n sTxt += ' table-layout: fixed !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileCenterAlign {';\n sTxt += ' float: none !important;';\n sTxt += ' text-align: center !important;';\n sTxt += ' vertical-align: middle !important;';\n sTxt += ' table-layout: fixed !important';\n sTxt += ' }';\n sTxt += ' td.kmButtonCollection {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important;';\n sTxt += ' padding-top: 9px !important;';\n sTxt += ' padding-bottom: 9px !importan';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderStackDesktopNone,';\n sTxt += ' img.kmMobileHeaderStackDesktopNone,';\n sTxt += ' td.kmMobileHeaderStack {';\n sTxt += ' display: block !important;';\n sTxt += ' margin-left: auto !important;';\n sTxt += ' margin-right: auto !important;';\n sTxt += ' padding-bottom: 9px !important;';\n sTxt += ' padding-right: 0 !important;';\n sTxt += ' padding-left: 0 !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileWrapHeader,';\n sTxt += ' td.kmMobileWrapHeaderDesktopNone {';\n sTxt += ' display: inline-block !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderSpacing {';\n sTxt += ' padding-right: 10px !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderNoSpacing {';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' table.kmDesktopAutoWidth {';\n sTxt += ' width: inherit !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileAutoWidth {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.kmTextContentContainer {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.kmBoxedTextContentContainer {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmImageContent {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' img.kmImage {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileStretch {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' table.kmSplitContentLeftContentContainer,';\n sTxt += ' table.kmSplitContentRightContentContainer,';\n sTxt += ' table.kmColumnContainer,';\n sTxt += ' td.kmVerticalButtonBarContentOuter table.kmButtonBarContent,';\n sTxt +=\n ' td.kmVerticalButtonCollectionContentOuter table.kmButtonCollectionContent,';\n sTxt += ' table.kmVerticalButton,';\n sTxt += ' table.kmVerticalButtonContent {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmButtonCollectionInner {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important;';\n sTxt += ' padding-top: 9px !important;';\n sTxt += ' padding-bottom: 9px !important';\n sTxt += ' }';\n sTxt += ' td.kmVerticalButtonIconContent,';\n sTxt += ' td.kmVerticalButtonTextContent,';\n sTxt += ' td.kmVerticalButtonContentOuter {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important;';\n sTxt += ' padding-bottom: 9px !important';\n sTxt += ' }';\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmTextContent,';\n sTxt += ' table.kmSplitContentRightContentContainer td.kmTextContent,';\n sTxt += ' table.kmColumnContainer td.kmTextContent,';\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmImageContent,';\n sTxt += ' table.kmSplitContentRightContentContainer td.kmImageContent {';\n sTxt += ' padding-top: 9px !important';\n sTxt += ' }';\n sTxt += ' td.rowContainer.kmFloatLeft,';\n sTxt += ' td.rowContainer.kmFloatLeft,';\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn {';\n sTxt += ' float: left;';\n sTxt += ' clear: both;';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.templateContainer,';\n sTxt += ' table.templateContainer.brandingContainer,';\n sTxt += ' div.templateContainer,';\n sTxt += ' div.templateContainer.brandingContainer,';\n sTxt += ' table.templateRow {';\n sTxt += ' max-width: 600px !important;';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' h1 {';\n sTxt += ' font-size: 30px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h2 {';\n sTxt += ' font-size: 22px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h3 {';\n sTxt += ' font-size: 22px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h4 {';\n sTxt += ' font-size: 16px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' td.kmTextContent {';\n sTxt += ' font-size: 14px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' td.kmTextBlockInner td.kmTextContent {';\n sTxt += ' padding-right: 18px !important;';\n sTxt += ' padding-left: 18px !important';\n sTxt += ' }';\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important';\n sTxt += ' }';\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner .kmTextContent {';\n sTxt += ' font-size: 14px !important;';\n sTxt += ' line-height: 130% !important;';\n sTxt += ' padding-left: 4px !important;';\n sTxt += ' padding-right: 4px !important';\n sTxt += ' }';\n sTxt += ' }';\n sTxt += ' </style>';\n sTxt += '</head>';\n sTxt +=\n '<body style=\"margin:0;padding:0;font-family:\"Raleway\", Helvetica, sans-serif;font-weight:400;letter-spacing:0.75px;line-height:180%;background-color:#F2F2F2\">';\n sTxt += ' <center>';\n sTxt +=\n ' <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"bodyTable\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding:0;background-color:#F2F2F2;height:100%;margin:0;width:100%\">';\n sTxt += ' <tbody>';\n sTxt += ' <tr>';\n sTxt +=\n ' <td align=\"center\" id=\"bodyCell\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding-top:10px;padding-left:10px;padding-bottom:20px;padding-right:10px;border-top:0;height:100%;margin:0;width:100%\">';\n sTxt += ' <!--[if !mso]>';\n sTxt += '\t\t\t\t\t<!-->';\n sTxt +=\n ' <div class=\"templateContainer\" style=\"border:0 none #aaa;background-color:#F2F2F2;border-radius:0;display: table; width:90%\">';\n sTxt += ' <div class=\"templateContainerInner\" style=\"padding:0\">';\n sTxt += ' <!--';\n sTxt += '\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' <!--[if mso]>';\n sTxt +=\n '\t\t\t\t\t\t\t<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateContainer\" width=\"90%\" ';\n sTxt +=\n ' style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\n sTxt += '\t\t\t\t\t\t\t\t<tbody>';\n sTxt += '\t\t\t\t\t\t\t\t\t<tr>';\n sTxt +=\n '\t\t\t\t\t\t\t\t\t\t<td class=\"templateContainerInner\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt += ' <tr>';\n sTxt +=\n ' <td align=\"center\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateRow\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt += ' <tbody>';\n sTxt += ' <tr>';\n sTxt +=\n ' <td class=\"rowContainer kmFloatLeft\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextBlock\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <tbody class=\"kmTextBlockOuter\">';\n sTxt += ' <tr>';\n sTxt +=\n ' <td class=\"kmTextBlockInner\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;background-color:#FFFFFF;\">';\n sTxt +=\n ' <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextContentContainer\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <tbody>';\n sTxt +=\n ' <tr>';\n sTxt +=\n ' <td class=\"kmTextContent\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;color:#272727;font-family:Helvetica, Arial;font-size:13px;line-height:200%;letter-spacing:normal;text-align:left;padding-top:40px;padding-bottom:40px;padding-left:40px;padding-right:40px;\">';\n sTxt +=\n ' <p>' +\n sPhrase +\n '<p>';\n sTxt +=\n ' </td>';\n sTxt +=\n ' </tr>';\n sTxt +=\n ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </table>';\n sTxt += ' <!--[if !mso]>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-->';\n sTxt += ' </div>';\n sTxt += ' </div>';\n sTxt += ' <!--';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' <!--[if mso]>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t</td>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t</tr>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t</tbody>';\n sTxt += '\t\t\t\t\t\t\t\t\t</table>';\n sTxt += '\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </center>';\n sTxt += '</body>';\n sTxt += '</html> ';\n\n return sTxt;\n }\n}\n"]}
1
+ {"version":3,"file":"EmailService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/EmailService/EmailService.ts"],"names":[],"mappings":"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","sourcesContent":["import nodemailer from 'nodemailer';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { AccessiOptions } from '../../AccessiModule';\nimport { Orm } from '../../../Orm';\nimport { Inject, Injectable } from '@nestjs/common';\nimport { StatoRegistrazione } from '../../Dtos/StatoRegistrazione';\nimport {\n createPasswordResetToken,\n getAccessiJwtSecret,\n} from '../../security/passwordResetToken';\n\n@Injectable()\n/** Sends password lifecycle email. It deliberately does not expose whether an email exists to public callers. */\nexport class EmailService {\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\n\n sendAccountUpdateEmail(email: string, message: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n private transporter = nodemailer.createTransport(this.accessiOptions.emailOptions);\n\n /** Sends the one-time login code without including it in application logs. */\n public async sendTwoFactorCode(email: string, code: string, validityMinutes: number): Promise<void> {\n await this.transporter.sendMail({\n from: this.accessiOptions.emailOptions.from,\n to: email,\n subject: 'Codice di accesso',\n text: `Il tuo codice di accesso e: ${code}\\n\\nScade entro ${validityMinutes} minuti e puo essere usato una sola volta. Se non hai richiesto l accesso, ignora questa email.`,\n });\n }\n\n /**\n * Creates a short-lived, one-use reset token and sends it by email. Invalid, missing, blocked or deleted users\n * return without error to prevent account enumeration. On delivery failure the stored reset nonce is cleared.\n */\n public async sendPasswordResetEmail(email: string, htmlMail?: string): Promise<void> {\n let codiceUtente: number | null = null;\n let resetToken: string | null = null;\n let nonce: string | null = null;\n\n try {\n if (typeof email !== 'string' || email.trim() === '') {\n return;\n }\n\n const normalizedEmail = email.trim().toLowerCase();\n const userResult = await Orm.query(\n this.accessiOptions.databaseOptions,\n 'SELECT FIRST 1 CODUTE as codice_utente, STAREG as stato_registrazione FROM UTENTI WHERE LOWER(USRNAME) = ?',\n [normalizedEmail],\n );\n const user = userResult.map((row) => ({\n codiceUtente: Number(row.CODICE_UTENTE ?? row.codice_utente ?? row.CODUTE ?? row.codute),\n statoRegistrazione: Number(\n row.STATO_REGISTRAZIONE ?? row.stato_registrazione ?? row.STAREG ?? row.stareg,\n ),\n }))[0];\n\n if (\n !user?.codiceUtente ||\n user.statoRegistrazione === StatoRegistrazione.BLOCC ||\n user.statoRegistrazione === StatoRegistrazione.DELETE\n ) {\n return;\n }\n\n codiceUtente = user.codiceUtente;\n nonce = uuidv4();\n const secret = getAccessiJwtSecret(this.accessiOptions);\n resetToken = createPasswordResetToken(codiceUtente, nonce, secret);\n\n await Orm.execute(\n this.accessiOptions.databaseOptions,\n 'UPDATE UTENTI SET KEYREG = ? WHERE CODUTE = ? ',\n [nonce, codiceUtente],\n false,\n );\n\n //costruizione dei queryparams\n const returnUrlQueryParams =\n '?returnUrl=' +\n encodeURIComponent(this.accessiOptions.confirmationEmailReturnUrl) +\n '&prefix=' +\n encodeURIComponent(this.accessiOptions.confirmationEmailPrefix ?? '');\n const { confirmationEmailUrl, customResetPage } = this.accessiOptions;\n\n // costruisco l'url di base\n let resetUrl = `${confirmationEmailUrl}/api/accessi/email/reset-password-page/${encodeURIComponent(\n resetToken,\n )}${returnUrlQueryParams}`;\n\n //solo se gli do la customResetPage\n if (customResetPage) {\n resetUrl = `${customResetPage}?token=${encodeURIComponent(resetToken)}`;\n }\n\n let sPhrase: string;\n\n if (htmlMail) {\n sPhrase = htmlMail.replace('#link_conferma_password_url', resetUrl);\n } else {\n sPhrase = ` Gentile utente,<br>\n abbiamo ricevuto la tua richiesta.<br><br>\n\n Per completare l'operazione, clicca sul link qui sotto:<br>\n <a href=\"${resetUrl}\">completa la procedura</a><br><br>\n\n Se hai richiesto la registrazione al servizio o la reimpostazione della password, questo passaggio è necessario.<br>\n Se non sei stato tu a effettuare questa richiesta, puoi ignorare questo messaggio in tutta sicurezza.<br><br>\n\n Questa è una comunicazione automatica, ti preghiamo di non rispondere a questa email.<br><br>\n\n Grazie.<br>`;\n }\n\n const html = this.GetHtmlMail(sPhrase);\n const mailOptions = {\n from: this.accessiOptions.emailOptions.from,\n to: email,\n subject: 'Scelta nuova password',\n text: sPhrase,\n html: html,\n };\n\n await this.transporter.sendMail(mailOptions);\n } catch (error) {\n if (codiceUtente && nonce) {\n await Orm.execute(\n this.accessiOptions.databaseOptions,\n 'UPDATE UTENTI SET KEYREG = NULL WHERE CODUTE = ? AND KEYREG = ?',\n [codiceUtente, nonce],\n false,\n ).catch(() => undefined);\n }\n console.error(\"Errore nell'invio dell'email di reset password:\", error);\n throw new Error(\"Errore durante l'invio dell'email di reset password.\");\n }\n }\n\n private GetHtmlMail(sPhrase: string): string {\n let sTxt = '';\n sTxt += '<html xmlns=\"http://www.w3.org/1999/xhtml\">';\n sTxt += '<head>';\n sTxt += ' <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\">';\n sTxt += ' <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">';\n sTxt += ' <title></title>';\n sTxt += ' <style type=\"text/css\">';\n sTxt += ' @media only screen and (max-width:480px) {';\n sTxt += ' body,';\n sTxt += ' table,';\n sTxt += ' td,';\n sTxt += ' p,';\n sTxt += ' a,';\n sTxt += ' li,';\n sTxt += ' blockquote {';\n sTxt += ' -webkit-text-size-adjust: none !important';\n sTxt += ' }';\n sTxt += ' body {';\n sTxt += ' width: 100% !important;';\n sTxt += ' min-width: 100% !important';\n sTxt += ' }';\n sTxt += ' #bodyCell {';\n sTxt += ' padding: 10px !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileHide {';\n sTxt += ' display: none !important';\n sTxt += ' }';\n sTxt += ' table.kmDesktopOnly,';\n sTxt += ' td.kmDesktopOnly,';\n sTxt += ' th.kmDesktopOnly,';\n sTxt += ' tr.kmDesktopOnly,';\n sTxt += ' td.kmDesktopWrapHeaderMobileNone {';\n sTxt += ' display: none !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileOnly {';\n sTxt += ' display: table !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileOnly {';\n sTxt += ' display: table-row !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileOnly,';\n sTxt += ' td.kmDesktopWrapHeader,';\n sTxt += ' th.kmMobileOnly {';\n sTxt += ' display: table-cell !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileNoAlign,';\n sTxt += ' table.kmMobileNoAlign {';\n sTxt += ' float: none !important;';\n sTxt += ' text-align: initial !important;';\n sTxt += ' vertical-align: middle !important;';\n sTxt += ' table-layout: fixed !important';\n sTxt += ' }';\n sTxt += ' tr.kmMobileCenterAlign {';\n sTxt += ' float: none !important;';\n sTxt += ' text-align: center !important;';\n sTxt += ' vertical-align: middle !important;';\n sTxt += ' table-layout: fixed !important';\n sTxt += ' }';\n sTxt += ' td.kmButtonCollection {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important;';\n sTxt += ' padding-top: 9px !important;';\n sTxt += ' padding-bottom: 9px !importan';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderStackDesktopNone,';\n sTxt += ' img.kmMobileHeaderStackDesktopNone,';\n sTxt += ' td.kmMobileHeaderStack {';\n sTxt += ' display: block !important;';\n sTxt += ' margin-left: auto !important;';\n sTxt += ' margin-right: auto !important;';\n sTxt += ' padding-bottom: 9px !important;';\n sTxt += ' padding-right: 0 !important;';\n sTxt += ' padding-left: 0 !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileWrapHeader,';\n sTxt += ' td.kmMobileWrapHeaderDesktopNone {';\n sTxt += ' display: inline-block !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderSpacing {';\n sTxt += ' padding-right: 10px !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileHeaderNoSpacing {';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' table.kmDesktopAutoWidth {';\n sTxt += ' width: inherit !important';\n sTxt += ' }';\n sTxt += ' table.kmMobileAutoWidth {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.kmTextContentContainer {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.kmBoxedTextContentContainer {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmImageContent {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' img.kmImage {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmMobileStretch {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important';\n sTxt += ' }';\n sTxt += ' table.kmSplitContentLeftContentContainer,';\n sTxt += ' table.kmSplitContentRightContentContainer,';\n sTxt += ' table.kmColumnContainer,';\n sTxt += ' td.kmVerticalButtonBarContentOuter table.kmButtonBarContent,';\n sTxt +=\n ' td.kmVerticalButtonCollectionContentOuter table.kmButtonCollectionContent,';\n sTxt += ' table.kmVerticalButton,';\n sTxt += ' table.kmVerticalButtonContent {';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' td.kmButtonCollectionInner {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important;';\n sTxt += ' padding-top: 9px !important;';\n sTxt += ' padding-bottom: 9px !important';\n sTxt += ' }';\n sTxt += ' td.kmVerticalButtonIconContent,';\n sTxt += ' td.kmVerticalButtonTextContent,';\n sTxt += ' td.kmVerticalButtonContentOuter {';\n sTxt += ' padding-left: 0 !important;';\n sTxt += ' padding-right: 0 !important;';\n sTxt += ' padding-bottom: 9px !important';\n sTxt += ' }';\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmTextContent,';\n sTxt += ' table.kmSplitContentRightContentContainer td.kmTextContent,';\n sTxt += ' table.kmColumnContainer td.kmTextContent,';\n sTxt += ' table.kmSplitContentLeftContentContainer td.kmImageContent,';\n sTxt += ' table.kmSplitContentRightContentContainer td.kmImageContent {';\n sTxt += ' padding-top: 9px !important';\n sTxt += ' }';\n sTxt += ' td.rowContainer.kmFloatLeft,';\n sTxt += ' td.rowContainer.kmFloatLeft,';\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.firstColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn,';\n sTxt += ' td.rowContainer.kmFloatLeft.lastColumn {';\n sTxt += ' float: left;';\n sTxt += ' clear: both;';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' table.templateContainer,';\n sTxt += ' table.templateContainer.brandingContainer,';\n sTxt += ' div.templateContainer,';\n sTxt += ' div.templateContainer.brandingContainer,';\n sTxt += ' table.templateRow {';\n sTxt += ' max-width: 600px !important;';\n sTxt += ' width: 100% !important';\n sTxt += ' }';\n sTxt += ' h1 {';\n sTxt += ' font-size: 30px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h2 {';\n sTxt += ' font-size: 22px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h3 {';\n sTxt += ' font-size: 22px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' h4 {';\n sTxt += ' font-size: 16px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' td.kmTextContent {';\n sTxt += ' font-size: 14px !important;';\n sTxt += ' line-height: 130% !important';\n sTxt += ' }';\n sTxt += ' td.kmTextBlockInner td.kmTextContent {';\n sTxt += ' padding-right: 18px !important;';\n sTxt += ' padding-left: 18px !important';\n sTxt += ' }';\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner {';\n sTxt += ' padding-left: 9px !important;';\n sTxt += ' padding-right: 9px !important';\n sTxt += ' }';\n sTxt += ' table.kmTableBlock.kmTableMobile td.kmTableBlockInner .kmTextContent {';\n sTxt += ' font-size: 14px !important;';\n sTxt += ' line-height: 130% !important;';\n sTxt += ' padding-left: 4px !important;';\n sTxt += ' padding-right: 4px !important';\n sTxt += ' }';\n sTxt += ' }';\n sTxt += ' </style>';\n sTxt += '</head>';\n sTxt +=\n '<body style=\"margin:0;padding:0;font-family:\"Raleway\", Helvetica, sans-serif;font-weight:400;letter-spacing:0.75px;line-height:180%;background-color:#F2F2F2\">';\n sTxt += ' <center>';\n sTxt +=\n ' <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"bodyTable\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding:0;background-color:#F2F2F2;height:100%;margin:0;width:100%\">';\n sTxt += ' <tbody>';\n sTxt += ' <tr>';\n sTxt +=\n ' <td align=\"center\" id=\"bodyCell\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;padding-top:10px;padding-left:10px;padding-bottom:20px;padding-right:10px;border-top:0;height:100%;margin:0;width:100%\">';\n sTxt += ' <!--[if !mso]>';\n sTxt += '\t\t\t\t\t<!-->';\n sTxt +=\n ' <div class=\"templateContainer\" style=\"border:0 none #aaa;background-color:#F2F2F2;border-radius:0;display: table; width:90%\">';\n sTxt += ' <div class=\"templateContainerInner\" style=\"padding:0\">';\n sTxt += ' <!--';\n sTxt += '\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' <!--[if mso]>';\n sTxt +=\n '\t\t\t\t\t\t\t<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateContainer\" width=\"90%\" ';\n sTxt +=\n ' style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\n sTxt += '\t\t\t\t\t\t\t\t<tbody>';\n sTxt += '\t\t\t\t\t\t\t\t\t<tr>';\n sTxt +=\n '\t\t\t\t\t\t\t\t\t\t<td class=\"templateContainerInner\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;\">';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt += ' <tr>';\n sTxt +=\n ' <td align=\"center\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"templateRow\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt += ' <tbody>';\n sTxt += ' <tr>';\n sTxt +=\n ' <td class=\"rowContainer kmFloatLeft\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextBlock\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <tbody class=\"kmTextBlockOuter\">';\n sTxt += ' <tr>';\n sTxt +=\n ' <td class=\"kmTextBlockInner\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;background-color:#FFFFFF;\">';\n sTxt +=\n ' <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"kmTextContentContainer\" width=\"100%\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0\">';\n sTxt +=\n ' <tbody>';\n sTxt +=\n ' <tr>';\n sTxt +=\n ' <td class=\"kmTextContent\" valign=\"top\" style=\"border-collapse:collapse;mso-table-lspace:0;mso-table-rspace:0;color:#272727;font-family:Helvetica, Arial;font-size:13px;line-height:200%;letter-spacing:normal;text-align:left;padding-top:40px;padding-bottom:40px;padding-left:40px;padding-right:40px;\">';\n sTxt +=\n ' <p>' +\n sPhrase +\n '<p>';\n sTxt +=\n ' </td>';\n sTxt +=\n ' </tr>';\n sTxt +=\n ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </table>';\n sTxt += ' <!--[if !mso]>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-->';\n sTxt += ' </div>';\n sTxt += ' </div>';\n sTxt += ' <!--';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' <!--[if mso]>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t\t</td>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t\t</tr>';\n sTxt += '\t\t\t\t\t\t\t\t\t\t</tbody>';\n sTxt += '\t\t\t\t\t\t\t\t\t</table>';\n sTxt += '\t\t\t\t\t\t\t\t\t<![endif]-->';\n sTxt += ' </td>';\n sTxt += ' </tr>';\n sTxt += ' </tbody>';\n sTxt += ' </table>';\n sTxt += ' </center>';\n sTxt += '</body>';\n sTxt += '</html> ';\n\n return sTxt;\n }\n}\n"]}
@@ -1,11 +1,19 @@
1
- import { AccessiOptions } from '../../AccessiModule';
1
+ import type { AccessiOptions } from '../../AccessiModule';
2
2
  import { TipoFiltro } from '../../Dtos/TipoFiltro';
3
3
  import { FiltriUtente } from '../../Dtos';
4
4
  export declare class FiltriService {
5
5
  private readonly accessiOptions;
6
6
  private readonly logger;
7
7
  constructor(accessiOptions: AccessiOptions);
8
+ /** Returns the enabled filter-type catalog used by legacy and configurator clients. */
8
9
  getTipoFiltri(): Promise<TipoFiltro[]>;
10
+ /** Returns filters for one user; omit the code only for trusted administrative reporting. */
9
11
  getFiltriUser(codUte: number): Promise<FiltriUtente[]>;
12
+ /** Validate before a caller creates or updates any user data. */
13
+ validateSupportedFields(dto: Partial<FiltriUtente>, columns?: Set<string>): Promise<Set<string>>;
14
+ /**
15
+ * Upserts only supplied mapped fields. `undefined` leaves a field unchanged; `null` or an empty string clears it.
16
+ * The mapping is centralized in `FILTRI_UTENTE_DB_MAPPING` to keep DTO and database names decoupled.
17
+ */
10
18
  upsertFiltriUtente(codUte: number, dto: Partial<FiltriUtente>): Promise<void>;
11
19
  }
@@ -24,6 +24,7 @@ var FiltriService_1;
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.FiltriService = void 0;
26
26
  const common_1 = require("@nestjs/common");
27
+ const optionalColumns_1 = require("../../database-updates/optionalColumns");
27
28
  const Orm_1 = require("../../../Orm");
28
29
  const Utilities_1 = require("../../../Utilities");
29
30
  const Logger_1 = require("../../../Logger");
@@ -33,6 +34,7 @@ let FiltriService = FiltriService_1 = class FiltriService {
33
34
  this.accessiOptions = accessiOptions;
34
35
  this.logger = new Logger_1.Logger(FiltriService_1.name);
35
36
  }
37
+ /** Returns the enabled filter-type catalog used by legacy and configurator clients. */
36
38
  getTipoFiltri() {
37
39
  return __awaiter(this, void 0, void 0, function* () {
38
40
  try {
@@ -47,12 +49,15 @@ let FiltriService = FiltriService_1 = class FiltriService {
47
49
  }
48
50
  });
49
51
  }
52
+ /** Returns filters for one user; omit the code only for trusted administrative reporting. */
50
53
  getFiltriUser(codUte) {
51
54
  return __awaiter(this, void 0, void 0, function* () {
52
55
  try {
53
56
  let params = [];
54
- let getQuery = `SELECT CODUTE AS COD_UTE, PROG AS PROGRESSIVO, NUMREP AS NUM_REP, IDXPERS AS IDX_PERS, CODCLISUPER AS COD_CLI_SUPER, CODAGE AS COD_AGE, CODCLICOL AS COD_CLI_COL,
55
- CODCLIENTI AS COD_CLIENTI, TIPFIL AS TIP_FIL, CODDIP AS COD_DIP, IDXPOS AS IDX_POS, CODVET AS COD_VET FROM FILTRI `;
57
+ const columns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'FILTRI');
58
+ const aliases = { PROG: 'PROGRESSIVO', NUMREP: 'NUM_REP', IDXPERS: 'IDX_PERS', CODCLISUPER: 'COD_CLI_SUPER', CODAGE: 'COD_AGE', CODCLICOL: 'COD_CLI_COL', CODCLIENTI: 'COD_CLIENTI', TIPFIL: 'TIP_FIL', CODDIP: 'COD_DIP', IDXPOS: 'IDX_POS', CODVET: 'COD_VET' };
59
+ const selections = Object.values(Dtos_1.FILTRI_UTENTE_DB_MAPPING).map(cfg => (0, optionalColumns_1.optionalColumn)(columns, cfg.dbField, 'F', aliases[cfg.dbField], cfg.numeric));
60
+ let getQuery = `SELECT F.CODUTE AS COD_UTE, ${selections.join(', ')} FROM FILTRI F `;
56
61
  if (codUte === undefined) {
57
62
  this.logger.log('Nessun utente passato, recupero i filtri di tutti gli utenti...');
58
63
  }
@@ -69,18 +74,36 @@ let FiltriService = FiltriService_1 = class FiltriService {
69
74
  }
70
75
  });
71
76
  }
77
+ /** Validate before a caller creates or updates any user data. */
78
+ validateSupportedFields(dto, columns) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ columns !== null && columns !== void 0 ? columns : (columns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'FILTRI'));
81
+ for (const [key, cfg] of Object.entries(Dtos_1.FILTRI_UTENTE_DB_MAPPING)) {
82
+ const value = dto[key];
83
+ if (value !== undefined && value !== null && value !== '' && !columns.has(cfg.dbField)) {
84
+ throw new common_1.BadRequestException(`Filtro applicativo non configurato: FILTRI.${cfg.dbField}`);
85
+ }
86
+ }
87
+ return columns;
88
+ });
89
+ }
90
+ /**
91
+ * Upserts only supplied mapped fields. `undefined` leaves a field unchanged; `null` or an empty string clears it.
92
+ * The mapping is centralized in `FILTRI_UTENTE_DB_MAPPING` to keep DTO and database names decoupled.
93
+ */
72
94
  upsertFiltriUtente(codUte, dto) {
73
95
  return __awaiter(this, void 0, void 0, function* () {
74
96
  try {
75
97
  if (!codUte || codUte <= 0)
76
98
  throw new Error('Codice utente non valido');
99
+ const columns = yield this.validateSupportedFields(dto);
77
100
  const dbFields = ['CODUTE'];
78
101
  const values = [codUte];
79
102
  //aggiungo solo campi valorizzati
80
103
  for (const [key, cfg] of Object.entries(Dtos_1.FILTRI_UTENTE_DB_MAPPING)) {
81
104
  const value = dto[key];
82
105
  //gestione campi vuoti, null o undefined
83
- if (value === undefined) {
106
+ if (value === undefined || !columns.has(cfg.dbField)) {
84
107
  continue;
85
108
  }
86
109
  if (value === null || value === '') {
@@ -113,7 +136,9 @@ let FiltriService = FiltriService_1 = class FiltriService {
113
136
  };
114
137
  exports.FiltriService = FiltriService;
115
138
  exports.FiltriService = FiltriService = FiltriService_1 = __decorate([
116
- (0, common_1.Injectable)(),
139
+ (0, common_1.Injectable)()
140
+ /** Persists application-specific filter dimensions associated with an Accessi user. */
141
+ ,
117
142
  __param(0, (0, common_1.Inject)('ACCESSI_OPTIONS')),
118
143
  __metadata("design:paramtypes", [Object])
119
144
  ], FiltriService);
@@ -1 +1 @@
1
- {"version":3,"file":"FiltriService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/FiltriService/FiltriService.ts"],"names":[],"mappings":"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","sourcesContent":["import { Inject, Injectable } from '@nestjs/common';\nimport { AccessiOptions } from '../../AccessiModule';\nimport { TipoFiltro } from '../../Dtos/TipoFiltro';\nimport { Orm } from '../../../Orm';\nimport { RestUtilities } from '../../../Utilities';\nimport { Logger } from '../../../Logger';\nimport { FiltriUtente, FILTRI_UTENTE_DB_MAPPING } from '../../Dtos';\n\n@Injectable()\nexport class FiltriService {\n private readonly logger = new Logger(FiltriService.name);\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\n\n public async getTipoFiltri(): Promise<TipoFiltro[]> {\n try {\n let getQuery =\n 'SELECT TIPFIL AS TIP_FIL, DESFIL AS DES_FIL, FLDFIL AS FLD_FIL, FLGENABLED AS FLG_ENABLED FROM FILTRI_TIPO';\n const params = [];\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\n return result.map(RestUtilities.convertKeysToCamelCase);\n } catch (error) {\n this.logger.error('Errore durante il recupero dei tipi di filtri', error);\n throw error;\n }\n }\n\n public async getFiltriUser(codUte: number): Promise<FiltriUtente[]> {\n try {\n let params = [];\n\n let getQuery = `SELECT CODUTE AS COD_UTE, PROG AS PROGRESSIVO, NUMREP AS NUM_REP, IDXPERS AS IDX_PERS, CODCLISUPER AS COD_CLI_SUPER, CODAGE AS COD_AGE, CODCLICOL AS COD_CLI_COL,\n CODCLIENTI AS COD_CLIENTI, TIPFIL AS TIP_FIL, CODDIP AS COD_DIP, IDXPOS AS IDX_POS, CODVET AS COD_VET FROM FILTRI `;\n\n if (codUte === undefined) {\n this.logger.log('Nessun utente passato, recupero i filtri di tutti gli utenti...');\n } else {\n this.logger.log('codUte passato, recupero i filtri dell utente ' + codUte);\n getQuery += ' WHERE CODUTE = ?';\n params.push(codUte);\n }\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\n return result.map(RestUtilities.convertKeysToCamelCase);\n } catch (error) {\n throw error;\n }\n }\n\n public async upsertFiltriUtente(codUte: number, dto: Partial<FiltriUtente>): Promise<void> {\n try {\n if (!codUte || codUte <= 0) throw new Error('Codice utente non valido');\n\n const dbFields: string[] = ['CODUTE'];\n const values: any[] = [codUte];\n\n //aggiungo solo campi valorizzati\n for (const [key, cfg] of Object.entries(FILTRI_UTENTE_DB_MAPPING)) {\n const value = (dto as any)[key];\n\n //gestione campi vuoti, null o undefined\n if (value === undefined) {\n continue\n }\n\n if (value === null || value === '') {\n dbFields.push(cfg.dbField);\n values.push(null);\n continue\n }\n if (cfg.numeric && typeof value !== 'number') {\n throw new Error(`Il campo ${key} deve essere un numero`);\n }\n if (!cfg.numeric && typeof value !== 'string') {\n throw new Error(`Il campo ${key} deve essere una stringa`);\n }\n dbFields.push(cfg.dbField);\n values.push(value);\n }\n\n if (dbFields.length === 1) {\n this.logger.log(`Nessun campo valido da inserire per l'utente ${codUte}`)\n return\n }\n\n let sSql = `UPDATE OR INSERT INTO FILTRI (${dbFields.join(',')}) VALUES (${values.map(() => '?').join(', ')}) MATCHING (CODUTE)`\n await Orm.execute(this.accessiOptions.databaseOptions, sSql, values)\n\n this.logger.log('Update or Insert filtri OK per CODUTE = ' + codUte)\n\n } catch (error) {\n throw new Error(`Errore durante update or insert filtri per utente ${codUte}: ${error.message}`);\n\n }\n }\n}\n"]}
1
+ {"version":3,"file":"FiltriService.js","sourceRoot":"","sources":["../../../../src/accessi-module/Services/FiltriService/FiltriService.ts"],"names":[],"mappings":"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","sourcesContent":["import { BadRequestException, Inject, Injectable } from '@nestjs/common';\nimport { getTableColumns, optionalColumn } from '../../database-updates/optionalColumns';\nimport type { AccessiOptions } from '../../AccessiModule';\nimport { TipoFiltro } from '../../Dtos/TipoFiltro';\nimport { Orm } from '../../../Orm';\nimport { RestUtilities } from '../../../Utilities';\nimport { Logger } from '../../../Logger';\nimport { FiltriUtente, FILTRI_UTENTE_DB_MAPPING } from '../../Dtos';\n\n@Injectable()\n/** Persists application-specific filter dimensions associated with an Accessi user. */\nexport class FiltriService {\n private readonly logger = new Logger(FiltriService.name);\n constructor(@Inject('ACCESSI_OPTIONS') private readonly accessiOptions: AccessiOptions) {}\n\n /** Returns the enabled filter-type catalog used by legacy and configurator clients. */\n public async getTipoFiltri(): Promise<TipoFiltro[]> {\n try {\n let getQuery =\n 'SELECT TIPFIL AS TIP_FIL, DESFIL AS DES_FIL, FLDFIL AS FLD_FIL, FLGENABLED AS FLG_ENABLED FROM FILTRI_TIPO';\n const params = [];\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\n return result.map(RestUtilities.convertKeysToCamelCase);\n } catch (error) {\n this.logger.error('Errore durante il recupero dei tipi di filtri', error);\n throw error;\n }\n }\n\n /** Returns filters for one user; omit the code only for trusted administrative reporting. */\n public async getFiltriUser(codUte: number): Promise<FiltriUtente[]> {\n try {\n let params = [];\n\n const columns = await getTableColumns(this.accessiOptions, 'FILTRI');\n const aliases = { PROG: 'PROGRESSIVO', NUMREP: 'NUM_REP', IDXPERS: 'IDX_PERS', CODCLISUPER: 'COD_CLI_SUPER', CODAGE: 'COD_AGE', CODCLICOL: 'COD_CLI_COL', CODCLIENTI: 'COD_CLIENTI', TIPFIL: 'TIP_FIL', CODDIP: 'COD_DIP', IDXPOS: 'IDX_POS', CODVET: 'COD_VET' };\n const selections = Object.values(FILTRI_UTENTE_DB_MAPPING).map(cfg => optionalColumn(columns, cfg.dbField, 'F', aliases[cfg.dbField], cfg.numeric));\n let getQuery = `SELECT F.CODUTE AS COD_UTE, ${selections.join(', ')} FROM FILTRI F `;\n\n if (codUte === undefined) {\n this.logger.log('Nessun utente passato, recupero i filtri di tutti gli utenti...');\n } else {\n this.logger.log('codUte passato, recupero i filtri dell utente ' + codUte);\n getQuery += ' WHERE CODUTE = ?';\n params.push(codUte);\n }\n\n let result = await Orm.query(this.accessiOptions.databaseOptions, getQuery, params);\n return result.map(RestUtilities.convertKeysToCamelCase);\n } catch (error) {\n throw error;\n }\n }\n\n /** Validate before a caller creates or updates any user data. */\n public async validateSupportedFields(dto: Partial<FiltriUtente>, columns?: Set<string>): Promise<Set<string>> {\n columns ??= await getTableColumns(this.accessiOptions, 'FILTRI');\n for (const [key, cfg] of Object.entries(FILTRI_UTENTE_DB_MAPPING)) {\n const value = dto[key];\n if (value !== undefined && value !== null && value !== '' && !columns.has(cfg.dbField)) {\n throw new BadRequestException(`Filtro applicativo non configurato: FILTRI.${cfg.dbField}`);\n }\n }\n return columns;\n }\n\n /**\n * Upserts only supplied mapped fields. `undefined` leaves a field unchanged; `null` or an empty string clears it.\n * The mapping is centralized in `FILTRI_UTENTE_DB_MAPPING` to keep DTO and database names decoupled.\n */\n public async upsertFiltriUtente(codUte: number, dto: Partial<FiltriUtente>): Promise<void> {\n try {\n if (!codUte || codUte <= 0) throw new Error('Codice utente non valido');\n\n const columns = await this.validateSupportedFields(dto);\n const dbFields: string[] = ['CODUTE'];\n const values: any[] = [codUte];\n\n //aggiungo solo campi valorizzati\n for (const [key, cfg] of Object.entries(FILTRI_UTENTE_DB_MAPPING)) {\n const value = (dto as any)[key];\n\n //gestione campi vuoti, null o undefined\n if (value === undefined || !columns.has(cfg.dbField)) {\n continue\n }\n\n if (value === null || value === '') {\n dbFields.push(cfg.dbField);\n values.push(null);\n continue\n }\n if (cfg.numeric && typeof value !== 'number') {\n throw new Error(`Il campo ${key} deve essere un numero`);\n }\n if (!cfg.numeric && typeof value !== 'string') {\n throw new Error(`Il campo ${key} deve essere una stringa`);\n }\n dbFields.push(cfg.dbField);\n values.push(value);\n }\n\n if (dbFields.length === 1) {\n this.logger.log(`Nessun campo valido da inserire per l'utente ${codUte}`)\n return\n }\n\n let sSql = `UPDATE OR INSERT INTO FILTRI (${dbFields.join(',')}) VALUES (${values.map(() => '?').join(', ')}) MATCHING (CODUTE)`\n await Orm.execute(this.accessiOptions.databaseOptions, sSql, values)\n\n this.logger.log('Update or Insert filtri OK per CODUTE = ' + codUte)\n\n } catch (error) {\n throw new Error(`Errore durante update or insert filtri per utente ${codUte}: ${error.message}`);\n\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AccessiOptions } from "../../AccessiModule";
1
+ import type { AccessiOptions } from "../../AccessiModule";
2
2
  import { Permission } from "../../Dtos";
3
3
  import { AbilitazioneMenu } from "../../Dtos/AbilitazioneMenu";
4
4
  import { GroupWithMenusEntity } from "../../Dtos/GetGroupsWithMenusResponse";
@@ -11,15 +11,43 @@ export declare class PermissionService {
11
11
  private getAllActiveMenusAsGrants;
12
12
  private getUserDirectPermissions;
13
13
  private getUserRoles;
14
+ /**
15
+ * API legacy per salvare grant dalla struttura storica menu/gruppi.
16
+ * Sostituisce tutti i grant diretti dell'utente; per le nuove integrazioni preferire `assignPermissionsToUser`.
17
+ */
14
18
  addAbilitazioni(codiceUtente: number, menuAbilitazioni: any[]): Promise<void>;
19
+ /** Rimuove tutti i grant diretti, senza toccare ruoli o menu ereditati dai ruoli. */
15
20
  resetAbilitazioni(codiceUtente: number): Promise<void>;
21
+ /**
22
+ * Crea o aggiorna un ruolo. In aggiornamento la lista `role.menu` sostituisce integralmente i menu del ruolo.
23
+ * Validare i codici menu nel chiamante quando si usano dati non provenienti dalla console o dalle API Accessi.
24
+ */
16
25
  updateOrInsertRole(role: Role, codiceRuolo?: number | null): Promise<void>;
26
+ /** Restituisce il catalogo ruoli con ogni associazione menu e livello, inclusi ruoli senza menu. */
17
27
  getRolesWithMenus(): Promise<Role[]>;
28
+ /**
29
+ * Sostituisce l'intera lista di ruoli dell'utente con codici univoci e verificati.
30
+ * Non modifica i grant diretti: il calcolo effettivo li unisce in `getUserRolesAndGrants`.
31
+ */
18
32
  assignRolesToUser(codiceUtente: number, roles: number[]): Promise<void>;
33
+ /**
34
+ * Sostituisce tutti i grant diretti dell'utente. I ruoli rimangono invariati e i loro grant sono aggiunti
35
+ * solo nel risultato effettivo; un grant diretto dello stesso menu ha precedenza nella composizione.
36
+ */
19
37
  assignPermissionsToUser(codiceUtente: number, permissions: Permission[]): Promise<void>;
38
+ /** Elimina fisicamente ruolo, associazioni menu e assegnazioni utente. Operazione amministrativa irreversibile. */
20
39
  deleteRole(codiceRuolo: number): Promise<void>;
40
+ /** Restituisce solo menu abilitati; per il catalogo amministrativo usare `getGroupsWithMenus(true)`. */
21
41
  getMenus(): Promise<MenuEntity[]>;
42
+ /**
43
+ * Restituisce il catalogo ordinato per gruppo e menu. `includeDisabled` e riservato a console e amministrazione:
44
+ * i flussi applicativi di autorizzazione devono usare il comportamento predefinito, che nasconde voci disabilitate.
45
+ */
22
46
  getGroupsWithMenus(includeDisabled?: boolean): Promise<GroupWithMenusEntity[]>;
47
+ /**
48
+ * Calcola l'autorizzazione effettiva: grant diretti e grant dei ruoli sono uniti per codice menu.
49
+ * Per compatibilita storica un grant diretto prevale su quello del ruolo; i superutenti ricevono tutti i menu attivi.
50
+ */
23
51
  getUserRolesAndGrants(codiceUtente: number): Promise<{
24
52
  abilitazioni: AbilitazioneMenu[];
25
53
  ruoli: Role[];
@@ -95,7 +95,7 @@ let PermissionService = class PermissionService {
95
95
  SELECT
96
96
  R.CODRUO AS codice_ruolo,
97
97
  R.DESRUO AS descrizione_ruolo,
98
- RM.CODMNU AS codice_menu,
98
+ CASE WHEN COALESCE(G.FLGENABLED, 1) = 1 THEN M.CODMNU END AS codice_menu,
99
99
  RM.TIPABI AS tipo_abilitazione,
100
100
  M.DESMNU AS descrizione_menu,
101
101
  M.NOTE AS note
@@ -107,7 +107,6 @@ let PermissionService = class PermissionService {
107
107
  AND M.FLGENABLED = 1
108
108
  LEFT JOIN MENU_GRP G
109
109
  ON G.CODGRP = M.CODGRP
110
- AND COALESCE(G.FLGENABLED, 1) = 1
111
110
  WHERE RU.CODUTE = ?
112
111
  `;
113
112
  let ruoliResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);
@@ -133,6 +132,10 @@ let PermissionService = class PermissionService {
133
132
  return Array.from(ruoliMap.values());
134
133
  });
135
134
  }
135
+ /**
136
+ * API legacy per salvare grant dalla struttura storica menu/gruppi.
137
+ * Sostituisce tutti i grant diretti dell'utente; per le nuove integrazioni preferire `assignPermissionsToUser`.
138
+ */
136
139
  addAbilitazioni(codiceUtente, menuAbilitazioni) {
137
140
  return __awaiter(this, void 0, void 0, function* () {
138
141
  const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;
@@ -147,12 +150,17 @@ let PermissionService = class PermissionService {
147
150
  }
148
151
  });
149
152
  }
153
+ /** Rimuove tutti i grant diretti, senza toccare ruoli o menu ereditati dai ruoli. */
150
154
  resetAbilitazioni(codiceUtente) {
151
155
  return __awaiter(this, void 0, void 0, function* () {
152
156
  const query = "DELETE FROM ABILITAZIONI WHERE CODUTE = ?";
153
157
  yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, query, [codiceUtente]);
154
158
  });
155
159
  }
160
+ /**
161
+ * Crea o aggiorna un ruolo. In aggiornamento la lista `role.menu` sostituisce integralmente i menu del ruolo.
162
+ * Validare i codici menu nel chiamante quando si usano dati non provenienti dalla console o dalle API Accessi.
163
+ */
156
164
  updateOrInsertRole(role_1) {
157
165
  return __awaiter(this, arguments, void 0, function* (role, codiceRuolo = null) {
158
166
  var _a, _b, _c;
@@ -186,6 +194,7 @@ let PermissionService = class PermissionService {
186
194
  }
187
195
  });
188
196
  }
197
+ /** Restituisce il catalogo ruoli con ogni associazione menu e livello, inclusi ruoli senza menu. */
189
198
  getRolesWithMenus() {
190
199
  return __awaiter(this, void 0, void 0, function* () {
191
200
  const query = `
@@ -228,6 +237,10 @@ let PermissionService = class PermissionService {
228
237
  return Array.from(ruoliMap.values());
229
238
  });
230
239
  }
240
+ /**
241
+ * Sostituisce l'intera lista di ruoli dell'utente con codici univoci e verificati.
242
+ * Non modifica i grant diretti: il calcolo effettivo li unisce in `getUserRolesAndGrants`.
243
+ */
231
244
  assignRolesToUser(codiceUtente, roles) {
232
245
  return __awaiter(this, void 0, void 0, function* () {
233
246
  const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;
@@ -262,6 +275,10 @@ let PermissionService = class PermissionService {
262
275
  }
263
276
  });
264
277
  }
278
+ /**
279
+ * Sostituisce tutti i grant diretti dell'utente. I ruoli rimangono invariati e i loro grant sono aggiunti
280
+ * solo nel risultato effettivo; un grant diretto dello stesso menu ha precedenza nella composizione.
281
+ */
265
282
  assignPermissionsToUser(codiceUtente, permissions) {
266
283
  return __awaiter(this, void 0, void 0, function* () {
267
284
  const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;
@@ -303,6 +320,7 @@ let PermissionService = class PermissionService {
303
320
  }
304
321
  });
305
322
  }
323
+ /** Elimina fisicamente ruolo, associazioni menu e assegnazioni utente. Operazione amministrativa irreversibile. */
306
324
  deleteRole(codiceRuolo) {
307
325
  return __awaiter(this, void 0, void 0, function* () {
308
326
  const existsQuery = `SELECT COUNT(*) FROM RUOLI WHERE CODRUO = ?`;
@@ -318,6 +336,7 @@ let PermissionService = class PermissionService {
318
336
  yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, deleteRoleQuery, [codiceRuolo]);
319
337
  });
320
338
  }
339
+ /** Restituisce solo menu abilitati; per il catalogo amministrativo usare `getGroupsWithMenus(true)`. */
321
340
  getMenus() {
322
341
  return __awaiter(this, void 0, void 0, function* () {
323
342
  const query = `
@@ -332,13 +351,17 @@ let PermissionService = class PermissionService {
332
351
  M.NOTE AS note
333
352
  FROM MENU M
334
353
  LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
335
- WHERE M.FLGENABLED = 1
354
+ WHERE M.FLGENABLED = 1 AND COALESCE(G.FLGENABLED, 1) = 1
336
355
  ORDER BY G.CODGRP, M.CODMNU
337
356
  `;
338
357
  const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
339
358
  return result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
340
359
  });
341
360
  }
361
+ /**
362
+ * Restituisce il catalogo ordinato per gruppo e menu. `includeDisabled` e riservato a console e amministrazione:
363
+ * i flussi applicativi di autorizzazione devono usare il comportamento predefinito, che nasconde voci disabilitate.
364
+ */
342
365
  getGroupsWithMenus() {
343
366
  return __awaiter(this, arguments, void 0, function* (includeDisabled = false) {
344
367
  const filtersClause = includeDisabled
@@ -370,7 +393,7 @@ let PermissionService = class PermissionService {
370
393
  const converted = Utilities_1.RestUtilities.convertKeysToCamelCase(row);
371
394
  const _c = converted, { menuEnabled, groupEnabled } = _c, menuBase = __rest(_c, ["menuEnabled", "groupEnabled"]);
372
395
  const normalizedGroupKey = (_a = menuBase.codiceGruppo) !== null && _a !== void 0 ? _a : '__UNGROUPED__';
373
- const groupEnabledFlag = groupEnabled === undefined ? true : Number(groupEnabled) === 1 || groupEnabled === true;
396
+ const groupEnabledFlag = groupEnabled == null ? true : Number(groupEnabled) === 1 || groupEnabled === true;
374
397
  const menuEnabledFlag = menuEnabled === undefined ? true : Number(menuEnabled) === 1 || menuEnabled === true;
375
398
  if (!groupMap.has(normalizedGroupKey)) {
376
399
  groupMap.set(normalizedGroupKey, {
@@ -394,6 +417,10 @@ let PermissionService = class PermissionService {
394
417
  return groupsArray;
395
418
  });
396
419
  }
420
+ /**
421
+ * Calcola l'autorizzazione effettiva: grant diretti e grant dei ruoli sono uniti per codice menu.
422
+ * Per compatibilita storica un grant diretto prevale su quello del ruolo; i superutenti ricevono tutti i menu attivi.
423
+ */
397
424
  getUserRolesAndGrants(codiceUtente) {
398
425
  return __awaiter(this, void 0, void 0, function* () {
399
426
  const codiceUtenteQuery = "SELECT FLGSUPER as flag_super FROM UTENTI_CONFIG WHERE CODUTE = ?";
@@ -401,7 +428,8 @@ let PermissionService = class PermissionService {
401
428
  if (!result || result.length == 0)
402
429
  throw new Error("Nessun utente trovato con il codice utente " + codiceUtente);
403
430
  result = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
404
- const isSuperAdmin = result[0].flagSuper;
431
+ const rawSuperFlag = result[0].flagSuper;
432
+ const isSuperAdmin = rawSuperFlag === true || rawSuperFlag === 1 || rawSuperFlag === '1';
405
433
  const abilitazioni = yield this.getUserDirectPermissions(codiceUtente);
406
434
  const ruoli = yield this.getUserRoles(codiceUtente);
407
435
  // Merge user-specific and role-based permissions
@@ -410,10 +438,13 @@ let PermissionService = class PermissionService {
410
438
  for (const abilitazione of abilitazioni) {
411
439
  grantsMap.set(abilitazione.codiceMenu, abilitazione);
412
440
  }
413
- // Add role-based permissions if not already present
441
+ // Direct grants (including explicit denial) override roles; roles combine by maximum level.
442
+ const directMenuCodes = new Set(abilitazioni.map(grant => grant.codiceMenu));
414
443
  for (const ruolo of ruoli) {
415
444
  for (const menu of ruolo.menu) {
416
- if (!grantsMap.has(menu.codiceMenu)) {
445
+ const existing = grantsMap.get(menu.codiceMenu);
446
+ if (!directMenuCodes.has(menu.codiceMenu) &&
447
+ (!existing || Number(menu.tipoAbilitazione) > Number(existing.tipoAbilitazione))) {
417
448
  grantsMap.set(menu.codiceMenu, menu);
418
449
  }
419
450
  }