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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/dist/DailyFileTransport.d.ts +15 -0
  2. package/dist/DailyFileTransport.js +67 -0
  3. package/dist/DailyFileTransport.js.map +1 -0
  4. package/dist/DatabaseUpdater.js +0 -2
  5. package/dist/DatabaseUpdater.js.map +1 -1
  6. package/dist/ExecutionTimeLogger.js +2 -2
  7. package/dist/ExecutionTimeLogger.js.map +1 -1
  8. package/dist/Logger.d.ts +0 -2
  9. package/dist/Logger.js +6 -70
  10. package/dist/Logger.js.map +1 -1
  11. package/dist/Utilities.d.ts +8 -3
  12. package/dist/Utilities.js +61 -16
  13. package/dist/Utilities.js.map +1 -1
  14. package/dist/accessi-module/AccessiModule.d.ts +60 -0
  15. package/dist/accessi-module/AccessiModule.js +21 -5
  16. package/dist/accessi-module/AccessiModule.js.map +1 -1
  17. package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
  18. package/dist/accessi-module/Console/accessiFetch.js +59 -0
  19. package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
  20. package/dist/accessi-module/Console/console.css +370 -0
  21. package/dist/accessi-module/Console/console.d.ts +1 -0
  22. package/dist/accessi-module/Console/console.js +1105 -0
  23. package/dist/accessi-module/Console/console.js.map +1 -0
  24. package/dist/accessi-module/Console/generated/accessiApi.d.ts +376 -0
  25. package/dist/accessi-module/Console/generated/accessiApi.js +363 -0
  26. package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
  27. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +27 -0
  28. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
  29. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
  30. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
  31. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
  32. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  33. package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
  34. package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
  35. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
  36. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
  37. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
  38. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  39. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
  40. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
  41. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
  42. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
  43. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
  44. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  45. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
  46. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
  47. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  48. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
  49. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
  50. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  51. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
  52. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
  53. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  54. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
  55. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
  56. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
  57. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
  58. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
  59. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
  60. package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
  61. package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
  62. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
  63. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
  64. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
  65. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
  66. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
  67. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
  68. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
  69. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
  70. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
  71. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  72. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
  73. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
  74. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
  75. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
  76. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
  77. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
  78. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
  79. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
  80. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
  81. package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
  82. package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
  83. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
  84. package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
  85. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
  86. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
  87. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
  88. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
  89. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
  90. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
  91. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
  92. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  93. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
  94. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
  95. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  96. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
  97. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
  98. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  99. package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
  100. package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
  101. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
  102. package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
  103. package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
  104. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
  105. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
  106. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
  107. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
  108. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
  109. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
  110. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
  111. package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +24 -0
  112. package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
  113. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
  114. package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
  115. package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
  116. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
  117. package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
  118. package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
  119. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
  120. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
  121. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
  122. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  123. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
  124. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
  125. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
  126. package/dist/accessi-module/Console/generated/model/index.d.ts +75 -0
  127. package/dist/accessi-module/Console/generated/model/index.js +92 -0
  128. package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
  129. package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
  130. package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
  131. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
  132. package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
  133. package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
  134. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
  135. package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
  136. package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
  137. package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
  138. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
  139. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
  140. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
  141. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
  142. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
  143. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
  144. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
  145. package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
  146. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
  147. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
  148. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
  149. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
  150. package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
  151. package/dist/accessi-module/Console/generated/model/permission.js +9 -0
  152. package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
  153. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
  154. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
  155. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
  156. package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
  157. package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
  158. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
  159. package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
  160. package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
  161. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
  162. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
  163. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
  164. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
  165. package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
  166. package/dist/accessi-module/Console/generated/model/role.js +3 -0
  167. package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
  168. package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
  169. package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
  170. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
  171. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
  172. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
  173. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  174. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
  175. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
  176. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  177. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
  178. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
  179. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  180. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
  181. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
  182. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  183. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
  184. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
  185. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  186. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
  187. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
  188. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  189. package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
  190. package/dist/accessi-module/Console/generated/model/status.js +9 -0
  191. package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
  192. package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
  193. package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
  194. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
  195. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
  196. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
  197. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  198. package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
  199. package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
  200. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
  201. package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
  202. package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
  203. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
  204. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
  205. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
  206. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
  207. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
  208. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
  209. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  210. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
  211. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
  212. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  213. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
  214. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
  215. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  216. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
  217. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
  218. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  219. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
  220. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
  221. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  222. package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
  223. package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
  224. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
  225. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
  226. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
  227. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  228. package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
  229. package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
  230. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
  231. package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
  232. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
  233. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
  234. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
  235. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
  236. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  237. package/dist/accessi-module/Console/index.html +59 -0
  238. package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +11 -0
  239. package/dist/accessi-module/Controllers/AccessiConsoleController.js +74 -0
  240. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
  241. package/dist/accessi-module/Controllers/AuthController.d.ts +4 -1
  242. package/dist/accessi-module/Controllers/AuthController.js +86 -47
  243. package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
  244. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -1
  245. package/dist/accessi-module/Controllers/ConfiguratorController.js +3 -1
  246. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
  247. package/dist/accessi-module/Controllers/EmailController.d.ts +1 -1
  248. package/dist/accessi-module/Controllers/EmailController.js +3 -1
  249. package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
  250. package/dist/accessi-module/Controllers/FiltriController.d.ts +1 -1
  251. package/dist/accessi-module/Controllers/FiltriController.js +3 -1
  252. package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
  253. package/dist/accessi-module/Controllers/PermissionController.d.ts +1 -1
  254. package/dist/accessi-module/Controllers/PermissionController.js +9 -5
  255. package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
  256. package/dist/accessi-module/Controllers/UserController.d.ts +3 -1
  257. package/dist/accessi-module/Controllers/UserController.js +40 -2
  258. package/dist/accessi-module/Controllers/UserController.js.map +1 -1
  259. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -1
  260. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
  261. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +3 -0
  262. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +18 -0
  263. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -1
  264. package/dist/accessi-module/Dtos/BaseResponse.d.ts +2 -0
  265. package/dist/accessi-module/Dtos/BaseResponse.js +21 -2
  266. package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
  267. package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
  268. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
  269. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
  270. package/dist/accessi-module/Dtos/FiltriUtente.js +4 -1
  271. package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
  272. package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
  273. package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
  274. package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
  275. package/dist/accessi-module/Dtos/LoginResponse.d.ts +5 -1
  276. package/dist/accessi-module/Dtos/LoginResponse.js +19 -6
  277. package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
  278. package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
  279. package/dist/accessi-module/Dtos/Permission.js +1 -0
  280. package/dist/accessi-module/Dtos/Permission.js.map +1 -1
  281. package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +1 -1
  282. package/dist/accessi-module/Dtos/PublicRegisterRequest.js +1 -0
  283. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -1
  284. package/dist/accessi-module/Dtos/RegisterRequest.js +1 -0
  285. package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
  286. package/dist/accessi-module/Dtos/Role.d.ts +4 -0
  287. package/dist/accessi-module/Dtos/Role.js +4 -0
  288. package/dist/accessi-module/Dtos/Role.js.map +1 -1
  289. package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
  290. package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
  291. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
  292. package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
  293. package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
  294. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
  295. package/dist/accessi-module/Dtos/UserDto.d.ts +7 -0
  296. package/dist/accessi-module/Dtos/UserDto.js +22 -0
  297. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  298. package/dist/accessi-module/Dtos/index.d.ts +2 -0
  299. package/dist/accessi-module/Dtos/index.js +2 -0
  300. package/dist/accessi-module/Dtos/index.js.map +1 -1
  301. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +39 -4
  302. package/dist/accessi-module/Services/AuthService/AuthService.js +184 -32
  303. package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
  304. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
  305. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
  306. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
  307. package/dist/accessi-module/Services/EmailService/EmailService.d.ts +7 -1
  308. package/dist/accessi-module/Services/EmailService/EmailService.js +23 -5
  309. package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
  310. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +9 -1
  311. package/dist/accessi-module/Services/FiltriService/FiltriService.js +29 -4
  312. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
  313. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +29 -1
  314. package/dist/accessi-module/Services/PermissionService/PermissionService.js +38 -7
  315. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  316. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
  317. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +179 -0
  318. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
  319. package/dist/accessi-module/Services/UserService/UserService.d.ts +26 -2
  320. package/dist/accessi-module/Services/UserService/UserService.js +124 -30
  321. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  322. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +38 -10
  323. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +368 -184
  324. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
  325. package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
  326. package/dist/accessi-module/database-updates/accessiSchema.js +79 -0
  327. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
  328. package/dist/accessi-module/database-updates/optionalColumns.d.ts +5 -0
  329. package/dist/accessi-module/database-updates/optionalColumns.js +26 -0
  330. package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
  331. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +11 -6
  332. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
  333. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +23 -0
  334. package/dist/accessi-module/federated-auth/FederatedAuthController.js +307 -0
  335. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
  336. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +94 -0
  337. package/dist/accessi-module/federated-auth/FederatedAuthService.js +424 -0
  338. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
  339. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
  340. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
  341. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
  342. package/dist/accessi-module/index.d.ts +14 -0
  343. package/dist/accessi-module/index.js +18 -10
  344. package/dist/accessi-module/index.js.map +1 -1
  345. package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
  346. package/dist/accessi-module/jwt/jwt.strategy.js +10 -4
  347. package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
  348. package/dist/accessi-module/middleware/accessiRequirements.d.ts +22 -0
  349. package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
  350. package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
  351. package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
  352. package/dist/accessi-module/middleware/authenticateGen.js +54 -20
  353. package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
  354. package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
  355. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
  356. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
  357. package/dist/accessi-module/security/accessControl.d.ts +11 -0
  358. package/dist/accessi-module/security/accessControl.js +11 -1
  359. package/dist/accessi-module/security/accessControl.js.map +1 -1
  360. package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
  361. package/dist/accessi-module/security/accessiValidation.js +41 -0
  362. package/dist/accessi-module/security/accessiValidation.js.map +1 -0
  363. package/dist/accessi-module/security/authenticatedToken.d.ts +14 -0
  364. package/dist/accessi-module/security/authenticatedToken.js +30 -4
  365. package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
  366. package/dist/accessi-module/security/passwordResetToken.d.ts +5 -1
  367. package/dist/accessi-module/security/passwordResetToken.js +5 -1
  368. package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
  369. package/dist/accessi-module/security/publicAuthRateLimit.d.ts +2 -2
  370. package/dist/accessi-module/security/publicAuthRateLimit.js +2 -0
  371. package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
  372. package/dist/emilsoftware-utilities-2.0.0-dev.23.tgz +0 -0
  373. package/dist/initEmilsoftwareModule.js +7 -0
  374. package/dist/initEmilsoftwareModule.js.map +1 -1
  375. package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
  376. package/dist/scripts/generateAccessiOpenApi.js +57 -0
  377. package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
  378. package/package.json +13 -4
  379. package/dist/emilsoftware-utilities-2.0.0-dev.21.tgz +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/accessi-module/Console/console.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assignPermissionsToUser,\n assignRolesToUser,\n createFederatedUser,\n createFederatedProvider,\n createManagedUser,\n createRole,\n deleteFederatedIdentityPermanently,\n deleteUser,\n getFederatedIdentities,\n getFederatedProviders,\n getFiltriUtente,\n getGroupsWithMenus,\n getRoles,\n getUserByToken,\n getUserRolesAndGrants,\n getUsers,\n linkFederatedIdentity,\n login,\n verifyTwoFactor,\n resendTwoFactor,\n saveFiltriUtente,\n setGroupEnabled,\n setMenuEnabled,\n setStatoRegistrazione,\n updateFederatedIdentity,\n updateFederatedProvider,\n updateRole,\n updateUtente,\n} from './generated/accessiApi';\nimport { setAccessiConsoleToken } from './accessiFetch';\nimport type {\n CreateFederatedUserRequest,\n CreateFederatedProviderRequest,\n AuthenticatedTokenPayloadDto,\n FiltriUtente,\n FederatedProviderResponseDto,\n GroupWithMenusEntity,\n LoginResult,\n MenuEntity,\n Permission,\n RegisterRequest,\n Role,\n UserDto,\n UpdateFederatedProviderRequest,\n} from './generated/model';\n\ntype UserRow = { utente: UserDto; userGrants?: { ruoli?: Array<{ codiceRuolo?: number }> } };\ntype ConsoleUser = { codiceUtente: number; email?: string; flagSuper: boolean; flagAdminConfigurator: boolean };\ntype FederatedProvider = FederatedProviderResponseDto;\ntype ConsoleFederatedIdentity = { identityKey: string; provider: string; subject: string; active: boolean; note?: string };\ntype UserDetailTab = 'sso' | 'profile' | 'roles' | 'grants';\ntype ConsoleView = 'users' | 'roles' | 'menus' | 'filters' | 'sso';\n\nconst routeSegment: Record<ConsoleView, string> = {\n users: 'utenti',\n roles: 'ruoli-e-grant',\n menus: 'menu-e-gruppi',\n filters: 'filtri',\n sso: 'sso',\n};\nconst routeView = Object.fromEntries(Object.entries(routeSegment).map(([view, segment]) => [segment, view])) as Record<string, ConsoleView>;\nconst consoleMarker = '/accessi/console';\nconst consoleMarkerIndex = window.location.pathname.indexOf(consoleMarker);\nconst consoleBasePath = consoleMarkerIndex >= 0\n ? window.location.pathname.slice(0, consoleMarkerIndex + consoleMarker.length)\n : `${window.location.pathname.replace(/\\/$/, '')}`;\n\nlet token = sessionStorage.getItem('accessi-console-token');\nlet currentUser: ConsoleUser | null = null;\nlet federatedAuthenticationAvailable = false;\nlet pendingNetworkRequests = 0;\nlet loadingRevealTimer: number | undefined;\nlet loadingHideTimer: number | undefined;\nlet loaderVisibleSince = 0;\n\nconst byId = <T extends HTMLElement>(id: string) => document.getElementById(id) as T;\nconst escapeHtml = (value: unknown) => String(value ?? '').replace(/[&<>\"']/g, (char) => ({\n '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;',\n}[char] as string));\nfunction result<T>(response: { data: object }): T {\n const body = response.data as { Result?: T; message?: string };\n if (body.Result === undefined) throw new Error(body.message ?? 'Risposta Accessi priva di dati.');\n return body.Result;\n}\n\nfunction showNotice(message: string, isError = false): void {\n byId('notice').innerHTML = `<span class=\"${isError ? 'error' : ''}\">${escapeHtml(message)}</span>`;\n}\n\n/** Renders operational menu metadata shared by the permissions and role views. */\nfunction menuMetadata(menu: MenuEntity): string {\n const details = [\n ['Codice', menu.codiceMenu],\n ['Ordine', String(menu.ordineMenu)],\n ['Tipo', menu.tipo],\n ['Pagina', menu.pagina],\n ['Icona', menu.icona],\n ['Stato', menu.enabled === false ? 'Disabilitato' : 'Abilitato'],\n ].filter(([, value]) => value);\n return `<dl class=\"entity-metadata\">${details.map(([label, value]) => `<div><dt>${escapeHtml(label)}</dt><dd>${escapeHtml(value)}</dd></div>`).join('')}</dl>${menu.note ? `<p class=\"entity-note\"><strong>Nota</strong>${escapeHtml(menu.note)}</p>` : ''}`;\n}\n\n/** Exposes only supported permission levels while preserving historical value 30 without data loss. */\nfunction permissionSelectOptions(currentLevel: number | undefined): string {\n return `<option value=\"10\" ${currentLevel === 10 ? 'selected' : ''}>Lettura</option><option value=\"20\" ${currentLevel === 20 ? 'selected' : ''}>Scrittura</option>${currentLevel === 30 ? '<option value=\"30\" selected>Valore legacy (30)</option>' : ''}`;\n}\n\n/** Renders the metadata that describes a menu group independently of its menus. */\nfunction groupMetadata(group: GroupWithMenusEntity): string {\n return `<dl class=\"entity-metadata\"><div><dt>Codice</dt><dd>${escapeHtml(group.codiceGruppo)}</dd></div><div><dt>Ordine</dt><dd>${escapeHtml(group.ordineGruppo)}</dd></div><div><dt>Stato</dt><dd>${group.enabled === false ? 'Disabilitato' : 'Abilitato'}</dd></div><div><dt>Menu</dt><dd>${group.menus.length}</dd></div></dl>`;\n}\n\n/** Builds the full-width, grouped direct-grant editor for an individual user. */\nfunction directGrantEditor(groups: GroupWithMenusEntity[], grants: Permission[] | undefined): string {\n return `<form id=\"grants\" class=\"user-editor-section grants-editor\" data-user-panel=\"grants\" role=\"tabpanel\" aria-labelledby=\"user-tab-grants\"><h3>Grant diretti</h3><p class=\"form-help\">Abilitazioni assegnate direttamente all'utente, indipendenti dai ruoli. Seleziona <strong>nessuno</strong> per rimuoverle. Le voci disabilitate restano visibili per non perdere grant esistenti al salvataggio.</p><div class=\"grant-menu-groups\">${groups.map((group) => `<fieldset class=\"grant-menu-group\"><legend>${escapeHtml(group.descrizioneGruppo)}</legend>${groupMetadata(group)}<div class=\"grant-menu-options\">${group.menus.map((menu) => { const grant = (grants ?? []).find((item) => item.codiceMenu === menu.codiceMenu); return `<div class=\"grant-menu-option ${menu.enabled === false ? 'is-disabled' : ''}\"><div class=\"grant-menu-info\"><strong>${escapeHtml(menu.descrizioneMenu)}</strong>${menuMetadata(menu)}</div><label class=\"grant-level\">Livello di grant<select name=\"grant:${escapeHtml(menu.codiceMenu)}\"><option value=\"\">nessuno</option>${permissionSelectOptions(grant?.tipoAbilitazione)}</select></label></div>`; }).join('') || '<p class=\"form-help\">Nessun menu configurato in questo gruppo.</p>'}</div></fieldset>`).join('')}</div><button>Salva grant</button></form>`;\n}\n\n/** Converts Accessi's persisted permission value into its documented label. */\nfunction permissionLevelLabel(value: number | undefined): string {\n return value === 10 ? 'Lettura' : value === 20 ? 'Scrittura' : value === 30 ? 'Valore legacy (30)' : `Livello ${value ?? 'non definito'}`;\n}\n\n/** Preserves incomplete legacy role data without rendering an invalid numeric label. */\nfunction rolePermissionLevel(value: unknown): string {\n return value === undefined || value === null || value === '' ? permissionLevelLabel(undefined) : permissionLevelLabel(Number(value));\n}\n\n/** Renders selectable roles together with their effective groups, menus and permission levels. */\nfunction roleAssignmentEditor(roles: Role[], assignedRoles: Array<{ codiceRuolo?: number }> | undefined, groups: GroupWithMenusEntity[]): string {\n const catalogMenus = new Map(groups.flatMap((group) => group.menus.map((menu) => [menu.codiceMenu, menu])));\n return `<form id=\"roles\" class=\"user-editor-section roles-editor\" data-user-panel=\"roles\" role=\"tabpanel\" aria-labelledby=\"user-tab-roles\"><h3>Ruoli</h3><p class=\"form-help\">Ogni ruolo assegna i menu elencati sotto con il relativo livello. Salvare sostituisce la selezione dei ruoli dell'utente, non i grant diretti.</p><div class=\"role-assignment-list\">${roles.map((role) => { const roleMenus = role.menu ?? []; const assigned = (assignedRoles ?? []).some((current) => current.codiceRuolo === role.codiceRuolo); const groupedMenus = groups.map((group) => ({ group, entries: group.menus.map((menu) => ({ menu, assignment: roleMenus.find((item) => item.codiceMenu === menu.codiceMenu) })).filter((entry) => entry.assignment) })).filter((entry) => entry.entries.length > 0); const missingMenus = roleMenus.filter((item) => !catalogMenus.has(item.codiceMenu)); return `<article class=\"role-assignment-card\"><div class=\"role-assignment-heading\"><label class=\"check\"><input type=\"checkbox\" name=\"role\" value=\"${escapeHtml(role.codiceRuolo)}\" ${assigned ? 'checked' : ''}><span><strong>${escapeHtml(role.descrizioneRuolo)}</strong><small>Codice ruolo: ${escapeHtml(role.codiceRuolo)}</small></span></label><span class=\"role-menu-count\">${roleMenus.length} menu</span></div><div class=\"role-permission-groups\">${groupedMenus.map(({ group, entries }) => `<section class=\"role-permission-group\"><div class=\"role-permission-group-heading\"><strong>${escapeHtml(group.descrizioneGruppo)}</strong>${groupMetadata(group)}</div>${entries.map(({ menu, assignment }) => `<div class=\"role-permission-entry ${menu.enabled === false ? 'is-disabled' : ''}\"><div><strong>${escapeHtml(menu.descrizioneMenu)}</strong>${menuMetadata(menu)}</div><span class=\"permission-level\">${escapeHtml(rolePermissionLevel(assignment?.tipoAbilitazione))}</span></div>`).join('')}</section>`).join('') || '<p class=\"form-help\">Questo ruolo non contiene menu attivi nel catalogo.</p>'}${missingMenus.length ? `<section class=\"role-permission-group missing-role-menus\"><strong>Menu non più presenti nel catalogo</strong>${missingMenus.map((menu) => `<div class=\"role-permission-entry\"><div><strong>${escapeHtml(menu.codiceMenu)}</strong><p class=\"entity-note\">Il menu è ancora associato al ruolo ma non è disponibile nel catalogo corrente.</p></div><span class=\"permission-level\">${escapeHtml(rolePermissionLevel(menu.tipoAbilitazione))}</span></div>`).join('')}</section>` : ''}</div></article>`; }).join('')}</div><button>Salva ruoli</button></form>`;\n}\n\n/** Renders a read-first role overview with all groups, menus and permission levels. */\nfunction roleOverview(role: Role, groups: GroupWithMenusEntity[]): string {\n const roleMenus = role.menu ?? [];\n const catalogMenus = new Map(groups.flatMap((group) => group.menus.map((menu) => [menu.codiceMenu, menu])));\n const groupedMenus = groups.map((group) => ({ group, entries: group.menus.map((menu) => ({ menu, assignment: roleMenus.find((item) => item.codiceMenu === menu.codiceMenu) })).filter((entry) => entry.assignment) })).filter((entry) => entry.entries.length > 0);\n const missingMenus = roleMenus.filter((item) => !catalogMenus.has(item.codiceMenu));\n return `<article class=\"role-assignment-card role-overview-card\"><details class=\"role-overview-details\"><summary class=\"role-assignment-heading\"><div class=\"role-identity\"><span class=\"role-kind\">Ruolo</span><strong>${escapeHtml(role.descrizioneRuolo)}</strong><span class=\"role-code\">Codice ruolo: ${escapeHtml(role.codiceRuolo)}</span></div><div class=\"role-overview-actions\"><span class=\"role-menu-count\">${roleMenus.length} menu</span><span class=\"role-expand-hint\"><span class=\"when-closed\">Mostra menu</span><span class=\"when-open\">Nascondi menu</span></span></div></summary><div class=\"role-permission-groups\">${groupedMenus.map(({ group, entries }) => `<section class=\"role-permission-group\"><div class=\"role-permission-group-heading\"><div><span class=\"group-kind\">Gruppo</span><strong>${escapeHtml(group.descrizioneGruppo)}</strong></div>${groupMetadata(group)}</div>${entries.map(({ menu, assignment }) => `<div class=\"role-permission-entry ${menu.enabled === false ? 'is-disabled' : ''}\"><div><span class=\"menu-kind\">Menu</span><strong>${escapeHtml(menu.descrizioneMenu)}</strong>${menuMetadata(menu)}</div><span class=\"permission-level\">${escapeHtml(rolePermissionLevel(assignment?.tipoAbilitazione))}</span></div>`).join('')}</section>`).join('') || '<p class=\"form-help\">Questo ruolo non contiene menu attivi nel catalogo.</p>'}${missingMenus.length ? `<section class=\"role-permission-group missing-role-menus\"><strong>Menu non più presenti nel catalogo</strong>${missingMenus.map((menu) => `<div class=\"role-permission-entry\"><div><strong>${escapeHtml(menu.codiceMenu)}</strong><p class=\"entity-note\">Il menu è ancora associato al ruolo ma non è disponibile nel catalogo corrente.</p></div><span class=\"permission-level\">${escapeHtml(rolePermissionLevel(menu.tipoAbilitazione))}</span></div>`).join('')}</section>` : ''}</div></details><button type=\"button\" class=\"role-edit-button\" data-role=\"${escapeHtml(role.codiceRuolo)}\">Modifica</button></article>`;\n}\n\n/** Builds a compact tabular inventory of the menus belonging to one group. */\nfunction menuGroupTable(group: GroupWithMenusEntity): string {\n return `<article class=\"menu-group-card ${group.enabled === false ? 'is-disabled' : ''}\"><div class=\"menu-group-header\"><label class=\"check\"><input type=\"checkbox\" data-group=\"${escapeHtml(group.codiceGruppo)}\" ${group.enabled !== false ? 'checked' : ''}><span><strong>${escapeHtml(group.descrizioneGruppo)}</strong><small>Gruppo di menu</small></span></label>${groupMetadata(group)}</div><div class=\"menu-table-wrap\"><table class=\"menu-table\"><thead><tr><th>Stato</th><th>Menu</th><th>Codice</th><th>Ordine</th><th>Tipo</th><th>Pagina</th><th>Icona</th><th>Nota</th></tr></thead><tbody>${group.menus.map((menu) => `<tr class=\"${menu.enabled === false ? 'is-disabled' : ''}\"><td><label class=\"table-toggle\"><input type=\"checkbox\" data-menu=\"${escapeHtml(menu.codiceMenu)}\" ${menu.enabled !== false ? 'checked' : ''}><span>${menu.enabled === false ? 'Disabilitato' : 'Abilitato'}</span></label></td><td><strong>${escapeHtml(menu.descrizioneMenu)}</strong></td><td><code>${escapeHtml(menu.codiceMenu)}</code></td><td>${escapeHtml(menu.ordineMenu)}</td><td>${escapeHtml(menu.tipo || 'Non indicato')}</td><td>${menu.pagina ? `<code>${escapeHtml(menu.pagina)}</code>` : '<span class=\"muted\">Non indicata</span>'}</td><td>${menu.icona ? `<code>${escapeHtml(menu.icona)}</code>` : '<span class=\"muted\">Non indicata</span>'}</td><td>${escapeHtml(menu.note || 'Nessuna nota')}</td></tr>`).join('') || '<tr><td colspan=\"8\" class=\"muted\">Nessun menu configurato in questo gruppo.</td></tr>'}</tbody></table></div></article>`;\n}\n\n/** Builds one grouped, row-oriented permission table for the role editor. */\nfunction roleMenuEditorTable(group: GroupWithMenusEntity, role?: Role): string {\n const roleMenus = role?.menu ?? [];\n return `<article class=\"role-menu-group ${group.enabled === false ? 'is-disabled' : ''}\"><div class=\"menu-group-header\"><div><strong>${escapeHtml(group.descrizioneGruppo)}</strong><small>Gruppo di menu</small></div>${groupMetadata(group)}</div><div class=\"menu-table-wrap\"><table class=\"menu-table role-menu-table\"><thead><tr><th scope=\"col\">Incluso</th><th scope=\"col\">Menu</th><th scope=\"col\">Codice</th><th scope=\"col\">Ordine</th><th scope=\"col\">Tipo</th><th scope=\"col\">Pagina</th><th scope=\"col\">Icona</th><th scope=\"col\">Stato</th><th scope=\"col\">Abilitazione</th><th scope=\"col\">Nota</th></tr></thead><tbody>${group.menus.map((menu) => { const assignment = roleMenus.find((item) => item.codiceMenu === menu.codiceMenu); const level = assignment?.tipoAbilitazione ?? 10; return `<tr class=\"${menu.enabled === false ? 'is-disabled' : ''}\"><td><label class=\"table-toggle\"><input type=\"checkbox\" name=\"menu\" value=\"${escapeHtml(menu.codiceMenu)}\" ${assignment ? 'checked' : ''} aria-label=\"Includi ${escapeHtml(menu.descrizioneMenu)}\"><span>${assignment ? 'Incluso' : 'Escluso'}</span></label></td><td><strong>${escapeHtml(menu.descrizioneMenu)}</strong></td><td><code>${escapeHtml(menu.codiceMenu)}</code></td><td>${escapeHtml(menu.ordineMenu)}</td><td>${escapeHtml(menu.tipo || 'Non indicato')}</td><td>${menu.pagina ? `<code>${escapeHtml(menu.pagina)}</code>` : '<span class=\"muted\">Non indicata</span>'}</td><td>${menu.icona ? `<code>${escapeHtml(menu.icona)}</code>` : '<span class=\"muted\">Non indicata</span>'}</td><td><span class=\"status-label ${menu.enabled === false ? 'status-disabled' : 'status-enabled'}\">${menu.enabled === false ? 'Disabilitato' : 'Abilitato'}</span></td><td><label class=\"table-select\"><span class=\"sr-only\">Abilitazione per ${escapeHtml(menu.descrizioneMenu)}</span><select name=\"menu-level:${escapeHtml(menu.codiceMenu)}\" ${assignment ? '' : 'disabled'}>${permissionSelectOptions(level)}</select></label></td><td>${escapeHtml(menu.note || 'Nessuna nota')}</td></tr>`; }).join('') || '<tr><td colspan=\"10\" class=\"muted\">Nessun menu configurato in questo gruppo.</td></tr>'}</tbody></table></div></article>`;\n}\n\n/**\n * Shows a delayed, concurrency-safe application loader for all Orval requests.\n * The delay avoids a distracting flash for fast operations; the minimum display\n * time makes visible operations feel intentional instead of flickering.\n */\nfunction updateLoadingState(active: boolean): void {\n pendingNetworkRequests = Math.max(0, pendingNetworkRequests + (active ? 1 : -1));\n const overlay = byId('loading-overlay');\n\n if (pendingNetworkRequests > 0) {\n if (loadingHideTimer !== undefined) {\n window.clearTimeout(loadingHideTimer);\n loadingHideTimer = undefined;\n }\n if (loadingRevealTimer === undefined && overlay.hidden) {\n loadingRevealTimer = window.setTimeout(() => {\n loadingRevealTimer = undefined;\n if (pendingNetworkRequests > 0) {\n overlay.hidden = false;\n loaderVisibleSince = Date.now();\n byId('app').setAttribute('aria-busy', 'true');\n }\n }, 140);\n }\n return;\n }\n\n if (loadingRevealTimer !== undefined) {\n window.clearTimeout(loadingRevealTimer);\n loadingRevealTimer = undefined;\n }\n\n const hide = () => {\n loadingHideTimer = undefined;\n overlay.hidden = true;\n byId('app').removeAttribute('aria-busy');\n };\n const remainingVisibleMs = 280 - (Date.now() - loaderVisibleSince);\n if (!overlay.hidden && remainingVisibleMs > 0) {\n loadingHideTimer = window.setTimeout(hide, remainingVisibleMs);\n } else {\n hide();\n }\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : 'Operazione non riuscita.';\n}\n\n/** Evita rejection non gestite dagli eventi del browser e conserva la vista corrente. */\nfunction handleAction(action: () => Promise<void>): void {\n void action().catch((error) => showNotice(errorMessage(error), true));\n}\n\nfunction render(markup: string): void {\n byId('view').innerHTML = markup;\n}\n\n/** Keeps the selected console area visible to sighted and assistive-technology users. */\nfunction setActiveNavigation(view: ConsoleView): void {\n document.querySelectorAll<HTMLElement>('#nav [data-view]').forEach((link) => {\n if (link.dataset.view === view) {\n link.setAttribute('aria-current', 'page');\n } else {\n link.removeAttribute('aria-current');\n }\n });\n}\n\n/** Returns the canonical browser path for a top-level console section. */\nfunction routePath(view: ConsoleView): string {\n return `${consoleBasePath}/${routeSegment[view]}`;\n}\n\n/** Resolves a console section from the current pathname, defaulting to users. */\nfunction viewFromLocation(): ConsoleView {\n const relativePath = window.location.pathname.slice(consoleBasePath.length).replace(/^\\/+|\\/+$/g, '');\n return routeView[decodeURIComponent(relativePath)] ?? 'users';\n}\n\n/** Navigates through the browser history and renders the requested SPA section. */\nasync function navigate(view: ConsoleView, replace = false): Promise<void> {\n const destination = routePath(view);\n if (window.location.pathname !== destination) {\n window.history[replace ? 'replaceState' : 'pushState']({ view }, '', destination);\n }\n await show(view);\n}\n\nfunction requireAdmin(): void {\n if (!currentUser?.flagSuper) throw new Error('La console richiede un superutente Accessi.');\n}\n\nfunction formValues(form: HTMLFormElement): Record<string, string> {\n return Object.fromEntries(new FormData(form).entries()) as Record<string, string>;\n}\n\nfunction eventForm(event: Event): HTMLFormElement {\n return event.currentTarget as HTMLFormElement;\n}\n\n/** Shared identity fields: values are verified by the hosting backend, never by this console. */\nfunction federatedIdentityFields(providers: FederatedProvider[]): string {\n return `<label>Provider<select name=\"provider\" required><option value=\"\">Seleziona un provider</option>${providers.filter((provider) => provider.active).map((provider) => `<option value=\"${escapeHtml(provider.provider)}\">${escapeHtml(provider.description)} (${escapeHtml(provider.provider)})</option>`).join('')}</select><span class=\"form-help\">Catalogo Accessi dei sistemi SSO disponibili. La chiave selezionata deve corrispondere alla configurazione del backend; per Azure deve distinguere tenant e ambiente.</span></label>\n <label>ID utente del provider (subject)<input name=\"subject\" required><span class=\"form-help\">Identifica in modo stabile la singola persona nel provider. Il backend lo estrae dopo la verifica: per esempio <code>oid</code> Azure, <code>sub</code> OpenID Connect/Google/Apple o <code>NameID</code> SAML persistente. È necessario perché il provider da solo non identifica l'utente. Non usare l'email: può cambiare.</span></label>\n <label>Nota<input name=\"note\"><span class=\"form-help\">Annotazione interna per gli amministratori. Non viene inviata al provider e non assegna autorizzazioni.</span></label>`;\n}\n\n/** Renders high-priority SSO identity management for one Accessi user. */\nfunction federatedIdentitySection(identities: ConsoleFederatedIdentity[], providers: FederatedProvider[]): string {\n return `<section class=\"user-editor-section sso-identity-section\" data-user-panel=\"sso\" role=\"tabpanel\" aria-labelledby=\"user-tab-sso\"><div class=\"section-heading\"><div><p class=\"eyebrow\">Autenticazione esterna</p><h3>Identità SSO</h3></div><span class=\"muted\">Collegamenti verificati dal backend</span></div><p class=\"form-help\">Ogni collegamento riconosce l'utente presso un provider. Disabilita conserva lo storico e blocca il login; elimina rimuove definitivamente il collegamento, senza eliminare l'utente Accessi.</p><div class=\"sso-identity-list\">${identities.map((identity) => `<article class=\"sso-identity-item ${identity.active ? '' : 'is-disabled'}\"><div class=\"sso-identity-data\"><strong>${escapeHtml(identity.provider)}</strong><dl class=\"entity-metadata\"><div><dt>Subject</dt><dd>${escapeHtml(identity.subject)}</dd></div><div><dt>Stato</dt><dd>${identity.active ? 'Abilitata' : 'Disabilitata'}</dd></div></dl>${identity.note ? `<p class=\"entity-note\"><strong>Nota</strong>${escapeHtml(identity.note)}</p>` : ''}</div><div class=\"sso-identity-actions\"><button type=\"button\" class=\"secondary\" data-identity-toggle=\"${escapeHtml(identity.identityKey)}\" data-active=\"${String(!identity.active)}\">${identity.active ? 'Disabilita' : 'Abilita'}</button><button type=\"button\" class=\"icon-button danger-button\" data-identity-delete=\"${escapeHtml(identity.identityKey)}\" aria-label=\"Elimina definitivamente il collegamento SSO ${escapeHtml(identity.provider)}\" title=\"Elimina definitivamente il collegamento SSO\"><span aria-hidden=\"true\">&#128465;</span></button></div></article>`).join('') || '<p class=\"muted\">Nessun collegamento SSO.</p>'}</div>${providers.some((provider) => provider.active) ? `<form id=\"link-sso\" class=\"sso-link-form\">${federatedIdentityFields(providers)}<button>Collega SSO verificato</button></form>` : '<p class=\"form-help\">Non ci sono provider SSO attivi. Censiscine uno nella sezione SSO prima di creare collegamenti.</p>'}</section>`;\n}\n\n/** Builds the tab list for user administration without coupling it to a framework router. */\nfunction userDetailTabs(hasSso: boolean): string {\n const tabs: Array<{ id: UserDetailTab; label: string }> = [\n ...(hasSso ? [{ id: 'sso' as const, label: 'Identità SSO' }] : []),\n { id: 'profile', label: 'Profilo e accesso' },\n { id: 'roles', label: 'Ruoli' },\n { id: 'grants', label: 'Grant diretti' },\n ];\n return `<div class=\"user-tabs\" role=\"tablist\" aria-label=\"Sezioni utente\">${tabs.map((tab) => `<button id=\"user-tab-${tab.id}\" type=\"button\" role=\"tab\" aria-controls=\"user-panel-${tab.id}\" data-user-tab=\"${tab.id}\">${tab.label}</button>`).join('')}</div>`;\n}\n\n/** Activates one user-management panel while keeping ARIA state in sync with the visible tab. */\nfunction activateUserTab(tab: UserDetailTab): void {\n document.querySelectorAll<HTMLButtonElement>('[data-user-tab]').forEach((button) => {\n const selected = button.dataset.userTab === tab;\n button.setAttribute('aria-selected', String(selected));\n button.tabIndex = selected ? 0 : -1;\n });\n document.querySelectorAll<HTMLElement>('[data-user-panel]').forEach((panel) => {\n const selected = panel.dataset.userPanel === tab;\n panel.hidden = !selected;\n // Keep form IDs stable: the save handlers bind to profile/roles/grants.\n if (!panel.id) panel.id = `user-panel-${panel.dataset.userPanel}`;\n document.querySelector(`[data-user-tab=\"${panel.dataset.userPanel}\"]`)?.setAttribute('aria-controls', panel.id);\n });\n}\n\nfunction selectedNumbers(form: HTMLFormElement, name: string): number[] {\n return Array.from(new FormData(form).getAll(name), (value) => Number(value));\n}\n\nasync function loadUsers(): Promise<UserRow[]> {\n return result(await getUsers({ includeGrants: true })) as UserRow[];\n}\n\nasync function detectFederatedAuthentication(): Promise<void> {\n if (!currentUser) return;\n try {\n await getFederatedIdentities(currentUser.codiceUtente);\n federatedAuthenticationAvailable = true;\n } catch {\n federatedAuthenticationAvailable = false;\n }\n}\n\nasync function loginView(event: SubmitEvent): Promise<void> {\n event.preventDefault();\n try {\n const values = formValues(event.currentTarget as HTMLFormElement);\n byId('login-error').textContent = '';\n const response = result<LoginResult>(await login({ email: values.email, password: values.password || undefined }));\n await completeLoginStep(response);\n } catch (error) {\n byId('login-error').textContent = error instanceof Error ? error.message : 'Login non riuscito.';\n }\n}\n\nlet pendingChallenge: string | null = null;\nlet resendTimer: ReturnType<typeof setInterval> | undefined;\n\nfunction resetLogin(): void {\n pendingChallenge = null;\n if (resendTimer) clearInterval(resendTimer);\n byId<HTMLFormElement>('login-form').reset();\n byId<HTMLFormElement>('two-factor-form').reset();\n byId('login-form').hidden = false;\n byId('two-factor-form').hidden = true;\n byId('password-field').hidden = true;\n byId('password-field').querySelector('input')!.disabled = true;\n byId('restart-login').hidden = true;\n byId('login-submit').textContent = 'Continua';\n byId('login-error').textContent = '';\n}\n\nfunction showTwoFactor(challenge: { challengeId: string; expiresAt?: string; resendAfterSeconds: number }): void {\n pendingChallenge = challenge.challengeId;\n byId('login-form').hidden = true;\n const password = byId('password-field').querySelector('input')!;\n password.value = '';\n password.disabled = true;\n byId('two-factor-form').hidden = false;\n byId('restart-login').hidden = false;\n byId<HTMLFormElement>('two-factor-form').reset();\n byId('two-factor-form').querySelector<HTMLInputElement>('input')!.focus();\n const expires = challenge.expiresAt ? new Date(challenge.expiresAt).toLocaleTimeString() : '';\n byId('two-factor-status').textContent = expires ? `Codice inviato. Scade alle ${expires}.` : 'Codice inviato. Controlla la tua email.';\n if (resendTimer) clearInterval(resendTimer);\n const availableAt = Date.now() + challenge.resendAfterSeconds * 1000;\n const update = () => {\n const seconds = Math.max(0, Math.ceil((availableAt - Date.now()) / 1000));\n const button = byId<HTMLButtonElement>('resend-code');\n button.disabled = seconds > 0;\n button.textContent = seconds ? `Reinvia tra ${seconds}s` : 'Invia un nuovo codice';\n if (!seconds && resendTimer) clearInterval(resendTimer);\n };\n update();\n resendTimer = setInterval(update, 1000);\n}\n\nasync function completeLoginStep(response: LoginResult): Promise<void> {\n if (response.challenge) {\n showTwoFactor(response.challenge);\n return;\n }\n if (response.passwordRequired) {\n byId('password-field').hidden = false;\n const input = byId('password-field').querySelector('input')!;\n input.disabled = false;\n input.required = true;\n input.focus();\n byId('restart-login').hidden = false;\n byId('login-submit').textContent = 'Accedi';\n return;\n }\n if (!response.token?.value) throw new Error('Risposta di autenticazione incompleta.');\n token = response.token.value;\n sessionStorage.setItem('accessi-console-token', token);\n setAccessiConsoleToken(token);\n resetLogin();\n await bootstrap();\n}\n\nasync function bootstrap(): Promise<void> {\n try {\n setAccessiConsoleToken(token);\n if (!token) throw new Error('Inserisci le credenziali amministrative.');\n const payload = result<AuthenticatedTokenPayloadDto>(await getUserByToken({ token }));\n currentUser = payload.userData;\n requireAdmin();\n await detectFederatedAuthentication();\n byId('login').hidden = true;\n byId('console').hidden = false;\n byId('who').textContent = `${currentUser.email} - superutente`;\n byId<HTMLButtonElement>('sso-navigation').hidden = !federatedAuthenticationAvailable;\n await navigate(viewFromLocation(), window.location.pathname === consoleBasePath);\n } catch (error) {\n token = null;\n currentUser = null;\n setAccessiConsoleToken(null);\n federatedAuthenticationAvailable = false;\n sessionStorage.removeItem('accessi-console-token');\n byId('login').hidden = false;\n byId('console').hidden = true;\n byId('login-error').textContent = error instanceof Error ? error.message : 'Sessione non valida.';\n }\n}\n\nasync function showUsers(): Promise<void> {\n const users = await loadUsers();\n render(`<div class=\"toolbar\"><button id=\"new-local\">Nuovo utente locale</button>${federatedAuthenticationAvailable ? '<button id=\"new-sso\">Nuovo utente SSO</button>' : ''}<button id=\"reload-users\" class=\"secondary\">Aggiorna</button></div>\n <h2>Utenti</h2><table><thead><tr><th>Utente</th><th>Stato</th><th>Accesso</th><th>2FA</th><th>Ruoli</th><th></th></tr></thead><tbody>\n ${users.map(({ utente, userGrants }) => `<tr><td>${escapeHtml(utente.email)}<br><span class=\"muted\">${escapeHtml(utente.nome)} ${escapeHtml(utente.cognome)}</span></td><td>${escapeHtml(utente.statoRegistrazione)}</td><td>${utente.passwordlessLoginEnabled ? 'codice email' : utente.passwordLoginEnabled === false ? 'solo SSO' : 'password'}</td><td>${utente.flagDueFattori ? 'Attiva' : 'Disattiva'}</td><td>${(userGrants?.ruoli ?? []).map((role) => role.codiceRuolo).join(', ')}</td><td><button data-user=\"${utente.codiceUtente}\">Gestisci</button></td></tr>`).join('')}\n </tbody></table>`);\n byId('new-local').onclick = () => showLocalUserForm();\n if (federatedAuthenticationAvailable) byId('new-sso').onclick = () => handleAction(showSsoUserForm);\n byId('reload-users').onclick = () => handleAction(() => show('users'));\n document.querySelectorAll<HTMLButtonElement>('[data-user]').forEach((button) => {\n button.onclick = () => handleAction(() => showUser(button.dataset.user ?? ''));\n });\n}\n\nfunction authenticationPolicyFields(user: UserDto): string {\n return `<fieldset><legend>Verifica dell'accesso (opzionale)</legend>\n <label class=\"check\"><input name=\"flagDueFattori\" type=\"checkbox\" ${user.flagDueFattori ? 'checked' : ''}> Richiedi un codice via email (2FA)</label>\n <p class=\"form-help\">Disattiva per impostazione predefinita. Se attiva, il codice viene richiesto dopo la password o dopo l'accesso SSO.</p>\n <label class=\"check\"><input name=\"passwordlessLoginEnabled\" type=\"checkbox\" ${user.passwordlessLoginEnabled ? 'checked' : ''} ${user.flagDueFattori ? '' : 'disabled'}> Consenti accesso con il solo codice email</label>\n <p class=\"form-help\">Permette di accedere senza password. Richiede il codice email attivo; i collegamenti SSO restano disponibili. Questo accesso usa il solo possesso della casella email.</p>\n </fieldset>`;\n}\n\nfunction showLocalUserForm(): void {\n render(`<button id=\"back\">Indietro</button><h2>Nuovo utente locale</h2><p class=\"muted\">Viene inviata l'e-mail per impostare la password.</p>\n <form id=\"local-user\"><label>Email<input name=\"email\" type=\"email\" required><span class=\"form-help\">Sarà l'identificativo di accesso dell'utente e riceverà il messaggio per impostare la password.</span></label><label>Nome<input name=\"nome\"></label><label>Cognome<input name=\"cognome\"></label><button>Crea utente</button></form>`);\n byId('back').onclick = () => show('users');\n const localUserForm = document.getElementById('local-user') as HTMLFormElement | null;\n if (localUserForm) localUserForm.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n await createManagedUser(formValues(eventForm(event)) as unknown as RegisterRequest);\n showNotice('Utente creato; inviata la procedura di impostazione password.');\n await show('users');\n });\n };\n}\n\nasync function showSsoUserForm(): Promise<void> {\n const providers = result<FederatedProvider[]>(await getFederatedProviders());\n if (!providers.some((provider) => provider.active)) {\n throw new Error('Prima di creare un utente SSO, censisci e abilita almeno un provider SSO.');\n }\n render(`<button id=\"back\">Indietro</button><h2>Nuovo utente SSO</h2><p class=\"muted\">La console salva solo un collegamento già verificato dal backend; non accetta e non verifica token esterni.</p>\n <form id=\"sso-user\"><label>Email<input name=\"email\" type=\"email\" required><span class=\"form-help\">Email di contatto e identificativo Accessi dell'utente.</span></label><label>Nome<input name=\"nome\"></label><label>Cognome<input name=\"cognome\"></label>${federatedIdentityFields(providers)}<label class=\"check\"><input name=\"passwordLoginEnabled\" type=\"checkbox\"> Abilita anche la password locale</label><span class=\"form-help\">Se non selezionato, l'utente accederà esclusivamente con una delle identità SSO attive.</span><button>Crea utente SSO</button></form>`);\n byId('back').onclick = () => show('users');\n const ssoUserForm = document.getElementById('sso-user') as HTMLFormElement | null;\n if (ssoUserForm) ssoUserForm.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const form = eventForm(event);\n const values = formValues(form);\n const request: CreateFederatedUserRequest = {\n provider: values.provider,\n subject: values.subject,\n note: values.note || undefined,\n passwordLoginEnabled: new FormData(form).has('passwordLoginEnabled'),\n user: { email: values.email, nome: values.nome || undefined, cognome: values.cognome || undefined },\n };\n await createFederatedUser(request);\n showNotice('Utente SSO creato e collegamento registrato.');\n await show('users');\n });\n };\n}\n\nasync function showSso(): Promise<void> {\n if (!federatedAuthenticationAvailable) throw new Error('SSO non è abilitato in questa istanza Accessi.');\n const [users, providers] = await Promise.all([loadUsers(), getFederatedProviders()]);\n const providerList = result<FederatedProvider[]>(providers);\n render(`<div class=\"toolbar\"><button id=\"new-sso\">Nuovo utente SSO</button><button id=\"new-provider\" class=\"secondary\">Nuovo provider</button></div><h2>Configurazione SSO</h2><p class=\"muted\">Il catalogo definisce le chiavi provider ammesse da Accessi. La validazione dei token, issuer, audience e segreti restano nel backend.</p><h3>Provider censiti</h3><table><thead><tr><th>Provider</th><th>Descrizione</th><th>Stato</th><th></th></tr></thead><tbody>${providerList.map((provider) => `<tr><td><code>${escapeHtml(provider.provider)}</code></td><td>${escapeHtml(provider.description)}</td><td>${provider.active ? 'Attivo' : 'Disabilitato'}</td><td><button data-provider=\"${escapeHtml(provider.provider)}\">Gestisci</button></td></tr>`).join('') || '<tr><td colspan=\"4\">Nessun provider censito.</td></tr>'}</tbody></table><h3>Utenti e identità</h3><table><thead><tr><th>Utente</th><th>Identità collegate</th><th></th></tr></thead><tbody>${users.map(({ utente }) => `<tr><td>${escapeHtml(utente.email)}</td><td>${utente.passwordLoginEnabled === false ? 'solo SSO' : 'password e SSO'}</td><td><button data-sso-user=\"${utente.codiceUtente}\">Gestisci identità</button></td></tr>`).join('')}</tbody></table>`);\n byId('new-sso').onclick = () => handleAction(showSsoUserForm);\n byId('new-provider').onclick = () => showProviderForm();\n document.querySelectorAll<HTMLButtonElement>('[data-provider]').forEach((button) => {\n button.onclick = () => showProviderForm(providerList.find((provider) => provider.provider === button.dataset.provider));\n });\n document.querySelectorAll<HTMLButtonElement>('[data-sso-user]').forEach((button) => {\n button.onclick = () => handleAction(() => showUser(button.dataset.ssoUser ?? ''));\n });\n}\n\n/** Creates or updates catalog metadata; the provider key is immutable once identities reference it. */\nfunction showProviderForm(provider?: FederatedProvider): void {\n const isExisting = provider !== undefined;\n render(`<button id=\"back\" type=\"button\">Indietro</button><div class=\"page-header\"><div><p class=\"eyebrow\">Catalogo SSO</p><h2>${isExisting ? 'Gestisci provider' : 'Nuovo provider'}</h2></div><span class=\"muted\">Le configurazioni tecniche restano nel backend</span></div><form id=\"provider-form\"><label>Chiave provider<input name=\"provider\" value=\"${escapeHtml(provider?.provider)}\" ${isExisting ? 'readonly' : ''} required><span class=\"form-help\">Chiave stabile usata dal backend nel payload SSO. Per Azure includi tenant e ambiente, ad esempio <code>azure-ad-acme-produzione</code>. Non è modificabile dopo il censimento.</span></label><label>Descrizione<input name=\"description\" value=\"${escapeHtml(provider?.description)}\" required><span class=\"form-help\">Nome leggibile per gli amministratori della console.</span></label><label>Nota<input name=\"note\" value=\"${escapeHtml(provider?.note)}\"><span class=\"form-help\">Annotazione interna. Non inserire segreti, issuer, token o dati personali non necessari.</span></label>${isExisting ? `<label class=\"check\"><input name=\"active\" type=\"checkbox\" ${provider.active ? 'checked' : ''}> Provider attivo</label><span class=\"form-help\">Disabilitare il provider blocca nuovi login SSO e nuovi collegamenti, ma conserva lo storico delle identità.</span>` : ''}<button>${isExisting ? 'Salva provider' : 'Censisci provider'}</button></form>`);\n byId('back').onclick = () => show('sso');\n const providerForm = document.getElementById('provider-form') as HTMLFormElement | null;\n if (providerForm) providerForm.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const form = eventForm(event);\n const values = formValues(form);\n if (provider) {\n const request: UpdateFederatedProviderRequest = {\n description: values.description,\n note: values.note || undefined,\n active: new FormData(form).has('active'),\n };\n await updateFederatedProvider(provider.provider, request);\n } else {\n const request: CreateFederatedProviderRequest = {\n provider: values.provider,\n description: values.description,\n note: values.note || undefined,\n };\n await createFederatedProvider(request);\n }\n showNotice(isExisting ? 'Provider SSO aggiornato.' : 'Provider SSO censito.');\n await show('sso');\n });\n };\n}\n\nasync function showUser(rawCode: string): Promise<void> {\n const codiceUtente = Number(rawCode);\n const [users, roles, grants, groups, providers] = await Promise.all([\n getUsers({ codiceUtente, includeGrants: true }),\n getRoles(),\n getUserRolesAndGrants(codiceUtente),\n getGroupsWithMenus({ includeDisabled: true }),\n federatedAuthenticationAvailable ? getFederatedProviders() : Promise.resolve(null),\n ]);\n const user = (result(users) as UserRow[])[0].utente;\n const allRoles = result(roles) as Role[];\n const userGrants = result(grants) as { ruoli?: Array<{ codiceRuolo?: number }>; abilitazioni?: Permission[] };\n const menuGroups = result(groups) as GroupWithMenusEntity[];\n const providerList = providers ? result<FederatedProvider[]>(providers) : [];\n const linked = federatedAuthenticationAvailable\n ? result<ConsoleFederatedIdentity[]>(await getFederatedIdentities(codiceUtente))\n : [];\n const identitySection = federatedAuthenticationAvailable ? federatedIdentitySection(linked, providerList) : '';\n const defaultUserTab: UserDetailTab = federatedAuthenticationAvailable ? 'sso' : 'profile';\n render(`<div class=\"user-action-bar\"><button id=\"back\" type=\"button\" class=\"secondary\">Indietro</button><button id=\"disable-user\" type=\"button\" class=\"danger-button\">Imposta stato eliminato</button></div><div class=\"page-header\"><div><p class=\"eyebrow\">Utente ${codiceUtente}</p><h2>${escapeHtml(user.email)}</h2></div><span class=\"muted\">Gestione profilo, ruoli e autorizzazioni</span></div>${userDetailTabs(federatedAuthenticationAvailable)}<div class=\"user-editor\">\n ${identitySection}\n <form id=\"profile\" data-user-panel=\"profile\" role=\"tabpanel\" aria-labelledby=\"user-tab-profile\"><h3>Profilo e accesso</h3><label>Nome<input name=\"nome\" value=\"${escapeHtml(user.nome)}\"></label><label>Cognome<input name=\"cognome\" value=\"${escapeHtml(user.cognome)}\"></label><label>Email<input name=\"email\" type=\"email\" value=\"${escapeHtml(user.email)}\" required><span class=\"form-help\">Identificativo di accesso locale e recapito per le comunicazioni Accessi.</span></label>${federatedAuthenticationAvailable ? `<label class=\"check\"><input name=\"passwordLoginEnabled\" type=\"checkbox\" ${user.passwordLoginEnabled !== false ? 'checked' : ''}> Login con password</label><span class=\"form-help\">Se disabilitato, il login con email e password restituisce un errore esplicito; restano valide le identità SSO attive.</span>` : ''}${authenticationPolicyFields(user)}<button>Salva</button></form>\n ${roleAssignmentEditor(allRoles, userGrants.ruoli, menuGroups)}\n ${directGrantEditor(menuGroups, userGrants.abilitazioni)}\n </div>`);\n byId('back').onclick = () => show('users');\n const userTabButtons = Array.from(document.querySelectorAll<HTMLButtonElement>('[data-user-tab]'));\n userTabButtons.forEach((button, index) => {\n button.onclick = () => activateUserTab(button.dataset.userTab as UserDetailTab);\n button.onkeydown = (event) => {\n const targetIndex = event.key === 'ArrowRight' ? (index + 1) % userTabButtons.length\n : event.key === 'ArrowLeft' ? (index - 1 + userTabButtons.length) % userTabButtons.length\n : event.key === 'Home' ? 0 : event.key === 'End' ? userTabButtons.length - 1 : -1;\n if (targetIndex < 0) return;\n event.preventDefault();\n userTabButtons[targetIndex].focus();\n activateUserTab(userTabButtons[targetIndex].dataset.userTab as UserDetailTab);\n };\n });\n activateUserTab(defaultUserTab);\n const profileForm = document.getElementById('profile') as HTMLFormElement | null;\n if (profileForm) {\n const twoFactor = profileForm.elements.namedItem('flagDueFattori') as HTMLInputElement;\n const passwordless = profileForm.elements.namedItem('passwordlessLoginEnabled') as HTMLInputElement;\n twoFactor.onchange = () => {\n passwordless.disabled = !twoFactor.checked;\n if (!twoFactor.checked) passwordless.checked = false;\n };\n profileForm.onsubmit = event => {\n event.preventDefault();\n handleAction(async () => {\n const values = formValues(eventForm(event));\n const fields = new FormData(eventForm(event));\n await updateUtente(codiceUtente, {\n codiceUtente, email: values.email, nome: values.nome || undefined, cognome: values.cognome || undefined,\n flagDueFattori: fields.has('flagDueFattori'),\n passwordlessLoginEnabled: fields.has('passwordlessLoginEnabled'),\n ...(federatedAuthenticationAvailable ? { passwordLoginEnabled: fields.has('passwordLoginEnabled') } : {}),\n });\n if (codiceUtente === currentUser?.codiceUtente && (\n fields.has('flagDueFattori') !== Boolean(user.flagDueFattori) ||\n fields.has('passwordlessLoginEnabled') !== Boolean(user.passwordlessLoginEnabled)\n )) {\n token = null;\n sessionStorage.removeItem('accessi-console-token');\n setAccessiConsoleToken(null);\n resetLogin();\n await bootstrap();\n byId('login-error').textContent = 'Policy aggiornata. Accedi di nuovo con la nuova configurazione.';\n return;\n }\n await showUser(String(codiceUtente));\n activateUserTab('profile');\n showNotice('Profilo e policy aggiornati.');\n });\n };\n }\n\n const rolesForm = document.getElementById('roles') as HTMLFormElement | null;\n if (rolesForm) rolesForm.onsubmit = (event) => { event.preventDefault(); handleAction(async () => { await assignRolesToUser(codiceUtente, { roles: selectedNumbers(eventForm(event), 'role') }); showNotice('Ruoli aggiornati.'); }); };\n const grantsForm = document.getElementById('grants') as HTMLFormElement | null;\n if (grantsForm) grantsForm.onsubmit = (event) => { event.preventDefault(); handleAction(async () => { const permissions: Permission[] = []; new FormData(eventForm(event)).forEach((value, key) => { if (key.startsWith('grant:') && value) permissions.push({ codiceMenu: key.slice(6), tipoAbilitazione: Number(value) }); }); await assignPermissionsToUser(codiceUtente, { permissions }); showNotice('Grant aggiornati.'); }); };\n if (federatedAuthenticationAvailable) {\n const linkForm = document.getElementById('link-sso') as HTMLFormElement | null;\n if (linkForm) linkForm.onsubmit = (event) => { event.preventDefault(); handleAction(async () => { const values = formValues(eventForm(event)); await linkFederatedIdentity(codiceUtente, { provider: values.provider, subject: values.subject, note: values.note || undefined }); await showUser(String(codiceUtente)); }); };\n document.querySelectorAll<HTMLButtonElement>('[data-identity-toggle]').forEach((button) => { button.onclick = () => handleAction(async () => { await updateFederatedIdentity(button.dataset.identityToggle ?? '', { active: button.dataset.active === 'true' }); await showUser(String(codiceUtente)); }); });\n document.querySelectorAll<HTMLButtonElement>('[data-identity-delete]').forEach((button) => { button.onclick = () => handleAction(async () => { if (!window.confirm('Eliminare definitivamente questo collegamento SSO? L’utente Accessi non verrà eliminato.')) return; await deleteFederatedIdentityPermanently(codiceUtente, button.dataset.identityDelete ?? ''); showNotice('Collegamento SSO eliminato definitivamente.'); await showUser(String(codiceUtente)); }); });\n }\n byId('disable-user').onclick = () => handleAction(async () => { await deleteUser(codiceUtente); showNotice('Utente impostato come eliminato.'); await show('users'); });\n}\n\nasync function showRoles(): Promise<void> {\n const [rolesResponse, groupsResponse] = await Promise.all([getRoles(), getGroupsWithMenus({ includeDisabled: true })]);\n const roles = result(rolesResponse) as Role[];\n const groups = result(groupsResponse) as GroupWithMenusEntity[];\n render(`<div class=\"toolbar\"><button id=\"new-role\">Nuovo ruolo</button></div><h2>Ruoli e grant</h2><p class=\"form-help\">Panoramica completa dei menu inclusi in ogni ruolo. Il livello indica l'abilitazione assegnata dal ruolo per quello specifico menu.</p><div class=\"role-overview-list\">${roles.map((role) => roleOverview(role, groups)).join('') || '<p class=\"muted\">Nessun ruolo configurato.</p>'}</div>`);\n const roleForm = (role?: Role) => {\n render(`<button id=\"back\" type=\"button\">Indietro</button><h2>${role ? 'Modifica' : 'Nuovo'} ruolo</h2><form id=\"role-form\"><label>Descrizione<input name=\"descrizione\" value=\"${escapeHtml(role?.descrizioneRuolo)}\" required><span class=\"form-help\">Nome mostrato agli amministratori per identificare questo insieme di autorizzazioni.</span></label><p class=\"form-help\">Ogni gruppo presenta una riga per menu. Seleziona i menu da includere e imposta il livello di abilitazione. Il salvataggio sostituisce integralmente la configurazione corrente del ruolo.</p><div class=\"role-menu-groups\">${groups.map((group) => roleMenuEditorTable(group, role)).join('')}</div><button>Salva ruolo</button></form>`);\n byId('back').onclick = () => show('roles');\n document.querySelectorAll<HTMLInputElement>('#role-form input[name=\"menu\"]').forEach((checkbox) => {\n checkbox.onchange = () => {\n const row = checkbox.closest('tr');\n const status = checkbox.parentElement?.querySelector('span');\n const level = row?.querySelector<HTMLSelectElement>('select[name^=\"menu-level:\"]');\n if (status) status.textContent = checkbox.checked ? 'Incluso' : 'Escluso';\n if (level) level.disabled = !checkbox.checked;\n };\n });\n const roleFormElement = document.getElementById('role-form') as HTMLFormElement | null;\n if (roleFormElement) roleFormElement.onsubmit = async (event) => { event.preventDefault(); const form = eventForm(event); const data = new FormData(form); const request: Role = { descrizioneRuolo: formValues(form).descrizione, menu: Array.from(data.getAll('menu'), (codiceMenu) => ({ codiceMenu: String(codiceMenu), tipoAbilitazione: Number(data.get(`menu-level:${codiceMenu}`) ?? 10) as Role['menu'][number]['tipoAbilitazione'] })) }; if (role?.codiceRuolo) await updateRole(role.codiceRuolo, request); else await createRole(request); await show('roles'); };\n };\n byId('new-role').onclick = () => roleForm();\n document.querySelectorAll<HTMLButtonElement>('[data-role]').forEach((button) => button.onclick = () => roleForm(roles.find((role) => role.codiceRuolo === Number(button.dataset.role))));\n}\n\nasync function showMenus(): Promise<void> {\n const groups = result(await getGroupsWithMenus({ includeDisabled: true })) as GroupWithMenusEntity[];\n render(`<h2>Menu e gruppi</h2><p class=\"form-help\">Attiva o disattiva gruppi e menu. Ogni riga riporta i dati necessari per individuare l'uso tecnico del menu.</p><div class=\"menu-group-list\">${groups.map(menuGroupTable).join('')}</div>`);\n document.querySelectorAll<HTMLInputElement>('[data-group]').forEach((input) => input.onchange = async () => { await setGroupEnabled(input.dataset.group ?? '', { enabled: input.checked }); showNotice('Gruppo aggiornato.'); });\n document.querySelectorAll<HTMLInputElement>('[data-menu]').forEach((input) => input.onchange = async () => { await setMenuEnabled(input.dataset.menu ?? '', { enabled: input.checked }); showNotice('Menu aggiornato.'); });\n}\n\nasync function showFilters(): Promise<void> {\n const users = await loadUsers();\n render(`<h2>Filtri utente</h2><form id=\"filters\"><label>Utente<select name=\"codUte\">${users.map(({ utente }) => `<option value=\"${utente.codiceUtente}\">${escapeHtml(utente.email)}</option>`).join('')}</select><span class=\"form-help\">I filtri vengono letti e salvati esclusivamente per l'utente selezionato.</span></label><label>Filtro JSON<textarea name=\"json\" rows=\"12\">{}</textarea><span class=\"form-help\">Configurazione tecnica del filtro. Usa Carica per partire dalla struttura esistente e mantieni il JSON valido prima di salvare.</span></label><button name=\"action\" value=\"load\">Carica</button><button name=\"action\" value=\"save\">Salva</button></form>`);\n const filtersForm = document.getElementById('filters') as HTMLFormElement | null;\n if (filtersForm) filtersForm.onsubmit = async (event) => { event.preventDefault(); const form = eventForm(event); const action = (event.submitter as HTMLButtonElement | null)?.value; const code = Number(formValues(form).codUte); if (action === 'load') { const filters = result<FiltriUtente[]>(await getFiltriUtente({ codUte: code })); (form.elements.namedItem('json') as HTMLTextAreaElement).value = JSON.stringify(filters[0] ?? { codUte: code }, null, 2); } else { const parsed = JSON.parse(formValues(form).json) as Omit<FiltriUtente, 'codUte'>; await saveFiltriUtente({ ...parsed, codUte: code }); showNotice('Filtri salvati.'); } };\n}\n\nasync function show(view: ConsoleView): Promise<void> {\n try {\n showNotice('');\n const views: Record<string, () => Promise<void>> = { users: showUsers, roles: showRoles, menus: showMenus, filters: showFilters, sso: showSso };\n setActiveNavigation(view);\n await views[view]();\n } catch (error) {\n render('');\n showNotice(error instanceof Error ? error.message : 'Operazione non riuscita.', true);\n }\n}\n\nconst loginForm = document.getElementById('login-form') as HTMLFormElement | null;\nif (loginForm) loginForm.onsubmit = loginView;\nbyId('restart-login').onclick = resetLogin;\nbyId<HTMLFormElement>('two-factor-form').onsubmit = async event => {\n event.preventDefault();\n if (!pendingChallenge) return;\n try {\n byId('login-error').textContent = '';\n const values = formValues(event.currentTarget as HTMLFormElement);\n await completeLoginStep(result<LoginResult>(await verifyTwoFactor({ challengeId: pendingChallenge, code: values.code })));\n } catch (error) {\n byId('login-error').textContent = error instanceof Error ? error.message : 'Verifica non riuscita.';\n }\n};\nbyId('resend-code').onclick = async () => {\n if (!pendingChallenge) return;\n try {\n byId('login-error').textContent = '';\n await completeLoginStep(result<LoginResult>(await resendTwoFactor({ challengeId: pendingChallenge })));\n } catch (error) {\n byId('login-error').textContent = error instanceof Error ? error.message : 'Reinvio non riuscito.';\n }\n};\nbyId('logout').onclick = () => {\n resetLogin();\n token = null;\n currentUser = null;\n setAccessiConsoleToken(null);\n sessionStorage.removeItem('accessi-console-token');\n window.history.replaceState(null, '', consoleBasePath);\n void bootstrap();\n};\nbyId('nav').onclick = (event) => {\n const link = (event.target as HTMLElement).closest<HTMLAnchorElement>('a[data-view]');\n if (!link) return;\n event.preventDefault();\n handleAction(() => navigate(link.dataset.view as ConsoleView));\n};\nwindow.addEventListener('popstate', () => {\n if (token && currentUser) handleAction(() => show(viewFromLocation()));\n});\nwindow.addEventListener('accessi-console-network', (event: Event) => {\n updateLoadingState((event as CustomEvent<{ active: boolean }>).detail.active);\n});\n// Optional handoff from the hosting backend after its SSO callback. The fragment\n// contains only an opaque challenge id, never an access token or provider token.\nconst ssoChallenge = /^#two-factor=([a-f0-9]{64})$/.exec(window.location.hash)?.[1];\nif (ssoChallenge) {\n token = null;\n setAccessiConsoleToken(null);\n sessionStorage.removeItem('accessi-console-token');\n window.history.replaceState(null, '', window.location.pathname);\n showTwoFactor({ challengeId: ssoChallenge, resendAfterSeconds: 60 });\n} else if (token) void bootstrap();\n"]}
@@ -0,0 +1,376 @@
1
+ /**
2
+ * Generated by orval v6.31.0 🍺
3
+ * Do not edit manually.
4
+ * Accessi API
5
+ * OpenAPI spec version: 1.0
6
+ */
7
+ import type { ActionResponse, AssignPermissionsToUserRequest, AssignRolesToUserRequest, ConfirmResetPasswordRequest, CreateFederatedIdentityRequest, CreateFederatedProviderRequest, CreateFederatedUserRequest, FederatedIdentityListResponse, FederatedIdentityResponse, FederatedProviderListResponse, FederatedProviderResponse, FiltriUtente, GetFiltriResponse, GetFiltriUtenteParams, GetFiltriUtenteResponse, GetGroupsWithMenusParams, GetGroupsWithMenusResponse, GetMenusResponse, GetRolesResponse, GetUserByTokenRequest, GetUserByTokenResponse, GetUsersParams, GetUsersResponse, LoginRequest, LoginResponse, PublicRegisterRequest, RegisterRequest, RegisterResponse, ResendTwoFactorRequest, Role, SendResetPasswordEmailRequest, ServeResetPasswordPageParams, SetPasswordLoginPolicyRequest, SetStatoRegistrazioneDto, UpdateEnabledStatusRequest, UpdateFederatedIdentityRequest, UpdateFederatedProviderRequest, UserDto, UserGrantsResponse, VerifyTwoFactorRequest } from './model';
8
+ /**
9
+ * @summary Serve una pagina per il reset della password
10
+ */
11
+ export type serveResetPasswordPageResponse = {
12
+ data: void;
13
+ status: number;
14
+ };
15
+ export declare const getServeResetPasswordPageUrl: (token: string, params?: ServeResetPasswordPageParams) => string;
16
+ export declare const serveResetPasswordPage: (token: string, params?: ServeResetPasswordPageParams, options?: RequestInit) => Promise<serveResetPasswordPageResponse>;
17
+ /**
18
+ * @summary Invia una e-mail per il reset della password
19
+ */
20
+ export type sendPasswordResetEmailResponse = {
21
+ data: ActionResponse;
22
+ status: number;
23
+ };
24
+ export declare const getSendPasswordResetEmailUrl: () => string;
25
+ export declare const sendPasswordResetEmail: (sendResetPasswordEmailRequest: SendResetPasswordEmailRequest, options?: RequestInit) => Promise<sendPasswordResetEmailResponse>;
26
+ /**
27
+ * @summary Conferma il reset della password
28
+ */
29
+ export type resetPasswordResponse = {
30
+ data: ActionResponse;
31
+ status: number;
32
+ };
33
+ export declare const getResetPasswordUrl: (token: string) => string;
34
+ export declare const resetPassword: (token: string, confirmResetPasswordRequest: ConfirmResetPasswordRequest, options?: RequestInit) => Promise<resetPasswordResponse>;
35
+ /**
36
+ * @summary Recupera le informazioni utente dal token JWT
37
+ */
38
+ export type getUserByTokenResponse = {
39
+ data: GetUserByTokenResponse;
40
+ status: number;
41
+ };
42
+ export declare const getGetUserByTokenUrl: () => string;
43
+ export declare const getUserByToken: (getUserByTokenRequest: GetUserByTokenRequest, options?: RequestInit) => Promise<getUserByTokenResponse>;
44
+ /**
45
+ * Con sola email restituisce passwordRequired oppure avvia il codice per utenti passwordless. Con password valida restituisce il login completo o challenge se la 2FA e attiva. Nessun JWT viene emesso prima della verifica del codice.
46
+ * @summary Effettua il login utente
47
+ */
48
+ export type loginResponse = {
49
+ data: LoginResponse;
50
+ status: number;
51
+ };
52
+ export declare const getLoginUrl: () => string;
53
+ export declare const login: (loginRequest: LoginRequest, options?: RequestInit) => Promise<loginResponse>;
54
+ /**
55
+ * @summary Verifica il codice e completa il login
56
+ */
57
+ export type verifyTwoFactorResponse = {
58
+ data: LoginResponse;
59
+ status: number;
60
+ };
61
+ export declare const getVerifyTwoFactorUrl: () => string;
62
+ export declare const verifyTwoFactor: (verifyTwoFactorRequest: VerifyTwoFactorRequest, options?: RequestInit) => Promise<verifyTwoFactorResponse>;
63
+ /**
64
+ * @summary Reinvia il codice, invalidando il precedente
65
+ */
66
+ export type resendTwoFactorResponse = {
67
+ data: LoginResponse;
68
+ status: number;
69
+ };
70
+ export declare const getResendTwoFactorUrl: () => string;
71
+ export declare const resendTwoFactor: (resendTwoFactorRequest: ResendTwoFactorRequest, options?: RequestInit) => Promise<resendTwoFactorResponse>;
72
+ /**
73
+ * Recupera tutti i ruoli presenti nel sistema con le relative voci di menu.
74
+ * @summary Ritorna i ruoli disponibili con i relativi menu
75
+ */
76
+ export type getRolesResponse = {
77
+ data: GetRolesResponse;
78
+ status: number;
79
+ };
80
+ export declare const getGetRolesUrl: () => string;
81
+ export declare const getRoles: (options?: RequestInit) => Promise<getRolesResponse>;
82
+ /**
83
+ * @summary Aggiorna un ruolo esistente
84
+ */
85
+ export type updateRoleResponse = {
86
+ data: ActionResponse;
87
+ status: number;
88
+ };
89
+ export declare const getUpdateRoleUrl: (codiceRuolo: number) => string;
90
+ export declare const updateRole: (codiceRuolo: number, role: Role, options?: RequestInit) => Promise<updateRoleResponse>;
91
+ /**
92
+ * @summary Crea un nuovo ruolo
93
+ */
94
+ export type createRoleResponse = {
95
+ data: ActionResponse;
96
+ status: number;
97
+ };
98
+ export declare const getCreateRoleUrl: () => string;
99
+ export declare const createRole: (role: Role, options?: RequestInit) => Promise<createRoleResponse>;
100
+ /**
101
+ * @summary Assegna piu ruoli a un utente
102
+ */
103
+ export type assignRolesToUserResponse = {
104
+ data: ActionResponse;
105
+ status: number;
106
+ };
107
+ export declare const getAssignRolesToUserUrl: (codiceUtente: number) => string;
108
+ export declare const assignRolesToUser: (codiceUtente: number, assignRolesToUserRequest: AssignRolesToUserRequest, options?: RequestInit) => Promise<assignRolesToUserResponse>;
109
+ /**
110
+ * @summary Assegna abilitazioni dirette a un utente
111
+ */
112
+ export type assignPermissionsToUserResponse = {
113
+ data: ActionResponse;
114
+ status: number;
115
+ };
116
+ export declare const getAssignPermissionsToUserUrl: (codiceUtente: number) => string;
117
+ export declare const assignPermissionsToUser: (codiceUtente: number, assignPermissionsToUserRequest: AssignPermissionsToUserRequest, options?: RequestInit) => Promise<assignPermissionsToUserResponse>;
118
+ /**
119
+ * @summary Elimina un ruolo esistente
120
+ */
121
+ export type deleteRoleResponse = {
122
+ data: ActionResponse;
123
+ status: number;
124
+ };
125
+ export declare const getDeleteRoleUrl: (codiceRuolo: number) => string;
126
+ export declare const deleteRole: (codiceRuolo: number, options?: RequestInit) => Promise<deleteRoleResponse>;
127
+ /**
128
+ * @summary Recupera tutti i menu disponibili
129
+ */
130
+ export type getMenusResponse = {
131
+ data: GetMenusResponse;
132
+ status: number;
133
+ };
134
+ export declare const getGetMenusUrl: () => string;
135
+ export declare const getMenus: (options?: RequestInit) => Promise<getMenusResponse>;
136
+ /**
137
+ * @summary Recupera tutti i gruppi disponibili con i relativi menu
138
+ */
139
+ export type getGroupsWithMenusResponse = {
140
+ data: GetGroupsWithMenusResponse;
141
+ status: number;
142
+ };
143
+ export declare const getGetGroupsWithMenusUrl: (params?: GetGroupsWithMenusParams) => string;
144
+ export declare const getGroupsWithMenus: (params?: GetGroupsWithMenusParams, options?: RequestInit) => Promise<getGroupsWithMenusResponse>;
145
+ /**
146
+ * @summary Recupera i ruoli e i menu di un utente
147
+ */
148
+ export type getUserRolesAndGrantsResponse = {
149
+ data: UserGrantsResponse;
150
+ status: number;
151
+ };
152
+ export declare const getGetUserRolesAndGrantsUrl: (codiceUtente: number) => string;
153
+ export declare const getUserRolesAndGrants: (codiceUtente: number, options?: RequestInit) => Promise<getUserRolesAndGrantsResponse>;
154
+ /**
155
+ * @summary Serve la pagina di reset password
156
+ */
157
+ export type serveResetPasswordPageUserResponse = {
158
+ data: void;
159
+ status: number;
160
+ };
161
+ export declare const getServeResetPasswordPageUserUrl: (token: string) => string;
162
+ export declare const serveResetPasswordPageUser: (token: string, options?: RequestInit) => Promise<serveResetPasswordPageUserResponse>;
163
+ /**
164
+ * @summary Recupera la lista degli utenti
165
+ */
166
+ export type getUsersResponse = {
167
+ data: GetUsersResponse;
168
+ status: number;
169
+ };
170
+ export declare const getGetUsersUrl: (params?: GetUsersParams) => string;
171
+ export declare const getUsers: (params?: GetUsersParams, options?: RequestInit) => Promise<getUsersResponse>;
172
+ /**
173
+ * Imposta lo stato di un utente a eliminato senza rimuovere i record.
174
+ * @summary Elimina un utente
175
+ */
176
+ export type deleteUserResponse = {
177
+ data: ActionResponse;
178
+ status: number;
179
+ };
180
+ export declare const getDeleteUserUrl: (codiceUtente: number) => string;
181
+ export declare const deleteUser: (codiceUtente: number, options?: RequestInit) => Promise<deleteUserResponse>;
182
+ /**
183
+ * @summary Imposta lo stato di registrazione di un utente
184
+ */
185
+ export type setStatoRegistrazioneResponse = {
186
+ data: ActionResponse;
187
+ status: number;
188
+ };
189
+ export declare const getSetStatoRegistrazioneUrl: () => string;
190
+ export declare const setStatoRegistrazione: (setStatoRegistrazioneDto: SetStatoRegistrazioneDto, options?: RequestInit) => Promise<setStatoRegistrazioneResponse>;
191
+ /**
192
+ * Disponibile soltanto quando publicRegistration.enabled e true. Per utenti SSO usare il provisioning master nel tag Federated authentication.
193
+ * @summary Registra un nuovo utente
194
+ */
195
+ export type registerResponse = {
196
+ data: RegisterResponse;
197
+ status: number;
198
+ };
199
+ export declare const getRegisterUrl: () => string;
200
+ export declare const register: (publicRegisterRequest: PublicRegisterRequest, options?: RequestInit) => Promise<registerResponse>;
201
+ /**
202
+ * Riservato a superutente. Crea un utente in attesa di impostazione password e invia la mail di reset.
203
+ * @summary Crea un utente locale da amministrazione
204
+ */
205
+ export type createManagedUserResponse = {
206
+ data: RegisterResponse;
207
+ status: number;
208
+ };
209
+ export declare const getCreateManagedUserUrl: () => string;
210
+ export declare const createManagedUser: (registerRequest: RegisterRequest, options?: RequestInit) => Promise<createManagedUserResponse>;
211
+ /**
212
+ * @summary Aggiorna un utente esistente
213
+ */
214
+ export type updateUtenteResponse = {
215
+ data: ActionResponse;
216
+ status: number;
217
+ };
218
+ export declare const getUpdateUtenteUrl: (codiceUtente: number) => string;
219
+ export declare const updateUtente: (codiceUtente: number, userDto: UserDto, options?: RequestInit) => Promise<updateUtenteResponse>;
220
+ /**
221
+ * @summary Imposta il consenso GDPR per un utente
222
+ */
223
+ export type setGdprResponse = {
224
+ data: ActionResponse;
225
+ status: number;
226
+ };
227
+ export declare const getSetGdprUrl: (codiceUtente: number) => string;
228
+ export declare const setGdpr: (codiceUtente: number, options?: RequestInit) => Promise<setGdprResponse>;
229
+ /**
230
+ * Ritorna tutti i tipi di filtri disponibili nel sistema
231
+ * @summary Recupera la lista dei tipi di filtri
232
+ */
233
+ export type getTipiFiltroResponse = {
234
+ data: GetFiltriResponse;
235
+ status: number;
236
+ };
237
+ export declare const getGetTipiFiltroUrl: () => string;
238
+ export declare const getTipiFiltro: (options?: RequestInit) => Promise<getTipiFiltroResponse>;
239
+ /**
240
+ * Ritorna tutti i filtri associati ad un utente specifico
241
+ * @summary Recupera i filtri di un utente
242
+ */
243
+ export type getFiltriUtenteResponse = {
244
+ data: GetFiltriUtenteResponse;
245
+ status: number;
246
+ };
247
+ export declare const getGetFiltriUtenteUrl: (params?: GetFiltriUtenteParams) => string;
248
+ export declare const getFiltriUtente: (params?: GetFiltriUtenteParams, options?: RequestInit) => Promise<getFiltriUtenteResponse>;
249
+ /**
250
+ * Permette di salvare i filtri associati ad un utente specifico
251
+ * @summary Inserisce o aggiorna i filtri di un utente
252
+ */
253
+ export type saveFiltriUtenteResponse = {
254
+ data: ActionResponse;
255
+ status: number;
256
+ };
257
+ export declare const getSaveFiltriUtenteUrl: () => string;
258
+ export declare const saveFiltriUtente: (filtriUtente: FiltriUtente, options?: RequestInit) => Promise<saveFiltriUtenteResponse>;
259
+ /**
260
+ * @summary Aggiorna lo stato di abilitazione di un menu
261
+ */
262
+ export type setMenuEnabledResponse = {
263
+ data: ActionResponse;
264
+ status: number;
265
+ };
266
+ export declare const getSetMenuEnabledUrl: (codiceMenu: string) => string;
267
+ export declare const setMenuEnabled: (codiceMenu: string, updateEnabledStatusRequest: UpdateEnabledStatusRequest, options?: RequestInit) => Promise<setMenuEnabledResponse>;
268
+ /**
269
+ * @summary Aggiorna lo stato di abilitazione di un gruppo menu
270
+ */
271
+ export type setGroupEnabledResponse = {
272
+ data: ActionResponse;
273
+ status: number;
274
+ };
275
+ export declare const getSetGroupEnabledUrl: (codiceGruppo: string) => string;
276
+ export declare const setGroupEnabled: (codiceGruppo: string, updateEnabledStatusRequest: UpdateEnabledStatusRequest, options?: RequestInit) => Promise<setGroupEnabledResponse>;
277
+ /**
278
+ * Riservato a superutente. Restituisce solo catalogo e stato Accessi; issuer, secret e configurazioni SSO restano nel backend.
279
+ * @summary Elenca i provider SSO censiti
280
+ */
281
+ export type getFederatedProvidersResponse = {
282
+ data: FederatedProviderListResponse;
283
+ status: number;
284
+ };
285
+ export declare const getGetFederatedProvidersUrl: () => string;
286
+ export declare const getFederatedProviders: (options?: RequestInit) => Promise<getFederatedProvidersResponse>;
287
+ /**
288
+ * Riservato a superutente. La chiave provider deve corrispondere alla configurazione stabile del backend; non salvare segreti, issuer o token.
289
+ * @summary Censisce un provider SSO
290
+ */
291
+ export type createFederatedProviderResponse = {
292
+ data: FederatedProviderResponse;
293
+ status: number;
294
+ };
295
+ export declare const getCreateFederatedProviderUrl: () => string;
296
+ export declare const createFederatedProvider: (createFederatedProviderRequest: CreateFederatedProviderRequest, options?: RequestInit) => Promise<createFederatedProviderResponse>;
297
+ /**
298
+ * Riservato a superutente. La chiave provider è immutabile: disabilitarla blocca nuovi login SSO ma conserva i collegamenti storici.
299
+ * @summary Aggiorna o disabilita un provider SSO
300
+ */
301
+ export type updateFederatedProviderResponse = {
302
+ data: FederatedProviderResponse;
303
+ status: number;
304
+ };
305
+ export declare const getUpdateFederatedProviderUrl: (provider: string) => string;
306
+ export declare const updateFederatedProvider: (provider: string, updateFederatedProviderRequest: UpdateFederatedProviderRequest, options?: RequestInit) => Promise<updateFederatedProviderResponse>;
307
+ /**
308
+ * Riservato a superutente. Non restituisce token esterni o claim del provider.
309
+ * @summary Elenca le identita SSO di un utente
310
+ */
311
+ export type getFederatedIdentitiesResponse = {
312
+ data: FederatedIdentityListResponse;
313
+ status: number;
314
+ };
315
+ export declare const getGetFederatedIdentitiesUrl: (codiceUtente: number) => string;
316
+ export declare const getFederatedIdentities: (codiceUtente: number, options?: RequestInit) => Promise<getFederatedIdentitiesResponse>;
317
+ /**
318
+ * Il master deve fornire un provider e subject ottenuti da una verifica SSO lato backend; questo endpoint non verifica token esterni.
319
+ * @summary Associa un SSO gia verificato a un utente esistente
320
+ */
321
+ export type linkFederatedIdentityResponse = {
322
+ data: FederatedIdentityResponse;
323
+ status: number;
324
+ };
325
+ export declare const getLinkFederatedIdentityUrl: (codiceUtente: number) => string;
326
+ export declare const linkFederatedIdentity: (codiceUtente: number, createFederatedIdentityRequest: CreateFederatedIdentityRequest, options?: RequestInit) => Promise<linkFederatedIdentityResponse>;
327
+ /**
328
+ * Riservato a superutente. L utente nasce confermato, con identita collegata e senza password salvo opt-in esplicito.
329
+ * @summary Crea un utente gestito e SSO-only
330
+ */
331
+ export type createFederatedUserResponse = {
332
+ data: FederatedIdentityResponse;
333
+ status: number;
334
+ };
335
+ export declare const getCreateFederatedUserUrl: () => string;
336
+ export declare const createFederatedUser: (createFederatedUserRequest: CreateFederatedUserRequest, options?: RequestInit) => Promise<createFederatedUserResponse>;
337
+ /**
338
+ * Con false il login locale restituisce PASSWORD_LOGIN_DISABLED; le identita SSO attive restano utilizzabili.
339
+ * @summary Abilita o disabilita il login con password
340
+ */
341
+ export type setPasswordLoginPolicyResponse = {
342
+ data: ActionResponse;
343
+ status: number;
344
+ };
345
+ export declare const getSetPasswordLoginPolicyUrl: (codiceUtente: number) => string;
346
+ export declare const setPasswordLoginPolicy: (codiceUtente: number, setPasswordLoginPolicyRequest: SetPasswordLoginPolicyRequest, options?: RequestInit) => Promise<setPasswordLoginPolicyResponse>;
347
+ /**
348
+ * Soft delete: l associazione resta tracciata ma non puo piu autenticare.
349
+ * @summary Disabilita un identita SSO
350
+ */
351
+ export type disableFederatedIdentityResponse = {
352
+ data: ActionResponse;
353
+ status: number;
354
+ };
355
+ export declare const getDisableFederatedIdentityUrl: (identityKey: string) => string;
356
+ export declare const disableFederatedIdentity: (identityKey: string, options?: RequestInit) => Promise<disableFederatedIdentityResponse>;
357
+ /**
358
+ * Consente di modificare nota e stato attivo del collegamento. identityKey e una chiave tecnica, non un token SSO.
359
+ * @summary Aggiorna un collegamento SSO
360
+ */
361
+ export type updateFederatedIdentityResponse = {
362
+ data: ActionResponse;
363
+ status: number;
364
+ };
365
+ export declare const getUpdateFederatedIdentityUrl: (identityKey: string) => string;
366
+ export declare const updateFederatedIdentity: (identityKey: string, updateFederatedIdentityRequest: UpdateFederatedIdentityRequest, options?: RequestInit) => Promise<updateFederatedIdentityResponse>;
367
+ /**
368
+ * Riservato a superutente. Rimuove il collegamento provider e subject dall’utente, senza eliminare l’utente Accessi.
369
+ * @summary Elimina definitivamente un collegamento SSO
370
+ */
371
+ export type deleteFederatedIdentityPermanentlyResponse = {
372
+ data: ActionResponse;
373
+ status: number;
374
+ };
375
+ export declare const getDeleteFederatedIdentityPermanentlyUrl: (codiceUtente: number, identityKey: string) => string;
376
+ export declare const deleteFederatedIdentityPermanently: (codiceUtente: number, identityKey: string, options?: RequestInit) => Promise<deleteFederatedIdentityPermanentlyResponse>;