emilsoftware-utilities 2.0.0-dev.6 → 2.0.0-dev.60

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 (653) hide show
  1. package/README.MD +213 -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.d.ts +6 -0
  12. package/dist/EmilsoftwareModule.js.map +1 -1
  13. package/dist/ExecutionTimeLogger.d.ts +2 -2
  14. package/dist/ExecutionTimeLogger.js +5 -4
  15. package/dist/ExecutionTimeLogger.js.map +1 -1
  16. package/dist/Logger.d.ts +22 -11
  17. package/dist/Logger.js +132 -119
  18. package/dist/Logger.js.map +1 -1
  19. package/dist/Orm.d.ts +32 -12
  20. package/dist/Orm.js +194 -153
  21. package/dist/Orm.js.map +1 -1
  22. package/dist/RoutesLoggerMiddleware.js.map +1 -1
  23. package/dist/Utilities.d.ts +18 -8
  24. package/dist/Utilities.js +143 -38
  25. package/dist/Utilities.js.map +1 -1
  26. package/dist/accessi-module/AccessiModule.d.ts +116 -1
  27. package/dist/accessi-module/AccessiModule.js +38 -5
  28. package/dist/accessi-module/AccessiModule.js.map +1 -1
  29. package/dist/accessi-module/Console/accessiFetch.d.ts +16 -0
  30. package/dist/accessi-module/Console/accessiFetch.js +87 -0
  31. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  32. package/dist/accessi-module/Console/console.css +774 -0
  33. package/dist/accessi-module/Console/console.d.ts +1 -0
  34. package/dist/accessi-module/Console/console.js +3815 -0
  35. package/dist/accessi-module/Console/console.js.map +1 -0
  36. package/dist/accessi-module/Console/generated/accessiApi.d.ts +648 -0
  37. package/dist/accessi-module/Console/generated/accessiApi.js +597 -0
  38. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  39. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
  40. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  41. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  42. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  43. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  44. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  45. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  46. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  47. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  48. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.d.ts +14 -0
  49. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js +3 -0
  50. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js.map +1 -0
  51. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.d.ts +10 -0
  52. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js +9 -0
  53. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js.map +1 -0
  54. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  55. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  56. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  57. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  58. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  59. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  60. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  61. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  62. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  63. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  64. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  65. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  66. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.d.ts +17 -0
  67. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js +9 -0
  68. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +1 -0
  69. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.d.ts +14 -0
  70. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js +3 -0
  71. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +1 -0
  72. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.d.ts +13 -0
  73. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js +9 -0
  74. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  75. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  76. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  77. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  78. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.d.ts +10 -0
  79. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js +9 -0
  80. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js.map +1 -0
  81. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.d.ts +14 -0
  82. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js +3 -0
  83. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js.map +1 -0
  84. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.d.ts +10 -0
  85. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js +3 -0
  86. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js.map +1 -0
  87. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.d.ts +14 -0
  88. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js +3 -0
  89. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js.map +1 -0
  90. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.d.ts +12 -0
  91. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js +9 -0
  92. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js.map +1 -0
  93. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.d.ts +12 -0
  94. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js +9 -0
  95. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js.map +1 -0
  96. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  97. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  98. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  99. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  100. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  101. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  102. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  103. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  104. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  105. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
  106. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
  107. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
  108. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
  109. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
  110. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  111. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +22 -0
  112. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
  113. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
  114. package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
  115. package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
  116. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
  118. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
  119. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
  121. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
  122. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
  124. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
  125. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  127. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  128. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  130. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  131. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  134. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  136. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  137. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  139. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  140. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  142. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  143. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  145. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  146. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  148. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  151. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  152. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  154. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  155. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  157. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  158. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  160. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  161. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  163. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  164. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
  166. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  169. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  172. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  173. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/getSchemaResponse.d.ts +14 -0
  175. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js +3 -0
  176. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
  178. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
  181. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
  182. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  184. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  185. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  187. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  188. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
  190. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  191. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  193. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  194. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  196. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  197. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  199. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  200. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  202. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  203. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/index.d.ts +111 -0
  205. package/dist/accessi-module/Console/generated/model/index.js +128 -0
  206. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
  208. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
  209. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/loginAsRequest.d.ts +10 -0
  211. package/dist/accessi-module/Console/generated/model/loginAsRequest.js +9 -0
  212. package/dist/accessi-module/Console/generated/model/loginAsRequest.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/loginAsResponse.d.ts +14 -0
  214. package/dist/accessi-module/Console/generated/model/loginAsResponse.js +3 -0
  215. package/dist/accessi-module/Console/generated/model/loginAsResponse.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/loginAsResult.d.ts +16 -0
  217. package/dist/accessi-module/Console/generated/model/loginAsResult.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/loginAsResult.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  220. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  221. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  223. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  226. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  227. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  229. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  230. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  232. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  233. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  235. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  236. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  237. package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
  238. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
  239. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
  240. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  241. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  242. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  243. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  244. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  245. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  246. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  247. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  248. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  249. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  250. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  251. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  252. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  253. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  254. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  255. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  256. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  257. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  258. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  259. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  260. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  261. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  262. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  263. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  264. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  265. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  266. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  267. package/dist/accessi-module/Console/generated/model/schemaDdlResult.d.ts +20 -0
  268. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js +3 -0
  269. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +1 -0
  270. package/dist/accessi-module/Console/generated/model/schemaDdlSection.d.ts +12 -0
  271. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js +9 -0
  272. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +1 -0
  273. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  274. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  275. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  276. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  277. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  278. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  279. package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
  280. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
  281. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
  282. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  283. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  284. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  285. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  286. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  287. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  288. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  289. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  290. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  291. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.d.ts +14 -0
  292. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js +9 -0
  293. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js.map +1 -0
  294. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  295. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  296. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  297. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  298. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  299. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  300. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  301. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  302. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  303. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  304. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  305. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  306. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  307. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  308. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  309. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  310. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  311. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  312. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  313. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  314. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  315. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  316. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  317. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  318. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  319. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  320. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  321. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  322. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  323. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  324. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  325. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  326. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  327. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
  328. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
  329. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
  330. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
  331. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
  332. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  333. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +17 -0
  334. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
  335. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
  336. package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
  337. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
  338. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
  339. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
  340. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
  341. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
  342. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  343. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  344. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  345. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  346. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  347. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  348. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  349. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  350. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  351. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  352. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  353. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  354. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  355. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  356. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  357. package/dist/accessi-module/Console/help.d.ts +13 -0
  358. package/dist/accessi-module/Console/help.js +417 -0
  359. package/dist/accessi-module/Console/help.js.map +1 -0
  360. package/dist/accessi-module/Console/index.html +140 -0
  361. package/dist/accessi-module/Console/wiki.d.ts +52 -0
  362. package/dist/accessi-module/Console/wiki.js +740 -0
  363. package/dist/accessi-module/Console/wiki.js.map +1 -0
  364. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +18 -0
  365. package/dist/accessi-module/Controllers/AccessiConsoleController.js +111 -0
  366. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  367. package/dist/accessi-module/Controllers/AuthController.d.ts +13 -6
  368. package/dist/accessi-module/Controllers/AuthController.js +185 -82
  369. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  370. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -5
  371. package/dist/accessi-module/Controllers/ConfiguratorController.js +26 -44
  372. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  373. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +14 -0
  374. package/dist/accessi-module/Controllers/ConsoleEntryController.js +128 -0
  375. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +1 -0
  376. package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
  377. package/dist/accessi-module/Controllers/EmailController.js +12 -14
  378. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  379. package/dist/accessi-module/Controllers/FiltriController.d.ts +12 -4
  380. package/dist/accessi-module/Controllers/FiltriController.js +153 -6
  381. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  382. package/dist/accessi-module/Controllers/PermissionController.d.ts +20 -2
  383. package/dist/accessi-module/Controllers/PermissionController.js +351 -54
  384. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  385. package/dist/accessi-module/Controllers/SchemaController.d.ts +9 -0
  386. package/dist/accessi-module/Controllers/SchemaController.js +79 -0
  387. package/dist/accessi-module/Controllers/SchemaController.js.map +1 -0
  388. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
  389. package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
  390. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
  391. package/dist/accessi-module/Controllers/UserController.d.ts +22 -5
  392. package/dist/accessi-module/Controllers/UserController.js +384 -32
  393. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  394. package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
  395. package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
  396. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
  397. package/dist/accessi-module/Dtos/AdminBootstrapDtos.d.ts +26 -0
  398. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js +100 -0
  399. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +1 -0
  400. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
  401. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
  402. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
  403. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  404. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
  405. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
  406. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  407. package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
  408. package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
  409. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  410. package/dist/accessi-module/Dtos/CatalogDtos.d.ts +64 -0
  411. package/dist/accessi-module/Dtos/CatalogDtos.js +322 -0
  412. package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
  413. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
  414. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
  415. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
  416. package/dist/accessi-module/Dtos/ConsoleEntryDtos.d.ts +24 -0
  417. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js +77 -0
  418. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js.map +1 -0
  419. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  420. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  421. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  422. package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
  423. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  424. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  425. package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
  426. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  427. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
  428. package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
  429. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +26 -0
  430. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
  431. package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
  432. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
  433. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
  434. package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
  435. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
  436. package/dist/accessi-module/Dtos/LoginAsDtos.d.ts +15 -0
  437. package/dist/accessi-module/Dtos/LoginAsDtos.js +68 -0
  438. package/dist/accessi-module/Dtos/LoginAsDtos.js.map +1 -0
  439. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  440. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  441. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  442. package/dist/accessi-module/Dtos/LoginResponse.d.ts +6 -2
  443. package/dist/accessi-module/Dtos/LoginResponse.js +20 -7
  444. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  445. package/dist/accessi-module/Dtos/MenuItem.js +1 -0
  446. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  447. package/dist/accessi-module/Dtos/Permission.js +1 -0
  448. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  449. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
  450. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
  451. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
  452. package/dist/accessi-module/Dtos/RegisterRequest.d.ts +2 -4
  453. package/dist/accessi-module/Dtos/RegisterRequest.js +17 -27
  454. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  455. package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
  456. package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
  457. package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
  458. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  459. package/dist/accessi-module/Dtos/Role.js +4 -0
  460. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  461. package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
  462. package/dist/accessi-module/Dtos/SchemaDtos.d.ts +19 -0
  463. package/dist/accessi-module/Dtos/SchemaDtos.js +84 -0
  464. package/dist/accessi-module/Dtos/SchemaDtos.js.map +1 -0
  465. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
  466. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
  467. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
  468. package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
  469. package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
  470. package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
  471. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
  472. package/dist/accessi-module/Dtos/SetUserPasswordRequest.d.ts +4 -0
  473. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js +32 -0
  474. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js.map +1 -0
  475. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
  476. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  477. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  478. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  479. package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
  480. package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
  481. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  482. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  483. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  484. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
  485. package/dist/accessi-module/Dtos/UserDto.d.ts +9 -4
  486. package/dist/accessi-module/Dtos/UserDto.js +37 -22
  487. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  488. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
  489. package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
  490. package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
  491. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
  492. package/dist/accessi-module/Dtos/index.d.ts +14 -0
  493. package/dist/accessi-module/Dtos/index.js +14 -0
  494. package/dist/accessi-module/Dtos/index.js.map +1 -1
  495. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +33 -0
  496. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +106 -0
  497. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +1 -0
  498. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +61 -5
  499. package/dist/accessi-module/Services/AuthService/AuthService.js +227 -50
  500. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  501. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  502. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  503. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  504. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
  505. package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
  506. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  507. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
  508. package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
  509. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  510. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +81 -2
  511. package/dist/accessi-module/Services/PermissionService/PermissionService.js +626 -206
  512. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  513. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.d.ts +36 -0
  514. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js +125 -0
  515. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +1 -0
  516. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
  517. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
  518. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
  519. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  520. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
  521. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  522. package/dist/accessi-module/Services/UserService/UserService.d.ts +66 -5
  523. package/dist/accessi-module/Services/UserService/UserService.js +520 -335
  524. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  525. package/dist/accessi-module/Views/reset-password.html +229 -213
  526. package/dist/accessi-module/accessiRuntime.d.ts +45 -0
  527. package/dist/accessi-module/accessiRuntime.js +39 -0
  528. package/dist/accessi-module/accessiRuntime.js.map +1 -0
  529. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.d.ts +83 -0
  530. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js +360 -0
  531. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +1 -0
  532. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +58 -10
  533. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +506 -179
  534. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  535. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.d.ts +5 -0
  536. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +79 -0
  537. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -0
  538. package/dist/accessi-module/database-updates/accessiSchema.d.ts +67 -0
  539. package/dist/accessi-module/database-updates/accessiSchema.js +124 -0
  540. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  541. package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
  542. package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
  543. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  544. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.d.ts +1 -0
  545. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js +69 -0
  546. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  547. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +15 -53
  548. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  549. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +33 -0
  550. package/dist/accessi-module/federated-auth/FederatedAuthController.js +373 -0
  551. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  552. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +102 -0
  553. package/dist/accessi-module/federated-auth/FederatedAuthService.js +461 -0
  554. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  555. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  556. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  557. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  558. package/dist/accessi-module/index.d.ts +30 -0
  559. package/dist/accessi-module/index.js +93 -20
  560. package/dist/accessi-module/index.js.map +1 -1
  561. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  562. package/dist/accessi-module/jwt/jwt.strategy.js +16 -7
  563. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  564. package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
  565. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  566. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  567. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  568. package/dist/accessi-module/middleware/authenticateGen.js +63 -25
  569. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  570. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  571. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +77 -0
  572. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  573. package/dist/accessi-module/security/accessControl.d.ts +48 -2
  574. package/dist/accessi-module/security/accessControl.js +84 -8
  575. package/dist/accessi-module/security/accessControl.js.map +1 -1
  576. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  577. package/dist/accessi-module/security/accessiValidation.js +41 -0
  578. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  579. package/dist/accessi-module/security/adminBootstrap.d.ts +8 -0
  580. package/dist/accessi-module/security/adminBootstrap.js +41 -0
  581. package/dist/accessi-module/security/adminBootstrap.js.map +1 -0
  582. package/dist/accessi-module/security/authenticatedToken.d.ts +22 -2
  583. package/dist/accessi-module/security/authenticatedToken.js +44 -4
  584. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  585. package/dist/accessi-module/security/consoleEntry.d.ts +16 -0
  586. package/dist/accessi-module/security/consoleEntry.js +50 -0
  587. package/dist/accessi-module/security/consoleEntry.js.map +1 -0
  588. package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
  589. package/dist/accessi-module/security/emailConfiguration.js +41 -0
  590. package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
  591. package/dist/accessi-module/security/loginAs.d.ts +8 -0
  592. package/dist/accessi-module/security/loginAs.js +45 -0
  593. package/dist/accessi-module/security/loginAs.js.map +1 -0
  594. package/dist/accessi-module/security/passwordPolicy.d.ts +21 -0
  595. package/dist/accessi-module/security/passwordPolicy.js +71 -0
  596. package/dist/accessi-module/security/passwordPolicy.js.map +1 -0
  597. package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
  598. package/dist/accessi-module/security/passwordResetToken.js +13 -5
  599. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  600. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +3 -3
  601. package/dist/accessi-module/security/publicAuthRateLimit.js +32 -8
  602. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  603. package/dist/accessi-module/security/serviceTokenGuard.d.ts +25 -0
  604. package/dist/accessi-module/security/serviceTokenGuard.js +85 -0
  605. package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
  606. package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +8 -0
  607. package/dist/accessi-module/security/serviceTokenRateLimit.js +49 -0
  608. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
  609. package/dist/accessi-module/startupLog.d.ts +6 -0
  610. package/dist/accessi-module/startupLog.js +25 -0
  611. package/dist/accessi-module/startupLog.js.map +1 -0
  612. package/dist/allegati-module/AllegatiModule.d.ts +12 -1
  613. package/dist/allegati-module/AllegatiModule.js +11 -1
  614. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  615. package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
  616. package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
  617. package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
  618. package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
  619. package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
  620. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
  621. package/dist/allegati-module/Dtos/index.js.map +1 -1
  622. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
  623. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
  624. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
  625. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
  626. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
  627. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
  628. package/dist/allegati-module/index.js.map +1 -1
  629. package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
  630. package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
  631. package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
  632. package/dist/autobind.d.ts +10 -3
  633. package/dist/autobind.js +24 -9
  634. package/dist/autobind.js.map +1 -1
  635. package/dist/emilsoftware-utilities-2.0.0-dev.60.tgz +0 -0
  636. package/dist/firebird-compat.d.ts +27 -6
  637. package/dist/firebird-compat.js +150 -140
  638. package/dist/firebird-compat.js.map +1 -1
  639. package/dist/index.d.ts +2 -2
  640. package/dist/index.js +2 -2
  641. package/dist/index.js.map +1 -1
  642. package/dist/initEmilsoftwareModule.js +35 -9
  643. package/dist/initEmilsoftwareModule.js.map +1 -1
  644. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  645. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  646. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  647. package/dist/scripts/generateAccessiWiki.d.ts +1 -0
  648. package/dist/scripts/generateAccessiWiki.js +131 -0
  649. package/dist/scripts/generateAccessiWiki.js.map +1 -0
  650. package/dist/swagger/SwaggerConfig.d.ts +7 -1
  651. package/dist/swagger/SwaggerConfig.js +23 -8
  652. package/dist/swagger/SwaggerConfig.js.map +1 -1
  653. package/package.json +110 -83
@@ -41,205 +41,420 @@ let PermissionService = class PermissionService {
41
41
  constructor(accessiOptions) {
42
42
  this.accessiOptions = accessiOptions;
43
43
  }
44
+ getCountFromResult(result, fieldName = 'COUNT') {
45
+ var _a, _b, _c, _d, _e;
46
+ const rawValue = (_d = (_b = (_a = result === null || result === void 0 ? void 0 : result[0]) === null || _a === void 0 ? void 0 : _a[fieldName]) !== null && _b !== void 0 ? _b : (_c = result === null || result === void 0 ? void 0 : result[0]) === null || _c === void 0 ? void 0 : _c[fieldName.toLowerCase()]) !== null && _d !== void 0 ? _d : (_e = result === null || result === void 0 ? void 0 : result[0]) === null || _e === void 0 ? void 0 : _e.count;
47
+ return typeof rawValue === 'number' ? rawValue : Number.parseInt(`${rawValue !== null && rawValue !== void 0 ? rawValue : '0'}`, 10);
48
+ }
49
+ extractIntegerColumn(result, fieldName) {
50
+ return new Set(result.map((row) => { var _a; return Number((_a = row[fieldName]) !== null && _a !== void 0 ? _a : row[fieldName.toLowerCase()]); }));
51
+ }
52
+ getAllActiveMenusAsGrants() {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ const query = `
55
+ SELECT
56
+ M.CODMNU AS codice_menu,
57
+ 30 AS tipo_abilitazione,
58
+ M.DESMNU AS descrizione_menu,
59
+ G.DESGRP AS descrizione_gruppo,
60
+ G.CODGRP AS codice_gruppo,
61
+ M.ICON AS icona,
62
+ M.CODTIP AS tipo,
63
+ M.PAGINA AS pagina,
64
+ M.NOTE AS note
65
+ FROM MENU M
66
+ LEFT JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
67
+ WHERE M.FLGENABLED = 1 AND COALESCE(G.FLGENABLED, 1) = 1
68
+ `;
69
+ return yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [])
70
+ .then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase));
71
+ });
72
+ }
73
+ getUserDirectPermissions(codiceUtente) {
74
+ return __awaiter(this, void 0, void 0, function* () {
75
+ const queryAbilitazioni = `
76
+ SELECT
77
+ A.CODMNU AS codice_menu,
78
+ A.TIPABI AS tipo_abilitazione,
79
+ M.DESMNU AS descrizione_menu,
80
+ G.DESGRP AS descrizione_gruppo,
81
+ G.CODGRP AS codice_gruppo,
82
+ M.ICON AS icona,
83
+ M.CODTIP AS tipo,
84
+ M.PAGINA AS pagina,
85
+ M.NOTE AS note
86
+ FROM ABILITAZIONI A
87
+ INNER JOIN MENU M ON A.CODMNU = M.CODMNU
88
+ LEFT JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
89
+ WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND COALESCE(G.FLGENABLED, 1) = 1
90
+ `;
91
+ return yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])
92
+ .then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase));
93
+ });
94
+ }
95
+ getUserRoles(codiceUtente) {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ const queryRuoli = `
98
+ SELECT
99
+ R.CODRUO AS codice_ruolo,
100
+ R.DESRUO AS descrizione_ruolo,
101
+ CASE WHEN COALESCE(G.FLGENABLED, 1) = 1 THEN M.CODMNU END AS codice_menu,
102
+ RM.TIPABI AS tipo_abilitazione,
103
+ M.DESMNU AS descrizione_menu,
104
+ M.NOTE AS note
105
+ FROM UTENTI_RUOLI RU
106
+ INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO
107
+ LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
108
+ LEFT JOIN MENU M
109
+ ON RM.CODMNU = M.CODMNU
110
+ AND M.FLGENABLED = 1
111
+ LEFT JOIN MENU_GRP G
112
+ ON G.CODGRP = M.CODGRP
113
+ WHERE RU.CODUTE = ?
114
+ `;
115
+ const ruoliResult = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]))
116
+ .map(Utilities_1.RestUtilities.convertKeysToCamelCase);
117
+ return this.assembleRoles(ruoliResult);
118
+ });
119
+ }
120
+ /** Costruisce l'albero ruoli/menu a partire dalle righe (riusato da lettura singola e batch). */
121
+ assembleRoles(ruoliResult) {
122
+ const ruoliMap = new Map();
123
+ for (const row of ruoliResult) {
124
+ const codiceRuolo = Number(row.codiceRuolo);
125
+ const descrizioneRuolo = typeof row.descrizioneRuolo === 'string' ? row.descrizioneRuolo.trim() : '';
126
+ const codiceMenu = typeof row.codiceMenu === 'string' ? row.codiceMenu : undefined;
127
+ // RUOLI_MNU.TIPABI e MENU.DESMNU sono nullable nello schema storico: un livello
128
+ // mancante non deve far sparire il menu dal ruolo. Default prudente: lettura.
129
+ const rawTipoAbilitazione = row.tipoAbilitazione;
130
+ const parsedTipoAbilitazione = rawTipoAbilitazione === undefined || rawTipoAbilitazione === null || rawTipoAbilitazione === ''
131
+ ? Dtos_1.TipoAbilitazione.LETTURA
132
+ : Number(rawTipoAbilitazione);
133
+ const tipoAbilitazione = (Number.isFinite(parsedTipoAbilitazione)
134
+ ? parsedTipoAbilitazione
135
+ : Dtos_1.TipoAbilitazione.LETTURA);
136
+ if (!ruoliMap.has(codiceRuolo)) {
137
+ ruoliMap.set(codiceRuolo, {
138
+ codiceRuolo,
139
+ descrizioneRuolo,
140
+ menu: []
141
+ });
142
+ }
143
+ if (codiceMenu) {
144
+ ruoliMap.get(codiceRuolo).menu.push({
145
+ codiceRuolo,
146
+ codiceMenu,
147
+ tipoAbilitazione,
148
+ });
149
+ }
150
+ }
151
+ return Array.from(ruoliMap.values());
152
+ }
153
+ /**
154
+ * Compone i grant effettivi: permessi diretti e ruoli si sommano per codice menu
155
+ * prendendo il livello massimo. Un livello 0/non valido non rimuove un grant del ruolo.
156
+ * I superutenti ricevono tutti i menu attivi al livello massimo.
157
+ */
158
+ composeGrants(abilitazioni, ruoli, isSuperAdmin, allActiveMenus) {
159
+ if (isSuperAdmin)
160
+ return allActiveMenus;
161
+ const catalog = new Map(allActiveMenus.map((menu) => [menu.codiceMenu, menu]));
162
+ const grantsMap = new Map();
163
+ const addGrant = (grant) => {
164
+ var _a, _b;
165
+ const codiceMenu = typeof grant.codiceMenu === 'string' ? grant.codiceMenu.trim() : '';
166
+ const livello = Number((_a = grant.tipoAbilitazione) !== null && _a !== void 0 ? _a : 0);
167
+ if (!codiceMenu || !Number.isFinite(livello) || livello <= 0)
168
+ return;
169
+ const existing = grantsMap.get(codiceMenu);
170
+ if (!existing || livello > Number((_b = existing.tipoAbilitazione) !== null && _b !== void 0 ? _b : 0)) {
171
+ // I ruoli salvano solo codice e livello: completa i metadati di navigazione
172
+ // (pagina, icona, gruppo, tipo) dal catalogo dei menu attivi.
173
+ const metadata = catalog.get(codiceMenu);
174
+ grantsMap.set(codiceMenu, Object.assign(Object.assign(Object.assign({}, (metadata !== null && metadata !== void 0 ? metadata : {})), grant), { codiceMenu, tipoAbilitazione: livello }));
175
+ }
176
+ };
177
+ for (const abilitazione of abilitazioni)
178
+ addGrant(abilitazione);
179
+ for (const ruolo of ruoli) {
180
+ for (const menu of ruolo.menu)
181
+ addGrant(menu);
182
+ }
183
+ return Array.from(grantsMap.values());
184
+ }
185
+ /**
186
+ * API legacy per salvare grant dalla struttura storica menu/gruppi.
187
+ * Sostituisce tutti i grant diretti dell'utente; per le nuove integrazioni preferire `assignPermissionsToUser`.
188
+ */
44
189
  addAbilitazioni(codiceUtente, menuAbilitazioni) {
45
190
  return __awaiter(this, void 0, void 0, function* () {
46
- const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;
47
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);
48
191
  const abilitazioniToInsert = menuAbilitazioni
49
- .flatMap(menuGrp => menuGrp.menu)
192
+ .flatMap(menuGrp => { var _a; return (_a = menuGrp.menu) !== null && _a !== void 0 ? _a : []; })
50
193
  .filter(menu => menu.flgChk)
51
194
  .map(menu => [codiceUtente, menu.codiceMenu, menu.tipoAbilitazione]);
52
195
  const insertQuery = `UPDATE OR INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;
53
- for (const params of abilitazioniToInsert) {
54
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, insertQuery, params);
55
- }
196
+ // Delete + insert atomici: un errore a metà non lascia l'utente senza abilitazioni.
197
+ yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, [
198
+ { query: `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`, params: [codiceUtente] },
199
+ ...abilitazioniToInsert.map(params => ({ query: insertQuery, params })),
200
+ ]);
56
201
  });
57
202
  }
203
+ /** Rimuove tutti i grant diretti, senza toccare ruoli o menu ereditati dai ruoli. */
58
204
  resetAbilitazioni(codiceUtente) {
59
205
  return __awaiter(this, void 0, void 0, function* () {
60
206
  const query = "DELETE FROM ABILITAZIONI WHERE CODUTE = ?";
61
207
  yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, query, [codiceUtente]);
62
208
  });
63
209
  }
210
+ /**
211
+ * Crea o aggiorna un ruolo. In aggiornamento la lista `role.menu` sostituisce integralmente i menu del ruolo.
212
+ * Validare i codici menu nel chiamante quando si usano dati non provenienti dalla console o dalle API Accessi.
213
+ */
64
214
  updateOrInsertRole(role_1) {
65
215
  return __awaiter(this, arguments, void 0, function* (role, codiceRuolo = null) {
66
- var _a, _b, _c;
67
- // creazione nuovo ruolo
68
- if (codiceRuolo == null) {
69
- const createRoleQuery = `INSERT INTO RUOLI (DESRUO) VALUES (?)`;
70
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, createRoleQuery, [role.descrizioneRuolo]);
71
- const createdRoleResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, 'SELECT FIRST 1 CODRUO FROM RUOLI WHERE DESRUO = ? ORDER BY CODRUO DESC', [role.descrizioneRuolo]);
72
- const rawCodiceRuolo = (_b = (_a = createdRoleResult === null || createdRoleResult === void 0 ? void 0 : createdRoleResult[0]) === null || _a === void 0 ? void 0 : _a.CODRUO) !== null && _b !== void 0 ? _b : (_c = createdRoleResult === null || createdRoleResult === void 0 ? void 0 : createdRoleResult[0]) === null || _c === void 0 ? void 0 : _c.codruo;
73
- const parsedCodiceRuolo = typeof rawCodiceRuolo === 'number'
74
- ? rawCodiceRuolo
75
- : Number.parseInt(`${rawCodiceRuolo !== null && rawCodiceRuolo !== void 0 ? rawCodiceRuolo : ''}`, 10);
76
- if (Number.isNaN(parsedCodiceRuolo)) {
77
- throw new Error('Creazione ruolo non riuscita: impossibile recuperare CODRUO.');
216
+ // Ruolo, sostituzione menu e inserimenti in un'unica transazione: niente ruoli senza menu in caso di errore.
217
+ yield Orm_1.Orm.withTransaction(this.accessiOptions.databaseOptions, (transaction) => __awaiter(this, void 0, void 0, function* () {
218
+ var _a;
219
+ let resolvedCodiceRuolo = codiceRuolo;
220
+ if (resolvedCodiceRuolo == null) {
221
+ const createdRoleResult = yield Orm_1.Orm.transactionQuery(transaction, `INSERT INTO RUOLI (DESRUO) VALUES (?) RETURNING CODRUO`, [role.descrizioneRuolo]);
222
+ const createdRole = (Array.isArray(createdRoleResult) ? createdRoleResult[0] : createdRoleResult);
223
+ const rawCodiceRuolo = (_a = createdRole === null || createdRole === void 0 ? void 0 : createdRole.CODRUO) !== null && _a !== void 0 ? _a : createdRole === null || createdRole === void 0 ? void 0 : createdRole.codruo;
224
+ const parsedCodiceRuolo = typeof rawCodiceRuolo === 'number'
225
+ ? rawCodiceRuolo
226
+ : Number.parseInt(`${rawCodiceRuolo !== null && rawCodiceRuolo !== void 0 ? rawCodiceRuolo : ''}`, 10);
227
+ if (Number.isNaN(parsedCodiceRuolo)) {
228
+ throw new Error('Creazione ruolo non riuscita: impossibile recuperare CODRUO.');
229
+ }
230
+ resolvedCodiceRuolo = parsedCodiceRuolo;
78
231
  }
79
- codiceRuolo = parsedCodiceRuolo;
80
- }
81
- else
82
- // aggiornamento ruolo esistente
83
- {
84
- let updateRoleQuery = `UPDATE RUOLI SET DESRUO = ? WHERE CODRUO = ?`;
85
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, updateRoleQuery, [role.descrizioneRuolo, codiceRuolo]);
86
- let deleteRoleMenuQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;
87
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenuQuery, [codiceRuolo]);
88
- }
89
- if (codiceRuolo === null) {
90
- throw new Error('Operazione ruolo non riuscita: codice ruolo non valorizzato.');
91
- }
92
- let createRoleMenuQuery = `INSERT INTO RUOLI_MNU (CODRUO, CODMNU, TIPABI) VALUES (?, ?, ?)`;
93
- for (let menu of role.menu) {
94
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, createRoleMenuQuery, [codiceRuolo, menu.codiceMenu, menu.tipoAbilitazione]);
95
- }
232
+ else {
233
+ yield Orm_1.Orm.transactionQuery(transaction, `UPDATE RUOLI SET DESRUO = ? WHERE CODRUO = ?`, [role.descrizioneRuolo, resolvedCodiceRuolo]);
234
+ yield Orm_1.Orm.transactionQuery(transaction, `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`, [resolvedCodiceRuolo]);
235
+ }
236
+ if (resolvedCodiceRuolo === null) {
237
+ throw new Error('Operazione ruolo non riuscita: codice ruolo non valorizzato.');
238
+ }
239
+ for (const menu of role.menu) {
240
+ yield Orm_1.Orm.transactionQuery(transaction, `INSERT INTO RUOLI_MNU (CODRUO, CODMNU, TIPABI) VALUES (?, ?, ?)`, [resolvedCodiceRuolo, menu.codiceMenu, menu.tipoAbilitazione]);
241
+ }
242
+ }));
96
243
  });
97
244
  }
245
+ /** Restituisce il catalogo ruoli con ogni associazione menu e livello, inclusi ruoli senza menu. */
98
246
  getRolesWithMenus() {
99
247
  return __awaiter(this, void 0, void 0, function* () {
100
- const query = `
101
- SELECT
102
- R.CODRUO AS codice_ruolo,
103
- R.DESRUO AS descrizione_ruolo,
104
- M.CODMNU AS codice_menu,
105
- M.DESMNU AS descrizione_menu,
106
- M.NOTE AS note,
107
- RM.TIPABI AS tipo_abilitazione
108
- FROM RUOLI R
109
- LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
110
- LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU
111
- ORDER BY R.CODRUO, M.CODMNU
248
+ const query = `
249
+ SELECT
250
+ R.CODRUO AS codice_ruolo,
251
+ R.DESRUO AS descrizione_ruolo,
252
+ M.CODMNU AS codice_menu,
253
+ M.DESMNU AS descrizione_menu,
254
+ M.NOTE AS note,
255
+ RM.TIPABI AS tipo_abilitazione
256
+ FROM RUOLI R
257
+ LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
258
+ LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU
259
+ ORDER BY R.CODRUO, M.CODMNU
112
260
  `;
113
- let result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
114
- result = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
261
+ const result = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []))
262
+ .map(Utilities_1.RestUtilities.convertKeysToCamelCase);
115
263
  const ruoliMap = new Map();
116
264
  for (const row of result) {
117
- const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;
265
+ const codiceRuolo = Number(row.codiceRuolo);
266
+ const descrizioneRuolo = typeof row.descrizioneRuolo === 'string' ? row.descrizioneRuolo.trim() : '';
267
+ const codiceMenu = typeof row.codiceMenu === 'string' ? row.codiceMenu : undefined;
268
+ const rawTipoAbilitazione = row.tipoAbilitazione;
118
269
  if (!ruoliMap.has(codiceRuolo)) {
119
270
  ruoliMap.set(codiceRuolo, {
120
271
  codiceRuolo,
121
- descrizioneRuolo: descrizioneRuolo === null || descrizioneRuolo === void 0 ? void 0 : descrizioneRuolo.trim(),
272
+ descrizioneRuolo,
122
273
  menu: []
123
274
  });
124
275
  }
125
- const abilitationValue = typeof tipoAbilitazione === 'number'
126
- ? tipoAbilitazione
127
- : Number.parseInt(`${tipoAbilitazione !== null && tipoAbilitazione !== void 0 ? tipoAbilitazione : ''}`, 10);
276
+ const abilitationValue = typeof rawTipoAbilitazione === 'number'
277
+ ? rawTipoAbilitazione
278
+ : Number.parseInt(`${rawTipoAbilitazione !== null && rawTipoAbilitazione !== void 0 ? rawTipoAbilitazione : ''}`, 10);
128
279
  if (!codiceMenu || Number.isNaN(abilitationValue) || abilitationValue <= Dtos_1.TipoAbilitazione.NESSUNA) {
129
280
  continue;
130
281
  }
131
282
  ruoliMap.get(codiceRuolo).menu.push({
132
- codiceRuolo: codiceRuolo,
133
- codiceMenu: codiceMenu.trim(),
283
+ codiceRuolo,
284
+ codiceMenu,
134
285
  tipoAbilitazione: abilitationValue,
135
286
  });
136
287
  }
137
288
  return Array.from(ruoliMap.values());
138
289
  });
139
290
  }
291
+ /**
292
+ * Sostituisce l'intera lista di ruoli dell'utente con codici univoci e verificati.
293
+ * Non modifica i grant diretti: il calcolo effettivo li unisce in `getUserRolesAndGrants`.
294
+ */
140
295
  assignRolesToUser(codiceUtente, roles) {
141
296
  return __awaiter(this, void 0, void 0, function* () {
142
297
  const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;
143
298
  let result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);
144
- if (result[0].COUNT === 0) {
299
+ if (this.getCountFromResult(result) === 0) {
145
300
  throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);
146
301
  }
147
- const deleteQuery = `DELETE FROM UTENTI_RUOLI WHERE CODUTE = ?`;
148
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);
149
- const insertQuery = `INSERT INTO UTENTI_RUOLI (CODUTE, CODRUO) VALUES (?, ?)`;
150
- for (const codiceRuolo of roles) {
151
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, codiceRuolo]);
302
+ const normalizedRoles = Array.from(new Set(roles
303
+ .map((role) => Number.parseInt(`${role !== null && role !== void 0 ? role : ''}`, 10))
304
+ .filter((role) => Number.isInteger(role) && role > 0)));
305
+ const queriesWithParams = [
306
+ { query: `DELETE FROM UTENTI_RUOLI WHERE CODUTE = ?`, params: [codiceUtente] },
307
+ ...normalizedRoles.map((codiceRuolo) => ({
308
+ query: `INSERT INTO UTENTI_RUOLI (CODUTE, CODRUO) VALUES (?, ?)`,
309
+ params: [codiceUtente, codiceRuolo],
310
+ })),
311
+ ];
312
+ if (normalizedRoles.length > 0) {
313
+ // Un'unica query IN invece di N count: stessa validazione, meno round-trip.
314
+ const placeholders = normalizedRoles.map(() => '?').join(', ');
315
+ const existingRolesResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT CODRUO FROM RUOLI WHERE CODRUO IN (${placeholders})`, normalizedRoles);
316
+ const existingRoles = this.extractIntegerColumn(existingRolesResult, 'CODRUO');
317
+ const missingRole = normalizedRoles.find((codiceRuolo) => !existingRoles.has(codiceRuolo));
318
+ if (missingRole !== undefined) {
319
+ throw new Error(`Il ruolo con codice ${missingRole} non esiste.`);
320
+ }
321
+ }
322
+ yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, queriesWithParams);
323
+ const assignedRolesResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT COUNT(*) FROM UTENTI_RUOLI WHERE CODUTE = ?`, [codiceUtente]);
324
+ const assignedRolesCount = this.getCountFromResult(assignedRolesResult);
325
+ if (assignedRolesCount !== normalizedRoles.length) {
326
+ throw new Error(`Persistenza ruoli non coerente per utente ${codiceUtente}: attesi ${normalizedRoles.length}, trovati ${assignedRolesCount}.`);
152
327
  }
153
328
  });
154
329
  }
330
+ /**
331
+ * Sostituisce tutti i grant diretti dell'utente. I ruoli rimangono invariati e i loro grant sono aggiunti
332
+ * solo nel risultato effettivo; per lo stesso menu vale il livello massimo tra diretto e ruoli.
333
+ */
155
334
  assignPermissionsToUser(codiceUtente, permissions) {
156
335
  return __awaiter(this, void 0, void 0, function* () {
157
336
  const userExistsQuery = `SELECT COUNT(*) FROM UTENTI WHERE CODUTE = ?`;
158
337
  let result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, userExistsQuery, [codiceUtente]);
159
- if (result[0].COUNT === 0) {
338
+ if (this.getCountFromResult(result) === 0) {
160
339
  throw new Error(`L'utente con codice ${codiceUtente} non esiste.`);
161
340
  }
162
- const deleteQuery = `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`;
163
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, deleteQuery, [codiceUtente]);
164
- const insertQuery = `INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`;
165
- for (const permission of permissions) {
166
- yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, insertQuery, [codiceUtente, permission.codiceMenu, permission.tipoAbilitazione]);
341
+ const normalizedPermissions = Array.from(new Map(permissions
342
+ .map((permission) => {
343
+ var _a, _b;
344
+ return ({
345
+ codiceMenu: `${(_a = permission === null || permission === void 0 ? void 0 : permission.codiceMenu) !== null && _a !== void 0 ? _a : ''}`.trim(),
346
+ tipoAbilitazione: Number.parseInt(`${(_b = permission === null || permission === void 0 ? void 0 : permission.tipoAbilitazione) !== null && _b !== void 0 ? _b : ''}`, 10),
347
+ });
348
+ })
349
+ .filter((permission) => permission.codiceMenu.length > 0 && Number.isInteger(permission.tipoAbilitazione))
350
+ .map((permission) => [permission.codiceMenu, permission])).values());
351
+ const queriesWithParams = [
352
+ { query: `DELETE FROM ABILITAZIONI WHERE CODUTE = ?`, params: [codiceUtente] },
353
+ ...normalizedPermissions.map((permission) => ({
354
+ query: `INSERT INTO ABILITAZIONI (CODUTE, CODMNU, TIPABI) VALUES (?, ?, ?)`,
355
+ params: [codiceUtente, permission.codiceMenu, permission.tipoAbilitazione],
356
+ })),
357
+ ];
358
+ if (normalizedPermissions.length > 0) {
359
+ // Un'unica query IN invece di N count: stessa validazione, meno round-trip.
360
+ const menuCodes = normalizedPermissions.map((permission) => permission.codiceMenu);
361
+ const placeholders = menuCodes.map(() => '?').join(', ');
362
+ const existingMenusResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT CODMNU FROM MENU WHERE CODMNU IN (${placeholders})`, menuCodes);
363
+ const existingMenus = new Set(existingMenusResult.map((row) => { var _a, _b; return String((_b = (_a = row.CODMNU) !== null && _a !== void 0 ? _a : row.codmnu) !== null && _b !== void 0 ? _b : ''); }));
364
+ const missingMenu = menuCodes.find((codiceMenu) => !existingMenus.has(codiceMenu));
365
+ if (missingMenu !== undefined) {
366
+ throw new Error(`Il menu con codice ${missingMenu} non esiste.`);
367
+ }
368
+ }
369
+ yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, queriesWithParams);
370
+ const assignedPermissionsResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT COUNT(*) FROM ABILITAZIONI WHERE CODUTE = ?`, [codiceUtente]);
371
+ const assignedPermissionsCount = this.getCountFromResult(assignedPermissionsResult);
372
+ if (assignedPermissionsCount !== normalizedPermissions.length) {
373
+ throw new Error(`Persistenza abilitazioni non coerente per utente ${codiceUtente}: attese ${normalizedPermissions.length}, trovate ${assignedPermissionsCount}.`);
167
374
  }
168
375
  });
169
376
  }
377
+ /** Elimina fisicamente ruolo, associazioni menu e assegnazioni utente. Operazione amministrativa irreversibile. */
170
378
  deleteRole(codiceRuolo) {
171
379
  return __awaiter(this, void 0, void 0, function* () {
172
380
  const existsQuery = `SELECT COUNT(*) FROM RUOLI WHERE CODRUO = ?`;
173
- let result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, existsQuery, [codiceRuolo]);
174
- if (result[0].COUNT === 0) {
381
+ const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, existsQuery, [codiceRuolo]);
382
+ if (this.getCountFromResult(result) === 0) {
175
383
  throw new Error(`Il ruolo con codice ${codiceRuolo} non esiste.`);
176
384
  }
177
- const deleteRoleMenusQuery = `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`;
178
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, deleteRoleMenusQuery, [codiceRuolo]);
179
- const deleteRoleUsersQuery = `DELETE FROM UTENTI_RUOLI WHERE CODRUO = ?`;
180
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, deleteRoleUsersQuery, [codiceRuolo]);
181
- const deleteRoleQuery = `DELETE FROM RUOLI WHERE CODRUO = ?`;
182
- yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, deleteRoleQuery, [codiceRuolo]);
385
+ // Le tre delete sono atomiche: nessun ruolo orfano se una fallisce.
386
+ yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, [
387
+ { query: `DELETE FROM RUOLI_MNU WHERE CODRUO = ?`, params: [codiceRuolo] },
388
+ { query: `DELETE FROM UTENTI_RUOLI WHERE CODRUO = ?`, params: [codiceRuolo] },
389
+ { query: `DELETE FROM RUOLI WHERE CODRUO = ?`, params: [codiceRuolo] },
390
+ ]);
183
391
  });
184
392
  }
393
+ /** Restituisce solo menu abilitati; per il catalogo amministrativo usare `getGroupsWithMenus(true)`. */
185
394
  getMenus() {
186
395
  return __awaiter(this, void 0, void 0, function* () {
187
- const query = `
188
- SELECT
189
- M.CODMNU AS codiceMenu,
190
- M.DESMNU AS descrizioneMenu,
191
- M.CODGRP AS codiceGruppo,
192
- G.DESGRP AS descrizioneGruppo,
193
- M.ICON AS icona,
194
- M.CODTIP AS tipo,
195
- M.PAGINA AS pagina,
196
- M.NOTE AS note
197
- FROM MENU M
198
- LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
199
- WHERE M.FLGENABLED = 1
200
- ORDER BY G.CODGRP, M.CODMNU
396
+ const query = `
397
+ SELECT
398
+ M.CODMNU AS codice_menu,
399
+ M.DESMNU AS descrizione_menu,
400
+ M.CODGRP AS codice_gruppo,
401
+ G.DESGRP AS descrizione_gruppo,
402
+ M.ICON AS icona,
403
+ M.CODTIP AS tipo,
404
+ M.PAGINA AS pagina,
405
+ M.NOTE AS note,
406
+ G.ORDINE AS ordine_gruppo,
407
+ M.ORDINE AS ordine_menu
408
+ FROM MENU M
409
+ LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
410
+ WHERE M.FLGENABLED = 1 AND COALESCE(G.FLGENABLED, 1) = 1
411
+ ORDER BY G.CODGRP, M.CODMNU
201
412
  `;
202
413
  const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
203
414
  return result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
204
415
  });
205
416
  }
417
+ /**
418
+ * Restituisce il catalogo ordinato per gruppo e menu. `includeDisabled` e riservato a console e amministrazione:
419
+ * i flussi applicativi di autorizzazione devono usare il comportamento predefinito, che nasconde voci disabilitate.
420
+ */
206
421
  getGroupsWithMenus() {
207
422
  return __awaiter(this, arguments, void 0, function* (includeDisabled = false) {
208
423
  const filtersClause = includeDisabled
209
424
  ? ''
210
425
  : 'WHERE M.FLGENABLED = 1 AND (G.FLGENABLED IS NULL OR G.FLGENABLED = 1)';
211
- const query = `
212
- SELECT
213
- M.CODMNU AS codice_menu,
214
- M.DESMNU AS descrizione_menu,
215
- M.CODGRP AS codice_gruppo,
216
- G.DESGRP AS descrizione_gruppo,
217
- M.ICON AS icona,
218
- M.CODTIP AS tipo,
219
- M.PAGINA AS pagina,
220
- M.NOTE AS note,
221
- G.ORDINE AS ordine_gruppo,
222
- M.ORDINE as ordine_menu,
223
- M.FLGENABLED AS menu_enabled,
224
- G.FLGENABLED AS group_enabled
225
- FROM MENU M
226
- LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
227
- ${filtersClause}
228
- ORDER BY G.CODGRP, M.CODMNU
426
+ const query = `
427
+ SELECT
428
+ M.CODMNU AS codice_menu,
429
+ M.DESMNU AS descrizione_menu,
430
+ M.CODGRP AS codice_gruppo,
431
+ G.DESGRP AS descrizione_gruppo,
432
+ M.ICON AS icona,
433
+ M.CODTIP AS tipo,
434
+ M.PAGINA AS pagina,
435
+ M.NOTE AS note,
436
+ G.ORDINE AS ordine_gruppo,
437
+ M.ORDINE as ordine_menu,
438
+ M.FLGENABLED AS menu_enabled,
439
+ G.FLGENABLED AS group_enabled
440
+ FROM MENU M
441
+ LEFT JOIN MENU_GRP G ON M.CODGRP = G.CODGRP
442
+ ${filtersClause}
443
+ ORDER BY G.CODGRP, M.CODMNU
229
444
  `;
230
445
  const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
231
446
  const groupMap = new Map();
232
- result.forEach(row => {
233
- var _a, _b;
447
+ result.forEach((row) => {
448
+ var _a, _b, _c;
234
449
  const converted = Utilities_1.RestUtilities.convertKeysToCamelCase(row);
235
- const _c = converted, { menuEnabled, groupEnabled } = _c, menuBase = __rest(_c, ["menuEnabled", "groupEnabled"]);
450
+ const { menuEnabled, groupEnabled } = converted, menuBase = __rest(converted, ["menuEnabled", "groupEnabled"]);
236
451
  const normalizedGroupKey = (_a = menuBase.codiceGruppo) !== null && _a !== void 0 ? _a : '__UNGROUPED__';
237
- const groupEnabledFlag = groupEnabled === undefined ? true : Number(groupEnabled) === 1 || groupEnabled === true;
452
+ const groupEnabledFlag = groupEnabled == null ? true : Number(groupEnabled) === 1 || groupEnabled === true;
238
453
  const menuEnabledFlag = menuEnabled === undefined ? true : Number(menuEnabled) === 1 || menuEnabled === true;
239
454
  if (!groupMap.has(normalizedGroupKey)) {
240
455
  groupMap.set(normalizedGroupKey, {
241
456
  codiceGruppo: (_b = menuBase.codiceGruppo) !== null && _b !== void 0 ? _b : normalizedGroupKey,
242
- descrizioneGruppo: menuBase.descrizioneGruppo,
457
+ descrizioneGruppo: (_c = menuBase.descrizioneGruppo) !== null && _c !== void 0 ? _c : '',
243
458
  ordineGruppo: menuBase.ordineGruppo,
244
459
  enabled: groupEnabledFlag,
245
460
  menus: [],
@@ -258,107 +473,312 @@ let PermissionService = class PermissionService {
258
473
  return groupsArray;
259
474
  });
260
475
  }
476
+ // -----------------------------------------------------------------------
477
+ // Cataloghi di configurazione: CRUD di menu, gruppi, tipi menu.
478
+ // `table` e `column` sono sempre costanti interne, mai input utente: i
479
+ // valori sono parametrizzati, quindi non esiste superficie di SQL injection.
480
+ // -----------------------------------------------------------------------
481
+ countWhere(table, column, value) {
482
+ return __awaiter(this, void 0, void 0, function* () {
483
+ const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT COUNT(*) FROM ${table} WHERE ${column} = ?`, [value]);
484
+ return this.getCountFromResult(result);
485
+ });
486
+ }
487
+ assertMenuGroupExists(codiceGruppo) {
488
+ return __awaiter(this, void 0, void 0, function* () {
489
+ if ((yield this.countWhere('MENU_GRP', 'CODGRP', codiceGruppo)) === 0) {
490
+ throw new common_1.BadRequestException(`Il gruppo menu ${codiceGruppo} non esiste.`);
491
+ }
492
+ });
493
+ }
494
+ assertMenuTypeExists(codiceTipo) {
495
+ return __awaiter(this, void 0, void 0, function* () {
496
+ if ((yield this.countWhere('MENU_TIPI', 'CODTIP', codiceTipo)) === 0) {
497
+ throw new common_1.BadRequestException(`Il tipo menu ${codiceTipo} non esiste.`);
498
+ }
499
+ });
500
+ }
501
+ /** Catalogo completo dei tipi menu, usato dagli editor di configurazione. */
502
+ getMenuTypes() {
503
+ return __awaiter(this, void 0, void 0, function* () {
504
+ const query = `SELECT CODTIP AS codice_tipo, DESTIP AS descrizione_tipo FROM MENU_TIPI ORDER BY CODTIP`;
505
+ const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, []);
506
+ return result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
507
+ });
508
+ }
509
+ createMenuType(input) {
510
+ return __awaiter(this, void 0, void 0, function* () {
511
+ var _a;
512
+ if ((yield this.countWhere('MENU_TIPI', 'CODTIP', input.codiceTipo)) > 0) {
513
+ throw new common_1.BadRequestException(`Il tipo menu ${input.codiceTipo} esiste gia.`);
514
+ }
515
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `INSERT INTO MENU_TIPI (CODTIP, DESTIP) VALUES (?, ?)`, [input.codiceTipo, (_a = input.descrizioneTipo) !== null && _a !== void 0 ? _a : null]);
516
+ });
517
+ }
518
+ updateMenuType(codiceTipo, input) {
519
+ return __awaiter(this, void 0, void 0, function* () {
520
+ yield this.assertMenuTypeExists(codiceTipo);
521
+ if (input.descrizioneTipo === undefined)
522
+ return;
523
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `UPDATE MENU_TIPI SET DESTIP = ? WHERE CODTIP = ?`, [input.descrizioneTipo, codiceTipo]);
524
+ });
525
+ }
526
+ /** Elimina un tipo menu solo se nessun menu lo utilizza (la FK lo impedirebbe comunque). */
527
+ deleteMenuType(codiceTipo) {
528
+ return __awaiter(this, void 0, void 0, function* () {
529
+ yield this.assertMenuTypeExists(codiceTipo);
530
+ const used = yield this.countWhere('MENU', 'CODTIP', codiceTipo);
531
+ if (used > 0) {
532
+ throw new common_1.BadRequestException(`Impossibile eliminare il tipo ${codiceTipo}: ${used} menu lo utilizzano.`);
533
+ }
534
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `DELETE FROM MENU_TIPI WHERE CODTIP = ?`, [codiceTipo]);
535
+ });
536
+ }
537
+ createMenuGroup(input) {
538
+ return __awaiter(this, void 0, void 0, function* () {
539
+ var _a, _b;
540
+ if ((yield this.countWhere('MENU_GRP', 'CODGRP', input.codiceGruppo)) > 0) {
541
+ throw new common_1.BadRequestException(`Il gruppo menu ${input.codiceGruppo} esiste gia.`);
542
+ }
543
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `INSERT INTO MENU_GRP (CODGRP, DESGRP, FLGENABLED, ORDINE) VALUES (?, ?, ?, ?)`, [
544
+ input.codiceGruppo,
545
+ (_a = input.descrizioneGruppo) !== null && _a !== void 0 ? _a : null,
546
+ input.enabled === false ? 0 : 1,
547
+ (_b = input.ordineGruppo) !== null && _b !== void 0 ? _b : 0,
548
+ ]);
549
+ });
550
+ }
551
+ updateMenuGroup(codiceGruppo, input) {
552
+ return __awaiter(this, void 0, void 0, function* () {
553
+ yield this.assertMenuGroupExists(codiceGruppo);
554
+ const sets = [];
555
+ const params = [];
556
+ if (input.descrizioneGruppo !== undefined) {
557
+ sets.push('DESGRP = ?');
558
+ params.push(input.descrizioneGruppo);
559
+ }
560
+ if (input.ordineGruppo !== undefined) {
561
+ sets.push('ORDINE = ?');
562
+ params.push(input.ordineGruppo);
563
+ }
564
+ if (input.enabled !== undefined) {
565
+ sets.push('FLGENABLED = ?');
566
+ params.push(input.enabled ? 1 : 0);
567
+ }
568
+ if (sets.length === 0)
569
+ return;
570
+ params.push(codiceGruppo);
571
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `UPDATE MENU_GRP SET ${sets.join(', ')} WHERE CODGRP = ?`, params);
572
+ });
573
+ }
574
+ /** Elimina un gruppo solo se non contiene menu, per non lasciare menu orfani. */
575
+ deleteMenuGroup(codiceGruppo) {
576
+ return __awaiter(this, void 0, void 0, function* () {
577
+ yield this.assertMenuGroupExists(codiceGruppo);
578
+ const used = yield this.countWhere('MENU', 'CODGRP', codiceGruppo);
579
+ if (used > 0) {
580
+ throw new common_1.BadRequestException(`Impossibile eliminare il gruppo ${codiceGruppo}: contiene ${used} menu.`);
581
+ }
582
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `DELETE FROM MENU_GRP WHERE CODGRP = ?`, [codiceGruppo]);
583
+ });
584
+ }
585
+ createMenu(input) {
586
+ return __awaiter(this, void 0, void 0, function* () {
587
+ var _a, _b, _c, _d, _e, _f, _g;
588
+ if ((yield this.countWhere('MENU', 'CODMNU', input.codiceMenu)) > 0) {
589
+ throw new common_1.BadRequestException(`Il menu ${input.codiceMenu} esiste gia.`);
590
+ }
591
+ yield this.assertMenuGroupExists(input.codiceGruppo);
592
+ if (input.tipo)
593
+ yield this.assertMenuTypeExists(input.tipo);
594
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `INSERT INTO MENU (CODMNU, DESMNU, CODGRP, FLGENABLED, ICON, ORDINE, CODTIP, PAGINA, RIFMENU, NOTE)
595
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
596
+ input.codiceMenu,
597
+ (_a = input.descrizioneMenu) !== null && _a !== void 0 ? _a : null,
598
+ input.codiceGruppo,
599
+ input.enabled === false ? 0 : 1,
600
+ (_b = input.icona) !== null && _b !== void 0 ? _b : null,
601
+ (_c = input.ordineMenu) !== null && _c !== void 0 ? _c : null,
602
+ (_d = input.tipo) !== null && _d !== void 0 ? _d : null,
603
+ (_e = input.pagina) !== null && _e !== void 0 ? _e : null,
604
+ (_f = input.rifMenu) !== null && _f !== void 0 ? _f : null,
605
+ (_g = input.note) !== null && _g !== void 0 ? _g : null,
606
+ ]);
607
+ });
608
+ }
609
+ updateMenu(codiceMenu, input) {
610
+ return __awaiter(this, void 0, void 0, function* () {
611
+ if ((yield this.countWhere('MENU', 'CODMNU', codiceMenu)) === 0) {
612
+ throw new common_1.BadRequestException(`Il menu ${codiceMenu} non esiste.`);
613
+ }
614
+ if (input.codiceGruppo !== undefined)
615
+ yield this.assertMenuGroupExists(input.codiceGruppo);
616
+ if (input.tipo)
617
+ yield this.assertMenuTypeExists(input.tipo);
618
+ const sets = [];
619
+ const params = [];
620
+ if (input.descrizioneMenu !== undefined) {
621
+ sets.push('DESMNU = ?');
622
+ params.push(input.descrizioneMenu);
623
+ }
624
+ if (input.codiceGruppo !== undefined) {
625
+ sets.push('CODGRP = ?');
626
+ params.push(input.codiceGruppo);
627
+ }
628
+ if (input.tipo !== undefined) {
629
+ sets.push('CODTIP = ?');
630
+ params.push(input.tipo || null);
631
+ }
632
+ if (input.icona !== undefined) {
633
+ sets.push('ICON = ?');
634
+ params.push(input.icona);
635
+ }
636
+ if (input.pagina !== undefined) {
637
+ sets.push('PAGINA = ?');
638
+ params.push(input.pagina);
639
+ }
640
+ if (input.ordineMenu !== undefined) {
641
+ sets.push('ORDINE = ?');
642
+ params.push(input.ordineMenu);
643
+ }
644
+ if (input.enabled !== undefined) {
645
+ sets.push('FLGENABLED = ?');
646
+ params.push(input.enabled ? 1 : 0);
647
+ }
648
+ if (input.rifMenu !== undefined) {
649
+ sets.push('RIFMENU = ?');
650
+ params.push(input.rifMenu);
651
+ }
652
+ if (input.note !== undefined) {
653
+ sets.push('NOTE = ?');
654
+ params.push(input.note);
655
+ }
656
+ if (sets.length === 0)
657
+ return;
658
+ params.push(codiceMenu);
659
+ yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, `UPDATE MENU SET ${sets.join(', ')} WHERE CODMNU = ?`, params);
660
+ });
661
+ }
662
+ /** Elimina menu, grant utente e associazioni ruolo in un'unica transazione. */
663
+ deleteMenu(codiceMenu) {
664
+ return __awaiter(this, void 0, void 0, function* () {
665
+ if ((yield this.countWhere('MENU', 'CODMNU', codiceMenu)) === 0) {
666
+ throw new common_1.BadRequestException(`Il menu ${codiceMenu} non esiste.`);
667
+ }
668
+ yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, [
669
+ { query: `DELETE FROM ABILITAZIONI WHERE CODMNU = ?`, params: [codiceMenu] },
670
+ { query: `DELETE FROM RUOLI_MNU WHERE CODMNU = ?`, params: [codiceMenu] },
671
+ { query: `DELETE FROM MENU WHERE CODMNU = ?`, params: [codiceMenu] },
672
+ ]);
673
+ });
674
+ }
675
+ /**
676
+ * Calcola l'autorizzazione effettiva: grant diretti e grant dei ruoli sono uniti per codice menu
677
+ * prendendo il livello massimo. I superutenti ricevono tutti i menu attivi.
678
+ */
261
679
  getUserRolesAndGrants(codiceUtente) {
262
680
  return __awaiter(this, void 0, void 0, function* () {
681
+ var _a;
263
682
  const codiceUtenteQuery = "SELECT FLGSUPER as flag_super FROM UTENTI_CONFIG WHERE CODUTE = ?";
264
- let result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, codiceUtenteQuery, [codiceUtente]);
683
+ const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, codiceUtenteQuery, [codiceUtente]);
265
684
  if (!result || result.length == 0)
266
685
  throw new Error("Nessun utente trovato con il codice utente " + codiceUtente);
267
- result = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
268
- const isSuperAdmin = result[0].flagSuper;
269
- let abilitazioni = [];
270
- let ruoli = [];
271
- if (isSuperAdmin) {
272
- const query = `
273
- SELECT
274
- M.CODMNU AS codice_menu,
275
- 30 AS tipo_abilitazione,
276
- M.DESMNU AS descrizione_menu,
277
- G.DESGRP AS descrizione_gruppo,
278
- G.CODGRP AS codice_gruppo,
279
- M.ICON AS icona,
280
- M.CODTIP AS tipo,
281
- M.PAGINA AS pagina,
282
- M.NOTE AS note
283
- FROM MENU M
284
- INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
285
- WHERE M.FLGENABLED = 1 AND G.FLGENABLED = 1
286
- `;
287
- abilitazioni = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [])
288
- .then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
289
- }
290
- else {
291
- const queryAbilitazioni = `
292
- SELECT
293
- A.CODMNU AS codice_menu,
294
- A.TIPABI AS tipo_abilitazione,
295
- M.DESMNU AS descrizione_menu,
296
- G.DESGRP AS descrizione_gruppo,
297
- G.CODGRP AS codice_gruppo,
298
- M.ICON AS icona,
299
- M.CODTIP AS tipo,
300
- M.PAGINA AS pagina,
301
- M.NOTE AS note
302
- FROM ABILITAZIONI A
303
- INNER JOIN MENU M ON A.CODMNU = M.CODMNU
304
- INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
305
- WHERE A.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
306
- `;
307
- abilitazioni = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryAbilitazioni, [codiceUtente])
308
- .then(results => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
309
- const queryRuoli = `
310
- SELECT
311
- R.CODRUO AS codice_ruolo,
312
- R.DESRUO AS descrizione_ruolo,
313
- RM.CODMNU AS codice_menu,
314
- RM.TIPABI AS tipo_abilitazione,
315
- M.DESMNU AS descrizione_menu,
316
- M.NOTE AS note
317
- FROM UTENTI_RUOLI RU
318
- INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO
319
- INNER JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
320
- INNER JOIN MENU M ON RM.CODMNU = M.CODMNU
321
- INNER JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
322
- WHERE RU.CODUTE = ? AND M.FLGENABLED = 1 AND G.FLGENABLED = 1
323
- `;
324
- let ruoliResult = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, queryRuoli, [codiceUtente]);
325
- ruoliResult = ruoliResult.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
326
- const ruoliMap = new Map();
327
- for (const row of ruoliResult) {
328
- const { codiceRuolo, descrizioneRuolo, codiceMenu, descrizioneMenu, tipoAbilitazione } = row;
329
- if (!ruoliMap.has(codiceRuolo)) {
330
- ruoliMap.set(codiceRuolo, {
331
- codiceRuolo,
332
- descrizioneRuolo: descrizioneRuolo === null || descrizioneRuolo === void 0 ? void 0 : descrizioneRuolo.trim(),
333
- menu: []
334
- });
335
- }
336
- if (codiceMenu) {
337
- ruoliMap.get(codiceRuolo).menu.push({
338
- codiceRuolo: codiceRuolo,
339
- codiceMenu: codiceMenu.trim(),
340
- tipoAbilitazione,
341
- });
342
- }
686
+ const isSuperAdmin = this.isSuperFlag((_a = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase)[0]) === null || _a === void 0 ? void 0 : _a.flagSuper);
687
+ const abilitazioni = yield this.getUserDirectPermissions(codiceUtente);
688
+ const ruoli = yield this.getUserRoles(codiceUtente);
689
+ const grants = this.composeGrants(abilitazioni, ruoli, isSuperAdmin, yield this.getAllActiveMenusAsGrants());
690
+ return { abilitazioni, ruoli, grants };
691
+ });
692
+ }
693
+ isSuperFlag(value) {
694
+ return value === true || value === 1 || value === '1';
695
+ }
696
+ /**
697
+ * Versione batch di `getUserRolesAndGrants`: esegue un numero costante di query per N utenti
698
+ * (invece di N set di query) e restituisce mappa per codice utente. Stessa composizione della
699
+ * lettura singola.
700
+ */
701
+ getUsersRolesAndGrants(codiciUtente) {
702
+ return __awaiter(this, void 0, void 0, function* () {
703
+ var _a, _b;
704
+ const result = new Map();
705
+ const ids = Array.from(new Set(codiciUtente.filter((id) => Number.isInteger(id) && id > 0)));
706
+ if (ids.length === 0) {
707
+ return result;
708
+ }
709
+ const placeholders = ids.map(() => '?').join(', ');
710
+ const superRows = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT CODUTE AS codice_utente, FLGSUPER AS flag_super FROM UTENTI_CONFIG WHERE CODUTE IN (${placeholders})`, ids)).map(Utilities_1.RestUtilities.convertKeysToCamelCase);
711
+ const superUsers = new Set();
712
+ for (const row of superRows) {
713
+ if (this.isSuperFlag(row.flagSuper)) {
714
+ superUsers.add(Number(row.codiceUtente));
343
715
  }
344
- ruoli = Array.from(ruoliMap.values());
345
- }
346
- // Merge user-specific and role-based permissions
347
- const grantsMap = new Map();
348
- // Add user-specific permissions
349
- for (const abilitazione of abilitazioni) {
350
- grantsMap.set(abilitazione.codiceMenu, abilitazione);
351
- }
352
- // Add role-based permissions if not already present
353
- for (const ruolo of ruoli) {
354
- for (const menu of ruolo.menu) {
355
- if (!grantsMap.has(menu.codiceMenu)) {
356
- grantsMap.set(menu.codiceMenu, menu);
357
- }
716
+ }
717
+ const permissionRows = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT
718
+ A.CODUTE AS codice_utente,
719
+ A.CODMNU AS codice_menu,
720
+ A.TIPABI AS tipo_abilitazione,
721
+ M.DESMNU AS descrizione_menu,
722
+ G.DESGRP AS descrizione_gruppo,
723
+ G.CODGRP AS codice_gruppo,
724
+ M.ICON AS icona,
725
+ M.CODTIP AS tipo,
726
+ M.PAGINA AS pagina,
727
+ M.NOTE AS note
728
+ FROM ABILITAZIONI A
729
+ INNER JOIN MENU M ON A.CODMNU = M.CODMNU
730
+ LEFT JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
731
+ WHERE A.CODUTE IN (${placeholders}) AND M.FLGENABLED = 1 AND COALESCE(G.FLGENABLED, 1) = 1`, ids)).map(Utilities_1.RestUtilities.convertKeysToCamelCase);
732
+ const roleRows = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT
733
+ RU.CODUTE AS codice_utente,
734
+ R.CODRUO AS codice_ruolo,
735
+ R.DESRUO AS descrizione_ruolo,
736
+ CASE WHEN COALESCE(G.FLGENABLED, 1) = 1 THEN M.CODMNU END AS codice_menu,
737
+ RM.TIPABI AS tipo_abilitazione,
738
+ M.DESMNU AS descrizione_menu,
739
+ M.NOTE AS note
740
+ FROM UTENTI_RUOLI RU
741
+ INNER JOIN RUOLI R ON RU.CODRUO = R.CODRUO
742
+ LEFT JOIN RUOLI_MNU RM ON R.CODRUO = RM.CODRUO
743
+ LEFT JOIN MENU M ON RM.CODMNU = M.CODMNU AND M.FLGENABLED = 1
744
+ LEFT JOIN MENU_GRP G ON G.CODGRP = M.CODGRP
745
+ WHERE RU.CODUTE IN (${placeholders})`, ids)).map(Utilities_1.RestUtilities.convertKeysToCamelCase);
746
+ const allActiveMenus = yield this.getAllActiveMenusAsGrants();
747
+ const permissionsByUser = new Map();
748
+ for (const row of permissionRows) {
749
+ const { codiceUtente } = row, grant = __rest(row, ["codiceUtente"]);
750
+ const key = Number(codiceUtente);
751
+ const bucket = permissionsByUser.get(key);
752
+ if (bucket) {
753
+ bucket.push(grant);
754
+ }
755
+ else {
756
+ permissionsByUser.set(key, [grant]);
358
757
  }
359
758
  }
360
- const grants = Array.from(grantsMap.values());
361
- return { abilitazioni, ruoli, grants };
759
+ const rolesByUser = new Map();
760
+ for (const row of roleRows) {
761
+ const { codiceUtente } = row, roleRow = __rest(row, ["codiceUtente"]);
762
+ const key = Number(codiceUtente);
763
+ const bucket = rolesByUser.get(key);
764
+ if (bucket) {
765
+ bucket.push(roleRow);
766
+ }
767
+ else {
768
+ rolesByUser.set(key, [roleRow]);
769
+ }
770
+ }
771
+ for (const id of ids) {
772
+ const abilitazioni = (_a = permissionsByUser.get(id)) !== null && _a !== void 0 ? _a : [];
773
+ const ruoli = this.assembleRoles((_b = rolesByUser.get(id)) !== null && _b !== void 0 ? _b : []);
774
+ const isSuperAdmin = superUsers.has(id);
775
+ result.set(id, {
776
+ abilitazioni,
777
+ ruoli,
778
+ grants: this.composeGrants(abilitazioni, ruoli, isSuperAdmin, allActiveMenus),
779
+ });
780
+ }
781
+ return result;
362
782
  });
363
783
  }
364
784
  };