emilsoftware-utilities 2.0.0-dev.83 → 2.0.0-dev.85

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 (1234) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +373 -0
  3. package/SECURITY.md +66 -0
  4. package/dist/EmilsoftwareModule.d.ts +1 -1
  5. package/dist/EmilsoftwareModule.js +1 -1
  6. package/dist/EmilsoftwareModule.js.map +1 -1
  7. package/dist/Orm.js +19 -19
  8. package/dist/Orm.js.map +1 -1
  9. package/dist/Utilities.d.ts +1 -1
  10. package/dist/Utilities.js.map +1 -1
  11. package/dist/accessi/client/admin/index.d.ts +4 -4
  12. package/dist/accessi/client/admin/index.js +2 -2
  13. package/dist/accessi/client/admin/index.js.map +1 -1
  14. package/dist/accessi/client/createAccessiClient.d.ts +1 -1
  15. package/dist/accessi/client/createAccessiClient.js +1 -1
  16. package/dist/accessi/client/createAccessiClient.js.map +1 -1
  17. package/dist/accessi/client/generated/admin.d.ts +1 -1
  18. package/dist/accessi/client/generated/admin.js +1 -1
  19. package/dist/accessi/client/generated/admin.js.map +1 -1
  20. package/dist/accessi/client/generated/public.d.ts +1 -1
  21. package/dist/accessi/client/generated/public.js +1 -1
  22. package/dist/accessi/client/generated/public.js.map +1 -1
  23. package/dist/accessi/client/generated/service.d.ts +1 -1
  24. package/dist/accessi/client/generated/service.js +1 -1
  25. package/dist/accessi/client/generated/service.js.map +1 -1
  26. package/dist/accessi/client/index.d.ts +7 -7
  27. package/dist/accessi/client/index.js +6 -6
  28. package/dist/accessi/client/index.js.map +1 -1
  29. package/dist/accessi/client/public/index.d.ts +4 -4
  30. package/dist/accessi/client/public/index.js +2 -2
  31. package/dist/accessi/client/public/index.js.map +1 -1
  32. package/dist/accessi/client/service/index.d.ts +4 -4
  33. package/dist/accessi/client/service/index.js +2 -2
  34. package/dist/accessi/client/service/index.js.map +1 -1
  35. package/dist/accessi/contracts/dtos.d.ts +1 -1
  36. package/dist/accessi/contracts/dtos.js +1 -1
  37. package/dist/accessi/contracts/dtos.js.map +1 -1
  38. package/dist/accessi/contracts/index.d.ts +6 -6
  39. package/dist/accessi/contracts/index.js +4 -4
  40. package/dist/accessi/contracts/index.js.map +1 -1
  41. package/dist/accessi/resource-server/core.d.ts +13 -0
  42. package/dist/accessi/resource-server/core.js +17 -0
  43. package/dist/accessi/resource-server/core.js.map +1 -1
  44. package/dist/accessi/resource-server/express.js +1 -1
  45. package/dist/accessi/resource-server/express.js.map +1 -1
  46. package/dist/accessi/resource-server/nest.js +1 -1
  47. package/dist/accessi/resource-server/nest.js.map +1 -1
  48. package/dist/accessi/resource-server/token.js +1 -1
  49. package/dist/accessi/resource-server/token.js.map +1 -1
  50. package/dist/accessi/resource-server/types.d.ts +3 -3
  51. package/dist/accessi/resource-server/types.js.map +1 -1
  52. package/dist/accessi/server/index.d.ts +6 -3
  53. package/dist/accessi/server/index.js +8 -3
  54. package/dist/accessi/server/index.js.map +1 -1
  55. package/dist/accessi/server/standalone.d.ts +4 -4
  56. package/dist/accessi/server/standalone.js +6 -6
  57. package/dist/accessi/server/standalone.js.map +1 -1
  58. package/dist/accessi/server/tenantRouter.d.ts +35 -0
  59. package/dist/accessi/server/tenantRouter.js +71 -0
  60. package/dist/accessi/server/tenantRouter.js.map +1 -0
  61. package/dist/accessi/server/tenantStores.d.ts +6 -6
  62. package/dist/accessi/server/tenantStores.js +5 -5
  63. package/dist/accessi/server/tenantStores.js.map +1 -1
  64. package/dist/accessi/server/tenants.d.ts +8 -8
  65. package/dist/accessi/server/tenants.js +1 -1
  66. package/dist/accessi/server/tenants.js.map +1 -1
  67. package/dist/accessi-service/AccessiModule.js +120 -0
  68. package/dist/accessi-service/AccessiModule.js.map +1 -0
  69. package/dist/accessi-service/accessiRuntime.d.ts +45 -0
  70. package/dist/accessi-service/accessiRuntime.js +39 -0
  71. package/dist/accessi-service/accessiRuntime.js.map +1 -0
  72. package/dist/accessi-service/console/accessiFetch.js.map +1 -0
  73. package/dist/accessi-service/console/console.js +4875 -0
  74. package/dist/accessi-service/console/console.js.map +1 -0
  75. package/dist/accessi-service/console/generated/emilsoftware-utilities.js.map +1 -0
  76. package/dist/accessi-service/console/generated/model/abilitazioneMenu.js.map +1 -0
  77. package/dist/accessi-service/console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
  78. package/dist/accessi-service/console/generated/model/accessiIntrospectionResultDto.js.map +1 -0
  79. package/dist/accessi-service/console/generated/model/actionResponse.js.map +1 -0
  80. package/dist/accessi-service/console/generated/model/adminBootstrapStatusResponse.js.map +1 -0
  81. package/dist/accessi-service/console/generated/model/adminBootstrapStatusResult.js.map +1 -0
  82. package/dist/accessi-service/console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
  83. package/dist/accessi-service/console/generated/model/assignRolesToUserRequest.js.map +1 -0
  84. package/dist/accessi-service/console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
  85. package/dist/accessi-service/console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
  86. package/dist/accessi-service/console/generated/model/bootstrapAdminRequest.js.map +1 -0
  87. package/dist/accessi-service/console/generated/model/bootstrapAdminResponse.js.map +1 -0
  88. package/dist/accessi-service/console/generated/model/bootstrapAdminResultDto.js.map +1 -0
  89. package/dist/accessi-service/console/generated/model/confirmResetPasswordRequest.js.map +1 -0
  90. package/dist/accessi-service/console/generated/model/consoleEntryExchangeRequest.js.map +1 -0
  91. package/dist/accessi-service/console/generated/model/consoleEntrySessionResponse.js.map +1 -0
  92. package/dist/accessi-service/console/generated/model/consoleEntrySessionResult.js.map +1 -0
  93. package/dist/accessi-service/console/generated/model/consoleEntryTicketResponse.js.map +1 -0
  94. package/dist/accessi-service/console/generated/model/consoleEntryTicketResult.js.map +1 -0
  95. package/dist/accessi-service/console/generated/model/consoleEntryTokenResult.js.map +1 -0
  96. package/dist/accessi-service/console/generated/model/createFederatedIdentityRequest.js.map +1 -0
  97. package/dist/accessi-service/console/generated/model/createFederatedProviderRequest.js.map +1 -0
  98. package/dist/accessi-service/console/generated/model/createFederatedUserRequest.js.map +1 -0
  99. package/dist/accessi-service/console/generated/model/createFilterTypeRequest.js.map +1 -0
  100. package/dist/accessi-service/console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
  101. package/dist/accessi-service/console/generated/model/createMenuGroupRequest.js.map +1 -0
  102. package/dist/accessi-service/console/generated/model/createMenuRequest.js.map +1 -0
  103. package/dist/accessi-service/console/generated/model/createMenuTypeRequest.js.map +1 -0
  104. package/dist/accessi-service/console/generated/model/createScopeRequest.js.map +1 -0
  105. package/dist/accessi-service/console/generated/model/createServiceTokenRequest.js.map +1 -0
  106. package/dist/accessi-service/console/generated/model/createServiceTokenResponse.js.map +1 -0
  107. package/dist/accessi-service/console/generated/model/errorResponse.js.map +1 -0
  108. package/dist/accessi-service/console/generated/model/exchangeFederatedIdentityRequest.js.map +1 -0
  109. package/dist/accessi-service/console/generated/model/exportAuditOrder.js.map +1 -0
  110. package/dist/accessi-service/console/generated/model/exportAuditParams.js.map +1 -0
  111. package/dist/accessi-service/console/generated/model/federatedAuthenticationResultDto.js.map +1 -0
  112. package/dist/accessi-service/console/generated/model/federatedExchangeResponse.js.map +1 -0
  113. package/dist/accessi-service/console/generated/model/federatedIdentityListResponse.js.map +1 -0
  114. package/dist/accessi-service/console/generated/model/federatedIdentityResponse.js.map +1 -0
  115. package/dist/accessi-service/console/generated/model/federatedIdentityResponseDto.js.map +1 -0
  116. package/dist/accessi-service/console/generated/model/federatedProviderListResponse.js.map +1 -0
  117. package/dist/accessi-service/console/generated/model/federatedProviderResponse.js.map +1 -0
  118. package/dist/accessi-service/console/generated/model/federatedProviderResponseDto.js.map +1 -0
  119. package/dist/accessi-service/console/generated/model/filtriUtente.js.map +1 -0
  120. package/dist/accessi-service/console/generated/model/getFiltriResponse.js.map +1 -0
  121. package/dist/accessi-service/console/generated/model/getFiltriUtenteParams.js.map +1 -0
  122. package/dist/accessi-service/console/generated/model/getFiltriUtenteResponse.js.map +1 -0
  123. package/dist/accessi-service/console/generated/model/getGroupsWithMenusParams.js.map +1 -0
  124. package/dist/accessi-service/console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
  125. package/dist/accessi-service/console/generated/model/getMenuScopesResponse.js.map +1 -0
  126. package/dist/accessi-service/console/generated/model/getMenuTypesResponse.js.map +1 -0
  127. package/dist/accessi-service/console/generated/model/getMenusParams.js.map +1 -0
  128. package/dist/accessi-service/console/generated/model/getMenusResponse.js.map +1 -0
  129. package/dist/accessi-service/console/generated/model/getRolesResponse.js.map +1 -0
  130. package/dist/accessi-service/console/generated/model/getSchemaResponse.js.map +1 -0
  131. package/dist/accessi-service/console/generated/model/getScopesResponse.js.map +1 -0
  132. package/dist/accessi-service/console/generated/model/getServiceTokensParams.js.map +1 -0
  133. package/dist/accessi-service/console/generated/model/getServiceTokensResponse.js.map +1 -0
  134. package/dist/accessi-service/console/generated/model/getUserByTokenRequest.js.map +1 -0
  135. package/dist/accessi-service/console/generated/model/getUserByTokenResponse.js.map +1 -0
  136. package/dist/accessi-service/console/generated/model/getUserRolesAndGrantsParams.js.map +1 -0
  137. package/dist/accessi-service/console/generated/model/getUsersParams.js.map +1 -0
  138. package/dist/accessi-service/console/generated/model/getUsersResponse.js.map +1 -0
  139. package/dist/accessi-service/console/generated/model/getUsersResult.js.map +1 -0
  140. package/dist/accessi-service/console/generated/model/getUsersResultExtensionFields.js.map +1 -0
  141. package/dist/accessi-service/console/generated/model/groupWithMenusEntity.js.map +1 -0
  142. package/dist/accessi-service/console/generated/model/index.js.map +1 -0
  143. package/dist/accessi-service/console/generated/model/introspectAccessiTokenRequest.js.map +1 -0
  144. package/dist/accessi-service/console/generated/model/introspectAccessiTokenResponse.js.map +1 -0
  145. package/dist/accessi-service/console/generated/model/issuedServiceTokenDto.js.map +1 -0
  146. package/dist/accessi-service/console/generated/model/loginAsRequest.js.map +1 -0
  147. package/dist/accessi-service/console/generated/model/loginAsResponse.js.map +1 -0
  148. package/dist/accessi-service/console/generated/model/loginAsResult.js.map +1 -0
  149. package/dist/accessi-service/console/generated/model/loginRequest.js.map +1 -0
  150. package/dist/accessi-service/console/generated/model/loginResponse.js.map +1 -0
  151. package/dist/accessi-service/console/generated/model/loginResult.js.map +1 -0
  152. package/dist/accessi-service/console/generated/model/loginResultExtensionFields.js.map +1 -0
  153. package/dist/accessi-service/console/generated/model/loginResultPasswordRequired.js.map +1 -0
  154. package/dist/accessi-service/console/generated/model/menuEntity.js.map +1 -0
  155. package/dist/accessi-service/console/generated/model/menuTypeEntity.js.map +1 -0
  156. package/dist/accessi-service/console/generated/model/passwordExpiredResponse.js.map +1 -0
  157. package/dist/accessi-service/console/generated/model/permission.js.map +1 -0
  158. package/dist/accessi-service/console/generated/model/publicRegisterRequest.js.map +1 -0
  159. package/dist/accessi-service/console/generated/model/queryAuditOrder.js.map +1 -0
  160. package/dist/accessi-service/console/generated/model/queryAuditParams.js.map +1 -0
  161. package/dist/accessi-service/console/generated/model/refreshTokenRequest.js.map +1 -0
  162. package/dist/accessi-service/console/generated/model/refreshTokenResponse.js.map +1 -0
  163. package/dist/accessi-service/console/generated/model/refreshTokenResult.js.map +1 -0
  164. package/dist/accessi-service/console/generated/model/registerRequest.js.map +1 -0
  165. package/dist/accessi-service/console/generated/model/registerResponse.js.map +1 -0
  166. package/dist/accessi-service/console/generated/model/resendTwoFactorRequest.js.map +1 -0
  167. package/dist/accessi-service/console/generated/model/revokeTokenRequest.js.map +1 -0
  168. package/dist/accessi-service/console/generated/model/role.js.map +1 -0
  169. package/dist/accessi-service/console/generated/model/ruoliMenu.js.map +1 -0
  170. package/dist/accessi-service/console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
  171. package/dist/accessi-service/console/generated/model/schemaDdlResult.js.map +1 -0
  172. package/dist/accessi-service/console/generated/model/schemaDdlSection.js.map +1 -0
  173. package/dist/accessi-service/console/generated/model/scopeEntity.js.map +1 -0
  174. package/dist/accessi-service/console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
  175. package/dist/accessi-service/console/generated/model/serveResetPasswordPageParams.js.map +1 -0
  176. package/dist/accessi-service/console/generated/model/serviceTokenDto.js.map +1 -0
  177. package/dist/accessi-service/console/generated/model/setMenuScopesRequest.js.map +1 -0
  178. package/dist/accessi-service/console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
  179. package/dist/accessi-service/console/generated/model/setScopeMenusRequest.js.map +1 -0
  180. package/dist/accessi-service/console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
  181. package/dist/accessi-service/console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
  182. package/dist/accessi-service/console/generated/model/setUserPasswordRequest.js.map +1 -0
  183. package/dist/accessi-service/console/generated/model/status.js.map +1 -0
  184. package/dist/accessi-service/console/generated/model/tipoFiltro.js.map +1 -0
  185. package/dist/accessi-service/console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
  186. package/dist/accessi-service/console/generated/model/tokenResult.js.map +1 -0
  187. package/dist/accessi-service/console/generated/model/tokenResultType.js.map +1 -0
  188. package/dist/accessi-service/console/generated/model/twoFactorChallengeDto.js.map +1 -0
  189. package/dist/accessi-service/console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
  190. package/dist/accessi-service/console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
  191. package/dist/accessi-service/console/generated/model/updateEnabledStatusRequest.js.map +1 -0
  192. package/dist/accessi-service/console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
  193. package/dist/accessi-service/console/generated/model/updateFederatedProviderRequest.js.map +1 -0
  194. package/dist/accessi-service/console/generated/model/updateFilterTypeRequest.js.map +1 -0
  195. package/dist/accessi-service/console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
  196. package/dist/accessi-service/console/generated/model/updateMenuGroupRequest.js.map +1 -0
  197. package/dist/accessi-service/console/generated/model/updateMenuRequest.js.map +1 -0
  198. package/dist/accessi-service/console/generated/model/updateMenuTypeRequest.js.map +1 -0
  199. package/dist/accessi-service/console/generated/model/updateScopeRequest.js.map +1 -0
  200. package/dist/accessi-service/console/generated/model/userDto.js.map +1 -0
  201. package/dist/accessi-service/console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
  202. package/dist/accessi-service/console/generated/model/userGrantsDto.js.map +1 -0
  203. package/dist/accessi-service/console/generated/model/userGrantsResponse.js.map +1 -0
  204. package/dist/accessi-service/console/generated/model/verifyTwoFactorRequest.js.map +1 -0
  205. package/dist/accessi-service/console/help.js.map +1 -0
  206. package/dist/accessi-service/console/wiki.js +1533 -0
  207. package/dist/accessi-service/console/wiki.js.map +1 -0
  208. package/dist/accessi-service/controllers/AccessiAuditController.d.ts +16 -0
  209. package/dist/accessi-service/controllers/AccessiAuditController.js +155 -0
  210. package/dist/accessi-service/controllers/AccessiAuditController.js.map +1 -0
  211. package/dist/accessi-service/controllers/AccessiConsoleController.js +169 -0
  212. package/dist/accessi-service/controllers/AccessiConsoleController.js.map +1 -0
  213. package/dist/accessi-service/controllers/AccessiIntrospectionController.d.ts +17 -0
  214. package/dist/accessi-service/controllers/AccessiIntrospectionController.js +102 -0
  215. package/dist/accessi-service/controllers/AccessiIntrospectionController.js.map +1 -0
  216. package/dist/accessi-service/controllers/AuthController.d.ts +24 -0
  217. package/dist/accessi-service/controllers/AuthController.js +564 -0
  218. package/dist/accessi-service/controllers/AuthController.js.map +1 -0
  219. package/dist/accessi-service/controllers/ConfiguratorController.d.ts +9 -0
  220. package/dist/accessi-service/controllers/ConfiguratorController.js +136 -0
  221. package/dist/accessi-service/controllers/ConfiguratorController.js.map +1 -0
  222. package/dist/accessi-service/controllers/ConsoleEntryController.d.ts +16 -0
  223. package/dist/accessi-service/controllers/ConsoleEntryController.js +159 -0
  224. package/dist/accessi-service/controllers/ConsoleEntryController.js.map +1 -0
  225. package/dist/accessi-service/controllers/EmailController.d.ts +11 -0
  226. package/dist/accessi-service/controllers/EmailController.js +112 -0
  227. package/dist/accessi-service/controllers/EmailController.js.map +1 -0
  228. package/dist/accessi-service/controllers/FiltriController.d.ts +20 -0
  229. package/dist/accessi-service/controllers/FiltriController.js +303 -0
  230. package/dist/accessi-service/controllers/FiltriController.js.map +1 -0
  231. package/dist/accessi-service/controllers/PermissionController.d.ts +45 -0
  232. package/dist/accessi-service/controllers/PermissionController.js +862 -0
  233. package/dist/accessi-service/controllers/PermissionController.js.map +1 -0
  234. package/dist/accessi-service/controllers/SchemaController.d.ts +9 -0
  235. package/dist/accessi-service/controllers/SchemaController.js +79 -0
  236. package/dist/accessi-service/controllers/SchemaController.js.map +1 -0
  237. package/dist/accessi-service/controllers/ServiceTokenController.d.ts +23 -0
  238. package/dist/accessi-service/controllers/ServiceTokenController.js +176 -0
  239. package/dist/accessi-service/controllers/ServiceTokenController.js.map +1 -0
  240. package/dist/accessi-service/controllers/UserController.d.ts +39 -0
  241. package/dist/accessi-service/controllers/UserController.js +724 -0
  242. package/dist/accessi-service/controllers/UserController.js.map +1 -0
  243. package/dist/accessi-service/database-updates/AccessiCatalogMigrator.js.map +1 -0
  244. package/dist/accessi-service/database-updates/AccessiDatabaseUpdater.js.map +1 -0
  245. package/dist/accessi-service/database-updates/accessiOptionsFromEnv.js +347 -0
  246. package/dist/accessi-service/database-updates/accessiOptionsFromEnv.js.map +1 -0
  247. package/dist/accessi-service/database-updates/accessiSchema.js.map +1 -0
  248. package/dist/accessi-service/database-updates/menuScopeSeed.js.map +1 -0
  249. package/dist/accessi-service/database-updates/menuScopeSeeder.js.map +1 -0
  250. package/dist/accessi-service/database-updates/optionalColumns.js.map +1 -0
  251. package/dist/accessi-service/database-updates/runAccessiCatalogMigrations.js.map +1 -0
  252. package/dist/accessi-service/database-updates/runAccessiDbUpdate.js.map +1 -0
  253. package/dist/accessi-service/dtos/Abilitazione.js.map +1 -0
  254. package/dist/accessi-service/dtos/AbilitazioneMenu.js.map +1 -0
  255. package/dist/accessi-service/dtos/AdminBootstrapDtos.js.map +1 -0
  256. package/dist/accessi-service/dtos/AssignPermissionsToUserRequest.js.map +1 -0
  257. package/dist/accessi-service/dtos/AssignRolesToUserRequest.js.map +1 -0
  258. package/dist/accessi-service/dtos/AuditDtos.js.map +1 -0
  259. package/dist/accessi-service/dtos/AuthenticatedUserPayloadDto.js.map +1 -0
  260. package/dist/accessi-service/dtos/BaseResponse.js.map +1 -0
  261. package/dist/accessi-service/dtos/CatalogDtos.js.map +1 -0
  262. package/dist/accessi-service/dtos/ConfirmResetPasswordRequest.js.map +1 -0
  263. package/dist/accessi-service/dtos/ConsoleEntryDtos.js.map +1 -0
  264. package/dist/accessi-service/dtos/FederatedExchangeDtos.js.map +1 -0
  265. package/dist/accessi-service/dtos/FederatedIdentityDtos.js.map +1 -0
  266. package/dist/accessi-service/dtos/FiltriUtente.js.map +1 -0
  267. package/dist/accessi-service/dtos/GetGroupsWithMenusResponse.js.map +1 -0
  268. package/dist/accessi-service/dtos/GetMenusResponse.js.map +1 -0
  269. package/dist/accessi-service/dtos/GetRolesResponse.js.map +1 -0
  270. package/dist/accessi-service/dtos/GetUserByTokenRequest.js.map +1 -0
  271. package/dist/accessi-service/dtos/GetUserByTokenResponse.js.map +1 -0
  272. package/dist/accessi-service/dtos/GetUsersResponse.js.map +1 -0
  273. package/dist/accessi-service/dtos/IntrospectionDtos.js.map +1 -0
  274. package/dist/accessi-service/dtos/LoginAsDtos.js.map +1 -0
  275. package/dist/accessi-service/dtos/LoginRequest.js.map +1 -0
  276. package/dist/accessi-service/dtos/LoginResponse.js.map +1 -0
  277. package/dist/accessi-service/dtos/MenuItem.js.map +1 -0
  278. package/dist/accessi-service/dtos/Permission.js.map +1 -0
  279. package/dist/accessi-service/dtos/PublicRegisterRequest.js.map +1 -0
  280. package/dist/accessi-service/dtos/RefreshTokenDtos.js.map +1 -0
  281. package/dist/accessi-service/dtos/RegisterRequest.js.map +1 -0
  282. package/dist/accessi-service/dtos/RegisterResponse.js.map +1 -0
  283. package/dist/accessi-service/dtos/RevokeTokenRequest.js.map +1 -0
  284. package/dist/accessi-service/dtos/Role.js.map +1 -0
  285. package/dist/accessi-service/dtos/RuoliMenu.js.map +1 -0
  286. package/dist/accessi-service/dtos/SchemaDtos.js.map +1 -0
  287. package/dist/accessi-service/dtos/ScopeDtos.js.map +1 -0
  288. package/dist/accessi-service/dtos/SendResetPasswordEmailRequest.js.map +1 -0
  289. package/dist/accessi-service/dtos/ServiceToken.js.map +1 -0
  290. package/dist/accessi-service/dtos/SetStatoRegistrazione.js.map +1 -0
  291. package/dist/accessi-service/dtos/SetUserPasswordRequest.js.map +1 -0
  292. package/dist/accessi-service/dtos/StatoRegistrazione.js.map +1 -0
  293. package/dist/accessi-service/dtos/TipoAbilitazione.js.map +1 -0
  294. package/dist/accessi-service/dtos/TipoFiltro.js.map +1 -0
  295. package/dist/accessi-service/dtos/TokenResult.js.map +1 -0
  296. package/dist/accessi-service/dtos/TwoFactorDtos.js.map +1 -0
  297. package/dist/accessi-service/dtos/UpdateEnabledStatusRequest.js.map +1 -0
  298. package/dist/accessi-service/dtos/UserDto.js.map +1 -0
  299. package/dist/accessi-service/dtos/UserGrantsDto.js.map +1 -0
  300. package/dist/accessi-service/dtos/UserGrantsResponse.js.map +1 -0
  301. package/dist/accessi-service/dtos/index.js.map +1 -0
  302. package/dist/accessi-service/federated-auth/FederatedAuthController.d.ts +33 -0
  303. package/dist/accessi-service/federated-auth/FederatedAuthController.js +373 -0
  304. package/dist/accessi-service/federated-auth/FederatedAuthController.js.map +1 -0
  305. package/dist/accessi-service/federated-auth/FederatedAuthExchangeController.d.ts +15 -0
  306. package/dist/accessi-service/federated-auth/FederatedAuthExchangeController.js +85 -0
  307. package/dist/accessi-service/federated-auth/FederatedAuthExchangeController.js.map +1 -0
  308. package/dist/accessi-service/federated-auth/FederatedAuthService.d.ts +102 -0
  309. package/dist/accessi-service/federated-auth/FederatedAuthService.js +472 -0
  310. package/dist/accessi-service/federated-auth/FederatedAuthService.js.map +1 -0
  311. package/dist/accessi-service/federated-auth/FederatedAuthTypes.d.ts +53 -0
  312. package/dist/accessi-service/federated-auth/FederatedAuthTypes.js.map +1 -0
  313. package/dist/accessi-service/health/nest.js.map +1 -0
  314. package/dist/accessi-service/health/readiness.js.map +1 -0
  315. package/dist/accessi-service/index.d.ts +88 -0
  316. package/dist/accessi-service/index.js +304 -0
  317. package/dist/accessi-service/index.js.map +1 -0
  318. package/dist/accessi-service/jwt/JwtSimpleGuard.d.ts +9 -0
  319. package/dist/accessi-service/jwt/JwtSimpleGuard.js +88 -0
  320. package/dist/accessi-service/jwt/JwtSimpleGuard.js.map +1 -0
  321. package/dist/accessi-service/middleware/accessiRequirements.js.map +1 -0
  322. package/dist/accessi-service/middleware/authenticateGen.d.ts +32 -0
  323. package/dist/accessi-service/middleware/authenticateGen.js +315 -0
  324. package/dist/accessi-service/middleware/authenticateGen.js.map +1 -0
  325. package/dist/accessi-service/observability/metrics.js +229 -0
  326. package/dist/accessi-service/observability/metrics.js.map +1 -0
  327. package/dist/accessi-service/observability/redisMetrics.js.map +1 -0
  328. package/dist/accessi-service/security/AccessiHttpExceptionFilter.js.map +1 -0
  329. package/dist/accessi-service/security/accessControl.js.map +1 -0
  330. package/dist/accessi-service/security/accessTokenRevocation.js.map +1 -0
  331. package/dist/accessi-service/security/accessiValidation.js.map +1 -0
  332. package/dist/accessi-service/security/adminBootstrap.js.map +1 -0
  333. package/dist/accessi-service/security/audit.d.ts +84 -0
  334. package/dist/accessi-service/security/audit.js +214 -0
  335. package/dist/accessi-service/security/audit.js.map +1 -0
  336. package/dist/accessi-service/security/auditSinks.js.map +1 -0
  337. package/dist/accessi-service/security/authCookies.js.map +1 -0
  338. package/dist/accessi-service/security/authenticatedToken.d.ts +31 -0
  339. package/dist/accessi-service/security/authenticatedToken.js +79 -0
  340. package/dist/accessi-service/security/authenticatedToken.js.map +1 -0
  341. package/dist/accessi-service/security/consoleEntry.js.map +1 -0
  342. package/dist/accessi-service/security/edgeRateLimit.js.map +1 -0
  343. package/dist/accessi-service/security/emailConfiguration.js.map +1 -0
  344. package/dist/accessi-service/security/jwks.js.map +1 -0
  345. package/dist/accessi-service/security/jwksBootstrap.js.map +1 -0
  346. package/dist/accessi-service/security/jwtTokenOptions.js.map +1 -0
  347. package/dist/accessi-service/security/loginAs.js.map +1 -0
  348. package/dist/accessi-service/security/passwordPolicy.js.map +1 -0
  349. package/dist/accessi-service/security/passwordResetToken.js.map +1 -0
  350. package/dist/accessi-service/security/publicAuthRateLimit.js.map +1 -0
  351. package/dist/accessi-service/security/rateLimitStore.js.map +1 -0
  352. package/dist/accessi-service/security/refreshTokenRotation.js.map +1 -0
  353. package/dist/accessi-service/security/securityHeaders.js.map +1 -0
  354. package/dist/accessi-service/security/serviceTokenGuard.d.ts +27 -0
  355. package/dist/accessi-service/security/serviceTokenGuard.js +90 -0
  356. package/dist/accessi-service/security/serviceTokenGuard.js.map +1 -0
  357. package/dist/accessi-service/security/serviceTokenRateLimit.js.map +1 -0
  358. package/dist/accessi-service/security/sessionRevocation.js.map +1 -0
  359. package/dist/accessi-service/security/validateOptions.js.map +1 -0
  360. package/dist/accessi-service/services/admin-bootstrap-service/AdminBootstrapService.d.ts +33 -0
  361. package/dist/accessi-service/services/admin-bootstrap-service/AdminBootstrapService.js +106 -0
  362. package/dist/accessi-service/services/admin-bootstrap-service/AdminBootstrapService.js.map +1 -0
  363. package/dist/accessi-service/services/auth-service/AuthService.d.ts +127 -0
  364. package/dist/accessi-service/services/auth-service/AuthService.js +734 -0
  365. package/dist/accessi-service/services/auth-service/AuthService.js.map +1 -0
  366. package/dist/accessi-service/services/configurator-service/ConfiguratorService.js.map +1 -0
  367. package/dist/accessi-service/services/email-service/EmailService.js +439 -0
  368. package/dist/accessi-service/services/email-service/EmailService.js.map +1 -0
  369. package/dist/accessi-service/services/filtri-service/FiltriService.d.ts +26 -0
  370. package/dist/accessi-service/services/filtri-service/FiltriService.js +203 -0
  371. package/dist/accessi-service/services/filtri-service/FiltriService.js.map +1 -0
  372. package/dist/accessi-service/services/permission-service/PermissionService.d.ts +126 -0
  373. package/dist/accessi-service/services/permission-service/PermissionService.js +944 -0
  374. package/dist/accessi-service/services/permission-service/PermissionService.js.map +1 -0
  375. package/dist/accessi-service/services/schema-export-service/SchemaExportService.js.map +1 -0
  376. package/dist/accessi-service/services/service-token-service/ServiceTokenService.js.map +1 -0
  377. package/dist/accessi-service/services/two-factor-service/TwoFactorService.d.ts +27 -0
  378. package/dist/accessi-service/services/two-factor-service/TwoFactorService.js +175 -0
  379. package/dist/accessi-service/services/two-factor-service/TwoFactorService.js.map +1 -0
  380. package/dist/accessi-service/services/user-service/UserService.d.ts +112 -0
  381. package/dist/accessi-service/services/user-service/UserService.js +837 -0
  382. package/dist/accessi-service/services/user-service/UserService.js.map +1 -0
  383. package/dist/accessi-service/startupLog.js.map +1 -0
  384. package/dist/accessi-service/tenancy/tenantContext.d.ts +15 -0
  385. package/dist/accessi-service/tenancy/tenantContext.js +26 -0
  386. package/dist/accessi-service/tenancy/tenantContext.js.map +1 -0
  387. package/dist/allegati-module/AllegatiModule.js +2 -2
  388. package/dist/allegati-module/AllegatiModule.js.map +1 -1
  389. package/dist/allegati-module/controllers/AllegatiController.d.ts +36 -0
  390. package/dist/allegati-module/controllers/AllegatiController.js +230 -0
  391. package/dist/allegati-module/controllers/AllegatiController.js.map +1 -0
  392. package/dist/allegati-module/dtos/AllegatoDto.js.map +1 -0
  393. package/dist/allegati-module/dtos/BaseResponse.js.map +1 -0
  394. package/dist/allegati-module/dtos/UploadSingleFileRequest.js.map +1 -0
  395. package/dist/allegati-module/dtos/index.js.map +1 -0
  396. package/dist/allegati-module/dtos/responses/DownloadAllegatoResponseDto.js.map +1 -0
  397. package/dist/allegati-module/dtos/responses/GetListResponse.js.map +1 -0
  398. package/dist/allegati-module/dtos/responses/UploadAllegatoResponseDto.js.map +1 -0
  399. package/dist/allegati-module/index.d.ts +1 -1
  400. package/dist/allegati-module/index.js +1 -1
  401. package/dist/allegati-module/index.js.map +1 -1
  402. package/dist/allegati-module/services/allegati-service/AllegatiService.d.ts +61 -0
  403. package/dist/allegati-module/services/allegati-service/AllegatiService.js.map +1 -0
  404. package/dist/emilsoftware-utilities-2.0.0-dev.85.tgz +0 -0
  405. package/dist/firebirdCompat.js +269 -0
  406. package/dist/firebirdCompat.js.map +1 -0
  407. package/dist/index.d.ts +3 -3
  408. package/dist/index.js +3 -3
  409. package/dist/index.js.map +1 -1
  410. package/dist/initEmilsoftwareModule.js +9 -9
  411. package/dist/initEmilsoftwareModule.js.map +1 -1
  412. package/dist/scripts/generateAccessiOpenApi.js +2 -2
  413. package/dist/scripts/generateAccessiOpenApi.js.map +1 -1
  414. package/dist/scripts/generateAccessiWiki.js +6 -4
  415. package/dist/scripts/generateAccessiWiki.js.map +1 -1
  416. package/docs/README.md +116 -0
  417. package/docs/adr/0002-multi-tenancy.md +5 -3
  418. package/docs/audit.md +4 -0
  419. package/docs/auth-cookies.md +4 -0
  420. package/docs/conventions.md +86 -0
  421. package/docs/gateway-rate-limit.md +3 -0
  422. package/docs/import-migration.md +12 -6
  423. package/docs/jwt-key-rotation.md +3 -0
  424. package/docs/metrics.md +3 -0
  425. package/docs/multi-tenancy.md +54 -0
  426. package/docs/proxy-ip.md +8 -0
  427. package/docs/quickstart-frontend.md +217 -0
  428. package/docs/quickstart-resource-server.md +177 -0
  429. package/docs/quickstart-service.md +214 -0
  430. package/docs/redis-load-testing.md +4 -0
  431. package/docs/security-headers.md +3 -0
  432. package/docs/standalone-service.md +180 -54
  433. package/integration-prompt.md +38 -14
  434. package/package.json +24 -19
  435. package/README.MD +0 -323
  436. package/dist/accessi-module/AccessiModule.js +0 -120
  437. package/dist/accessi-module/AccessiModule.js.map +0 -1
  438. package/dist/accessi-module/Console/accessiFetch.js.map +0 -1
  439. package/dist/accessi-module/Console/console.js +0 -4173
  440. package/dist/accessi-module/Console/console.js.map +0 -1
  441. package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +0 -1
  442. package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +0 -1
  443. package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +0 -1
  444. package/dist/accessi-module/Console/generated/model/accessiIntrospectionResultDto.js.map +0 -1
  445. package/dist/accessi-module/Console/generated/model/actionResponse.js.map +0 -1
  446. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResponse.js.map +0 -1
  447. package/dist/accessi-module/Console/generated/model/adminBootstrapStatusResult.js.map +0 -1
  448. package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +0 -1
  449. package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +0 -1
  450. package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +0 -1
  451. package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +0 -1
  452. package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +0 -1
  453. package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +0 -1
  454. package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +0 -1
  455. package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +0 -1
  456. package/dist/accessi-module/Console/generated/model/consoleEntryExchangeRequest.js.map +0 -1
  457. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResponse.js.map +0 -1
  458. package/dist/accessi-module/Console/generated/model/consoleEntrySessionResult.js.map +0 -1
  459. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResponse.js.map +0 -1
  460. package/dist/accessi-module/Console/generated/model/consoleEntryTicketResult.js.map +0 -1
  461. package/dist/accessi-module/Console/generated/model/consoleEntryTokenResult.js.map +0 -1
  462. package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +0 -1
  463. package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +0 -1
  464. package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +0 -1
  465. package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +0 -1
  466. package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +0 -1
  467. package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +0 -1
  468. package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +0 -1
  469. package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +0 -1
  470. package/dist/accessi-module/Console/generated/model/createScopeRequest.js.map +0 -1
  471. package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +0 -1
  472. package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +0 -1
  473. package/dist/accessi-module/Console/generated/model/errorResponse.js.map +0 -1
  474. package/dist/accessi-module/Console/generated/model/exchangeFederatedIdentityRequest.js.map +0 -1
  475. package/dist/accessi-module/Console/generated/model/exportAuditOrder.js.map +0 -1
  476. package/dist/accessi-module/Console/generated/model/exportAuditParams.js.map +0 -1
  477. package/dist/accessi-module/Console/generated/model/federatedAuthenticationResultDto.js.map +0 -1
  478. package/dist/accessi-module/Console/generated/model/federatedExchangeResponse.js.map +0 -1
  479. package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +0 -1
  480. package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +0 -1
  481. package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +0 -1
  482. package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +0 -1
  483. package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +0 -1
  484. package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +0 -1
  485. package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +0 -1
  486. package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +0 -1
  487. package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +0 -1
  488. package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +0 -1
  489. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +0 -1
  490. package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +0 -1
  491. package/dist/accessi-module/Console/generated/model/getMenuScopesResponse.js.map +0 -1
  492. package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +0 -1
  493. package/dist/accessi-module/Console/generated/model/getMenusParams.js.map +0 -1
  494. package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +0 -1
  495. package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +0 -1
  496. package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +0 -1
  497. package/dist/accessi-module/Console/generated/model/getScopesResponse.js.map +0 -1
  498. package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +0 -1
  499. package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +0 -1
  500. package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +0 -1
  501. package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +0 -1
  502. package/dist/accessi-module/Console/generated/model/getUserRolesAndGrantsParams.js.map +0 -1
  503. package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +0 -1
  504. package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +0 -1
  505. package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +0 -1
  506. package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +0 -1
  507. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +0 -1
  508. package/dist/accessi-module/Console/generated/model/index.js.map +0 -1
  509. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenRequest.js.map +0 -1
  510. package/dist/accessi-module/Console/generated/model/introspectAccessiTokenResponse.js.map +0 -1
  511. package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +0 -1
  512. package/dist/accessi-module/Console/generated/model/loginAsRequest.js.map +0 -1
  513. package/dist/accessi-module/Console/generated/model/loginAsResponse.js.map +0 -1
  514. package/dist/accessi-module/Console/generated/model/loginAsResult.js.map +0 -1
  515. package/dist/accessi-module/Console/generated/model/loginRequest.js.map +0 -1
  516. package/dist/accessi-module/Console/generated/model/loginResponse.js.map +0 -1
  517. package/dist/accessi-module/Console/generated/model/loginResult.js.map +0 -1
  518. package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +0 -1
  519. package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +0 -1
  520. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +0 -1
  521. package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +0 -1
  522. package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +0 -1
  523. package/dist/accessi-module/Console/generated/model/permission.js.map +0 -1
  524. package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +0 -1
  525. package/dist/accessi-module/Console/generated/model/queryAuditOrder.js.map +0 -1
  526. package/dist/accessi-module/Console/generated/model/queryAuditParams.js.map +0 -1
  527. package/dist/accessi-module/Console/generated/model/refreshTokenRequest.js.map +0 -1
  528. package/dist/accessi-module/Console/generated/model/refreshTokenResponse.js.map +0 -1
  529. package/dist/accessi-module/Console/generated/model/refreshTokenResult.js.map +0 -1
  530. package/dist/accessi-module/Console/generated/model/registerRequest.js.map +0 -1
  531. package/dist/accessi-module/Console/generated/model/registerResponse.js.map +0 -1
  532. package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +0 -1
  533. package/dist/accessi-module/Console/generated/model/revokeTokenRequest.js.map +0 -1
  534. package/dist/accessi-module/Console/generated/model/role.js.map +0 -1
  535. package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +0 -1
  536. package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +0 -1
  537. package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +0 -1
  538. package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +0 -1
  539. package/dist/accessi-module/Console/generated/model/scopeEntity.js.map +0 -1
  540. package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +0 -1
  541. package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +0 -1
  542. package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +0 -1
  543. package/dist/accessi-module/Console/generated/model/setMenuScopesRequest.js.map +0 -1
  544. package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +0 -1
  545. package/dist/accessi-module/Console/generated/model/setScopeMenusRequest.js.map +0 -1
  546. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +0 -1
  547. package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +0 -1
  548. package/dist/accessi-module/Console/generated/model/setUserPasswordRequest.js.map +0 -1
  549. package/dist/accessi-module/Console/generated/model/status.js.map +0 -1
  550. package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +0 -1
  551. package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +0 -1
  552. package/dist/accessi-module/Console/generated/model/tokenResult.js.map +0 -1
  553. package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +0 -1
  554. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +0 -1
  555. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +0 -1
  556. package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +0 -1
  557. package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +0 -1
  558. package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +0 -1
  559. package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +0 -1
  560. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +0 -1
  561. package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +0 -1
  562. package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +0 -1
  563. package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +0 -1
  564. package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +0 -1
  565. package/dist/accessi-module/Console/generated/model/updateScopeRequest.js.map +0 -1
  566. package/dist/accessi-module/Console/generated/model/userDto.js.map +0 -1
  567. package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +0 -1
  568. package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +0 -1
  569. package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +0 -1
  570. package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +0 -1
  571. package/dist/accessi-module/Console/help.js.map +0 -1
  572. package/dist/accessi-module/Console/wiki.js +0 -867
  573. package/dist/accessi-module/Console/wiki.js.map +0 -1
  574. package/dist/accessi-module/Controllers/AccessiAuditController.d.ts +0 -16
  575. package/dist/accessi-module/Controllers/AccessiAuditController.js +0 -155
  576. package/dist/accessi-module/Controllers/AccessiAuditController.js.map +0 -1
  577. package/dist/accessi-module/Controllers/AccessiConsoleController.js +0 -169
  578. package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +0 -1
  579. package/dist/accessi-module/Controllers/AccessiIntrospectionController.d.ts +0 -17
  580. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +0 -102
  581. package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +0 -1
  582. package/dist/accessi-module/Controllers/AuthController.d.ts +0 -24
  583. package/dist/accessi-module/Controllers/AuthController.js +0 -564
  584. package/dist/accessi-module/Controllers/AuthController.js.map +0 -1
  585. package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +0 -9
  586. package/dist/accessi-module/Controllers/ConfiguratorController.js +0 -136
  587. package/dist/accessi-module/Controllers/ConfiguratorController.js.map +0 -1
  588. package/dist/accessi-module/Controllers/ConsoleEntryController.d.ts +0 -16
  589. package/dist/accessi-module/Controllers/ConsoleEntryController.js +0 -159
  590. package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +0 -1
  591. package/dist/accessi-module/Controllers/EmailController.d.ts +0 -11
  592. package/dist/accessi-module/Controllers/EmailController.js +0 -112
  593. package/dist/accessi-module/Controllers/EmailController.js.map +0 -1
  594. package/dist/accessi-module/Controllers/FiltriController.d.ts +0 -20
  595. package/dist/accessi-module/Controllers/FiltriController.js +0 -303
  596. package/dist/accessi-module/Controllers/FiltriController.js.map +0 -1
  597. package/dist/accessi-module/Controllers/PermissionController.d.ts +0 -45
  598. package/dist/accessi-module/Controllers/PermissionController.js +0 -862
  599. package/dist/accessi-module/Controllers/PermissionController.js.map +0 -1
  600. package/dist/accessi-module/Controllers/SchemaController.d.ts +0 -9
  601. package/dist/accessi-module/Controllers/SchemaController.js +0 -79
  602. package/dist/accessi-module/Controllers/SchemaController.js.map +0 -1
  603. package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +0 -23
  604. package/dist/accessi-module/Controllers/ServiceTokenController.js +0 -176
  605. package/dist/accessi-module/Controllers/ServiceTokenController.js.map +0 -1
  606. package/dist/accessi-module/Controllers/UserController.d.ts +0 -39
  607. package/dist/accessi-module/Controllers/UserController.js +0 -724
  608. package/dist/accessi-module/Controllers/UserController.js.map +0 -1
  609. package/dist/accessi-module/Dtos/Abilitazione.js.map +0 -1
  610. package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +0 -1
  611. package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +0 -1
  612. package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +0 -1
  613. package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +0 -1
  614. package/dist/accessi-module/Dtos/AuditDtos.js.map +0 -1
  615. package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +0 -1
  616. package/dist/accessi-module/Dtos/BaseResponse.js.map +0 -1
  617. package/dist/accessi-module/Dtos/CatalogDtos.js.map +0 -1
  618. package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +0 -1
  619. package/dist/accessi-module/Dtos/ConsoleEntryDtos.js.map +0 -1
  620. package/dist/accessi-module/Dtos/FederatedExchangeDtos.js.map +0 -1
  621. package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +0 -1
  622. package/dist/accessi-module/Dtos/FiltriUtente.js.map +0 -1
  623. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +0 -1
  624. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +0 -1
  625. package/dist/accessi-module/Dtos/GetRolesResponse.js.map +0 -1
  626. package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +0 -1
  627. package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +0 -1
  628. package/dist/accessi-module/Dtos/GetUsersResponse.js.map +0 -1
  629. package/dist/accessi-module/Dtos/IntrospectionDtos.js.map +0 -1
  630. package/dist/accessi-module/Dtos/LoginAsDtos.js.map +0 -1
  631. package/dist/accessi-module/Dtos/LoginRequest.js.map +0 -1
  632. package/dist/accessi-module/Dtos/LoginResponse.js.map +0 -1
  633. package/dist/accessi-module/Dtos/MenuItem.js.map +0 -1
  634. package/dist/accessi-module/Dtos/Permission.js.map +0 -1
  635. package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +0 -1
  636. package/dist/accessi-module/Dtos/RefreshTokenDtos.js.map +0 -1
  637. package/dist/accessi-module/Dtos/RegisterRequest.js.map +0 -1
  638. package/dist/accessi-module/Dtos/RegisterResponse.js.map +0 -1
  639. package/dist/accessi-module/Dtos/RevokeTokenRequest.js.map +0 -1
  640. package/dist/accessi-module/Dtos/Role.js.map +0 -1
  641. package/dist/accessi-module/Dtos/RuoliMenu.js.map +0 -1
  642. package/dist/accessi-module/Dtos/SchemaDtos.js.map +0 -1
  643. package/dist/accessi-module/Dtos/ScopeDtos.js.map +0 -1
  644. package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +0 -1
  645. package/dist/accessi-module/Dtos/ServiceToken.js.map +0 -1
  646. package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +0 -1
  647. package/dist/accessi-module/Dtos/SetUserPasswordRequest.js.map +0 -1
  648. package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +0 -1
  649. package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +0 -1
  650. package/dist/accessi-module/Dtos/TipoFiltro.js.map +0 -1
  651. package/dist/accessi-module/Dtos/TokenResult.js.map +0 -1
  652. package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +0 -1
  653. package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +0 -1
  654. package/dist/accessi-module/Dtos/UserDto.js.map +0 -1
  655. package/dist/accessi-module/Dtos/UserGrantsDto.js.map +0 -1
  656. package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +0 -1
  657. package/dist/accessi-module/Dtos/index.js.map +0 -1
  658. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +0 -33
  659. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +0 -106
  660. package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +0 -1
  661. package/dist/accessi-module/Services/AuthService/AuthService.d.ts +0 -127
  662. package/dist/accessi-module/Services/AuthService/AuthService.js +0 -734
  663. package/dist/accessi-module/Services/AuthService/AuthService.js.map +0 -1
  664. package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +0 -1
  665. package/dist/accessi-module/Services/EmailService/EmailService.js +0 -439
  666. package/dist/accessi-module/Services/EmailService/EmailService.js.map +0 -1
  667. package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +0 -26
  668. package/dist/accessi-module/Services/FiltriService/FiltriService.js +0 -203
  669. package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +0 -1
  670. package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +0 -126
  671. package/dist/accessi-module/Services/PermissionService/PermissionService.js +0 -944
  672. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +0 -1
  673. package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +0 -1
  674. package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +0 -1
  675. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +0 -27
  676. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +0 -175
  677. package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +0 -1
  678. package/dist/accessi-module/Services/UserService/UserService.d.ts +0 -112
  679. package/dist/accessi-module/Services/UserService/UserService.js +0 -837
  680. package/dist/accessi-module/Services/UserService/UserService.js.map +0 -1
  681. package/dist/accessi-module/accessiRuntime.d.ts +0 -45
  682. package/dist/accessi-module/accessiRuntime.js +0 -39
  683. package/dist/accessi-module/accessiRuntime.js.map +0 -1
  684. package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +0 -1
  685. package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +0 -1
  686. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +0 -134
  687. package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +0 -1
  688. package/dist/accessi-module/database-updates/accessiSchema.js.map +0 -1
  689. package/dist/accessi-module/database-updates/menuScopeSeed.js.map +0 -1
  690. package/dist/accessi-module/database-updates/menuScopeSeeder.js.map +0 -1
  691. package/dist/accessi-module/database-updates/optionalColumns.js.map +0 -1
  692. package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +0 -1
  693. package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +0 -1
  694. package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +0 -33
  695. package/dist/accessi-module/federated-auth/FederatedAuthController.js +0 -373
  696. package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +0 -1
  697. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.d.ts +0 -15
  698. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js +0 -85
  699. package/dist/accessi-module/federated-auth/FederatedAuthExchangeController.js.map +0 -1
  700. package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +0 -102
  701. package/dist/accessi-module/federated-auth/FederatedAuthService.js +0 -472
  702. package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +0 -1
  703. package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +0 -53
  704. package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +0 -1
  705. package/dist/accessi-module/health/nest.js.map +0 -1
  706. package/dist/accessi-module/health/readiness.js.map +0 -1
  707. package/dist/accessi-module/index.d.ts +0 -88
  708. package/dist/accessi-module/index.js +0 -303
  709. package/dist/accessi-module/index.js.map +0 -1
  710. package/dist/accessi-module/jwt/jwt.strategy.d.ts +0 -9
  711. package/dist/accessi-module/jwt/jwt.strategy.js +0 -88
  712. package/dist/accessi-module/jwt/jwt.strategy.js.map +0 -1
  713. package/dist/accessi-module/middleware/accessiRequirements.js.map +0 -1
  714. package/dist/accessi-module/middleware/authenticateGen.d.ts +0 -32
  715. package/dist/accessi-module/middleware/authenticateGen.js +0 -315
  716. package/dist/accessi-module/middleware/authenticateGen.js.map +0 -1
  717. package/dist/accessi-module/observability/metrics.js +0 -220
  718. package/dist/accessi-module/observability/metrics.js.map +0 -1
  719. package/dist/accessi-module/observability/redisMetrics.js.map +0 -1
  720. package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +0 -1
  721. package/dist/accessi-module/security/accessControl.js.map +0 -1
  722. package/dist/accessi-module/security/accessTokenRevocation.js.map +0 -1
  723. package/dist/accessi-module/security/accessiValidation.js.map +0 -1
  724. package/dist/accessi-module/security/adminBootstrap.js.map +0 -1
  725. package/dist/accessi-module/security/audit.d.ts +0 -74
  726. package/dist/accessi-module/security/audit.js +0 -189
  727. package/dist/accessi-module/security/audit.js.map +0 -1
  728. package/dist/accessi-module/security/auditSinks.js.map +0 -1
  729. package/dist/accessi-module/security/authCookies.js.map +0 -1
  730. package/dist/accessi-module/security/authenticatedToken.d.ts +0 -31
  731. package/dist/accessi-module/security/authenticatedToken.js +0 -79
  732. package/dist/accessi-module/security/authenticatedToken.js.map +0 -1
  733. package/dist/accessi-module/security/consoleEntry.js.map +0 -1
  734. package/dist/accessi-module/security/edgeRateLimit.js.map +0 -1
  735. package/dist/accessi-module/security/emailConfiguration.js.map +0 -1
  736. package/dist/accessi-module/security/jwks.js.map +0 -1
  737. package/dist/accessi-module/security/jwksBootstrap.js.map +0 -1
  738. package/dist/accessi-module/security/jwtTokenOptions.js.map +0 -1
  739. package/dist/accessi-module/security/loginAs.js.map +0 -1
  740. package/dist/accessi-module/security/passwordPolicy.js.map +0 -1
  741. package/dist/accessi-module/security/passwordResetToken.js.map +0 -1
  742. package/dist/accessi-module/security/publicAuthRateLimit.js.map +0 -1
  743. package/dist/accessi-module/security/rateLimitStore.js.map +0 -1
  744. package/dist/accessi-module/security/refreshTokenRotation.js.map +0 -1
  745. package/dist/accessi-module/security/securityHeaders.js.map +0 -1
  746. package/dist/accessi-module/security/serviceTokenGuard.d.ts +0 -27
  747. package/dist/accessi-module/security/serviceTokenGuard.js +0 -90
  748. package/dist/accessi-module/security/serviceTokenGuard.js.map +0 -1
  749. package/dist/accessi-module/security/serviceTokenRateLimit.js.map +0 -1
  750. package/dist/accessi-module/security/sessionRevocation.js.map +0 -1
  751. package/dist/accessi-module/security/validateOptions.js.map +0 -1
  752. package/dist/accessi-module/startupLog.js.map +0 -1
  753. package/dist/allegati-module/Controllers/AllegatiController.d.ts +0 -36
  754. package/dist/allegati-module/Controllers/AllegatiController.js +0 -230
  755. package/dist/allegati-module/Controllers/AllegatiController.js.map +0 -1
  756. package/dist/allegati-module/Dtos/AllegatoDto.js.map +0 -1
  757. package/dist/allegati-module/Dtos/BaseResponse.js.map +0 -1
  758. package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +0 -1
  759. package/dist/allegati-module/Dtos/index.js.map +0 -1
  760. package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +0 -1
  761. package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +0 -1
  762. package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +0 -1
  763. package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +0 -61
  764. package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +0 -1
  765. package/dist/emilsoftware-utilities-2.0.0-dev.83.tgz +0 -0
  766. package/dist/firebird-compat.js +0 -269
  767. package/dist/firebird-compat.js.map +0 -1
  768. /package/dist/{accessi-module → accessi-service}/AccessiModule.d.ts +0 -0
  769. /package/dist/{accessi-module/Console → accessi-service/console}/accessiFetch.d.ts +0 -0
  770. /package/dist/{accessi-module/Console → accessi-service/console}/accessiFetch.js +0 -0
  771. /package/dist/{accessi-module/Console → accessi-service/console}/console.css +0 -0
  772. /package/dist/{accessi-module/Console → accessi-service/console}/console.d.ts +0 -0
  773. /package/dist/{accessi-module/Console → accessi-service/console}/generated/emilsoftware-utilities.d.ts +0 -0
  774. /package/dist/{accessi-module/Console → accessi-service/console}/generated/emilsoftware-utilities.js +0 -0
  775. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenu.d.ts +0 -0
  776. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenu.js +0 -0
  777. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +0 -0
  778. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/abilitazioneMenuTipoAbilitazione.js +0 -0
  779. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/accessiIntrospectionResultDto.d.ts +0 -0
  780. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/accessiIntrospectionResultDto.js +0 -0
  781. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/actionResponse.d.ts +0 -0
  782. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/actionResponse.js +0 -0
  783. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResponse.d.ts +0 -0
  784. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResponse.js +0 -0
  785. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResult.d.ts +0 -0
  786. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/adminBootstrapStatusResult.js +0 -0
  787. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignPermissionsToUserRequest.d.ts +0 -0
  788. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignPermissionsToUserRequest.js +0 -0
  789. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignRolesToUserRequest.d.ts +0 -0
  790. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/assignRolesToUserRequest.js +0 -0
  791. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedTokenPayloadDto.d.ts +0 -0
  792. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedTokenPayloadDto.js +0 -0
  793. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedUserPayloadDto.d.ts +0 -0
  794. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/authenticatedUserPayloadDto.js +0 -0
  795. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminRequest.d.ts +0 -0
  796. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminRequest.js +0 -0
  797. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResponse.d.ts +0 -0
  798. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResponse.js +0 -0
  799. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResultDto.d.ts +0 -0
  800. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/bootstrapAdminResultDto.js +0 -0
  801. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/confirmResetPasswordRequest.d.ts +0 -0
  802. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/confirmResetPasswordRequest.js +0 -0
  803. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryExchangeRequest.d.ts +0 -0
  804. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryExchangeRequest.js +0 -0
  805. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResponse.d.ts +0 -0
  806. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResponse.js +0 -0
  807. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResult.d.ts +0 -0
  808. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntrySessionResult.js +0 -0
  809. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResponse.d.ts +0 -0
  810. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResponse.js +0 -0
  811. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResult.d.ts +0 -0
  812. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTicketResult.js +0 -0
  813. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTokenResult.d.ts +0 -0
  814. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/consoleEntryTokenResult.js +0 -0
  815. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedIdentityRequest.d.ts +0 -0
  816. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedIdentityRequest.js +0 -0
  817. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedProviderRequest.d.ts +0 -0
  818. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedProviderRequest.js +0 -0
  819. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedUserRequest.d.ts +0 -0
  820. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFederatedUserRequest.js +0 -0
  821. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequest.d.ts +0 -0
  822. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequest.js +0 -0
  823. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequestFlgEnabled.d.ts +0 -0
  824. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createFilterTypeRequestFlgEnabled.js +0 -0
  825. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuGroupRequest.d.ts +0 -0
  826. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuGroupRequest.js +0 -0
  827. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuRequest.d.ts +0 -0
  828. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuRequest.js +0 -0
  829. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuTypeRequest.d.ts +0 -0
  830. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createMenuTypeRequest.js +0 -0
  831. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createScopeRequest.d.ts +0 -0
  832. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createScopeRequest.js +0 -0
  833. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenRequest.d.ts +0 -0
  834. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenRequest.js +0 -0
  835. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenResponse.d.ts +0 -0
  836. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/createServiceTokenResponse.js +0 -0
  837. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/errorResponse.d.ts +0 -0
  838. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/errorResponse.js +0 -0
  839. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exchangeFederatedIdentityRequest.d.ts +0 -0
  840. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exchangeFederatedIdentityRequest.js +0 -0
  841. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditOrder.d.ts +0 -0
  842. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditOrder.js +0 -0
  843. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditParams.d.ts +0 -0
  844. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/exportAuditParams.js +0 -0
  845. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedAuthenticationResultDto.d.ts +0 -0
  846. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedAuthenticationResultDto.js +0 -0
  847. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedExchangeResponse.d.ts +0 -0
  848. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedExchangeResponse.js +0 -0
  849. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityListResponse.d.ts +0 -0
  850. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityListResponse.js +0 -0
  851. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponse.d.ts +0 -0
  852. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponse.js +0 -0
  853. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponseDto.d.ts +0 -0
  854. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedIdentityResponseDto.js +0 -0
  855. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderListResponse.d.ts +0 -0
  856. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderListResponse.js +0 -0
  857. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponse.d.ts +0 -0
  858. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponse.js +0 -0
  859. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponseDto.d.ts +0 -0
  860. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/federatedProviderResponseDto.js +0 -0
  861. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/filtriUtente.d.ts +0 -0
  862. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/filtriUtente.js +0 -0
  863. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriResponse.d.ts +0 -0
  864. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriResponse.js +0 -0
  865. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteParams.d.ts +0 -0
  866. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteParams.js +0 -0
  867. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteResponse.d.ts +0 -0
  868. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getFiltriUtenteResponse.js +0 -0
  869. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusParams.d.ts +0 -0
  870. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusParams.js +0 -0
  871. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusResponse.d.ts +0 -0
  872. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getGroupsWithMenusResponse.js +0 -0
  873. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuScopesResponse.d.ts +0 -0
  874. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuScopesResponse.js +0 -0
  875. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuTypesResponse.d.ts +0 -0
  876. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenuTypesResponse.js +0 -0
  877. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusParams.d.ts +0 -0
  878. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusParams.js +0 -0
  879. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusResponse.d.ts +0 -0
  880. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getMenusResponse.js +0 -0
  881. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getRolesResponse.d.ts +0 -0
  882. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getRolesResponse.js +0 -0
  883. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getSchemaResponse.d.ts +0 -0
  884. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getSchemaResponse.js +0 -0
  885. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getScopesResponse.d.ts +0 -0
  886. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getScopesResponse.js +0 -0
  887. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensParams.d.ts +0 -0
  888. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensParams.js +0 -0
  889. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensResponse.d.ts +0 -0
  890. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getServiceTokensResponse.js +0 -0
  891. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenRequest.d.ts +0 -0
  892. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenRequest.js +0 -0
  893. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenResponse.d.ts +0 -0
  894. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserByTokenResponse.js +0 -0
  895. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserRolesAndGrantsParams.d.ts +0 -0
  896. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUserRolesAndGrantsParams.js +0 -0
  897. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersParams.d.ts +0 -0
  898. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersParams.js +0 -0
  899. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResponse.d.ts +0 -0
  900. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResponse.js +0 -0
  901. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResult.d.ts +0 -0
  902. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResult.js +0 -0
  903. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResultExtensionFields.d.ts +0 -0
  904. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/getUsersResultExtensionFields.js +0 -0
  905. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/groupWithMenusEntity.d.ts +0 -0
  906. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/groupWithMenusEntity.js +0 -0
  907. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/index.d.ts +0 -0
  908. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/index.js +0 -0
  909. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenRequest.d.ts +0 -0
  910. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenRequest.js +0 -0
  911. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenResponse.d.ts +0 -0
  912. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/introspectAccessiTokenResponse.js +0 -0
  913. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/issuedServiceTokenDto.d.ts +0 -0
  914. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/issuedServiceTokenDto.js +0 -0
  915. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsRequest.d.ts +0 -0
  916. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsRequest.js +0 -0
  917. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResponse.d.ts +0 -0
  918. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResponse.js +0 -0
  919. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResult.d.ts +0 -0
  920. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginAsResult.js +0 -0
  921. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginRequest.d.ts +0 -0
  922. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginRequest.js +0 -0
  923. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResponse.d.ts +0 -0
  924. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResponse.js +0 -0
  925. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResult.d.ts +0 -0
  926. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResult.js +0 -0
  927. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultExtensionFields.d.ts +0 -0
  928. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultExtensionFields.js +0 -0
  929. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultPasswordRequired.d.ts +0 -0
  930. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/loginResultPasswordRequired.js +0 -0
  931. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuEntity.d.ts +0 -0
  932. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuEntity.js +0 -0
  933. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuTypeEntity.d.ts +0 -0
  934. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/menuTypeEntity.js +0 -0
  935. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/passwordExpiredResponse.d.ts +0 -0
  936. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/passwordExpiredResponse.js +0 -0
  937. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/permission.d.ts +0 -0
  938. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/permission.js +0 -0
  939. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/publicRegisterRequest.d.ts +0 -0
  940. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/publicRegisterRequest.js +0 -0
  941. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditOrder.d.ts +0 -0
  942. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditOrder.js +0 -0
  943. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditParams.d.ts +0 -0
  944. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/queryAuditParams.js +0 -0
  945. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenRequest.d.ts +0 -0
  946. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenRequest.js +0 -0
  947. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResponse.d.ts +0 -0
  948. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResponse.js +0 -0
  949. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResult.d.ts +0 -0
  950. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/refreshTokenResult.js +0 -0
  951. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerRequest.d.ts +0 -0
  952. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerRequest.js +0 -0
  953. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerResponse.d.ts +0 -0
  954. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/registerResponse.js +0 -0
  955. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/resendTwoFactorRequest.d.ts +0 -0
  956. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/resendTwoFactorRequest.js +0 -0
  957. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/revokeTokenRequest.d.ts +0 -0
  958. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/revokeTokenRequest.js +0 -0
  959. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/role.d.ts +0 -0
  960. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/role.js +0 -0
  961. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenu.d.ts +0 -0
  962. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenu.js +0 -0
  963. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenuTipoAbilitazione.d.ts +0 -0
  964. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/ruoliMenuTipoAbilitazione.js +0 -0
  965. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlResult.d.ts +0 -0
  966. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlResult.js +0 -0
  967. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlSection.d.ts +0 -0
  968. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/schemaDdlSection.js +0 -0
  969. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/scopeEntity.d.ts +0 -0
  970. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/scopeEntity.js +0 -0
  971. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/sendResetPasswordEmailRequest.d.ts +0 -0
  972. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/sendResetPasswordEmailRequest.js +0 -0
  973. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serveResetPasswordPageParams.d.ts +0 -0
  974. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serveResetPasswordPageParams.js +0 -0
  975. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serviceTokenDto.d.ts +0 -0
  976. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/serviceTokenDto.js +0 -0
  977. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setMenuScopesRequest.d.ts +0 -0
  978. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setMenuScopesRequest.js +0 -0
  979. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setPasswordLoginPolicyRequest.d.ts +0 -0
  980. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setPasswordLoginPolicyRequest.js +0 -0
  981. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setScopeMenusRequest.d.ts +0 -0
  982. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setScopeMenusRequest.js +0 -0
  983. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDto.d.ts +0 -0
  984. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDto.js +0 -0
  985. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +0 -0
  986. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +0 -0
  987. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setUserPasswordRequest.d.ts +0 -0
  988. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/setUserPasswordRequest.js +0 -0
  989. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/status.d.ts +0 -0
  990. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/status.js +0 -0
  991. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltro.d.ts +0 -0
  992. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltro.js +0 -0
  993. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltroFlgEnabled.d.ts +0 -0
  994. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tipoFiltroFlgEnabled.js +0 -0
  995. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResult.d.ts +0 -0
  996. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResult.js +0 -0
  997. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResultType.d.ts +0 -0
  998. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/tokenResultType.js +0 -0
  999. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDto.d.ts +0 -0
  1000. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDto.js +0 -0
  1001. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoMethod.d.ts +0 -0
  1002. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoMethod.js +0 -0
  1003. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +0 -0
  1004. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +0 -0
  1005. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateEnabledStatusRequest.d.ts +0 -0
  1006. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateEnabledStatusRequest.js +0 -0
  1007. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedIdentityRequest.d.ts +0 -0
  1008. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedIdentityRequest.js +0 -0
  1009. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedProviderRequest.d.ts +0 -0
  1010. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFederatedProviderRequest.js +0 -0
  1011. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequest.d.ts +0 -0
  1012. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequest.js +0 -0
  1013. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +0 -0
  1014. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateFilterTypeRequestFlgEnabled.js +0 -0
  1015. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuGroupRequest.d.ts +0 -0
  1016. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuGroupRequest.js +0 -0
  1017. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuRequest.d.ts +0 -0
  1018. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuRequest.js +0 -0
  1019. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuTypeRequest.d.ts +0 -0
  1020. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateMenuTypeRequest.js +0 -0
  1021. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateScopeRequest.d.ts +0 -0
  1022. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/updateScopeRequest.js +0 -0
  1023. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDto.d.ts +0 -0
  1024. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDto.js +0 -0
  1025. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDtoStatoRegistrazione.d.ts +0 -0
  1026. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userDtoStatoRegistrazione.js +0 -0
  1027. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsDto.d.ts +0 -0
  1028. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsDto.js +0 -0
  1029. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsResponse.d.ts +0 -0
  1030. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/userGrantsResponse.js +0 -0
  1031. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/verifyTwoFactorRequest.d.ts +0 -0
  1032. /package/dist/{accessi-module/Console → accessi-service/console}/generated/model/verifyTwoFactorRequest.js +0 -0
  1033. /package/dist/{accessi-module/Console → accessi-service/console}/help.d.ts +0 -0
  1034. /package/dist/{accessi-module/Console → accessi-service/console}/help.js +0 -0
  1035. /package/dist/{accessi-module/Console → accessi-service/console}/index.html +0 -0
  1036. /package/dist/{accessi-module/Console → accessi-service/console}/wiki.d.ts +0 -0
  1037. /package/dist/{accessi-module/Controllers → accessi-service/controllers}/AccessiConsoleController.d.ts +0 -0
  1038. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiCatalogMigrator.d.ts +0 -0
  1039. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiCatalogMigrator.js +0 -0
  1040. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiDatabaseUpdater.d.ts +0 -0
  1041. /package/dist/{accessi-module → accessi-service}/database-updates/AccessiDatabaseUpdater.js +0 -0
  1042. /package/dist/{accessi-module → accessi-service}/database-updates/accessiOptionsFromEnv.d.ts +0 -0
  1043. /package/dist/{accessi-module → accessi-service}/database-updates/accessiSchema.d.ts +0 -0
  1044. /package/dist/{accessi-module → accessi-service}/database-updates/accessiSchema.js +0 -0
  1045. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeed.d.ts +0 -0
  1046. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeed.js +0 -0
  1047. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeeder.d.ts +0 -0
  1048. /package/dist/{accessi-module → accessi-service}/database-updates/menuScopeSeeder.js +0 -0
  1049. /package/dist/{accessi-module → accessi-service}/database-updates/optionalColumns.d.ts +0 -0
  1050. /package/dist/{accessi-module → accessi-service}/database-updates/optionalColumns.js +0 -0
  1051. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiCatalogMigrations.d.ts +0 -0
  1052. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiCatalogMigrations.js +0 -0
  1053. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiDbUpdate.d.ts +0 -0
  1054. /package/dist/{accessi-module → accessi-service}/database-updates/runAccessiDbUpdate.js +0 -0
  1055. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Abilitazione.d.ts +0 -0
  1056. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Abilitazione.js +0 -0
  1057. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AbilitazioneMenu.d.ts +0 -0
  1058. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AbilitazioneMenu.js +0 -0
  1059. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AdminBootstrapDtos.d.ts +0 -0
  1060. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AdminBootstrapDtos.js +0 -0
  1061. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignPermissionsToUserRequest.d.ts +0 -0
  1062. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignPermissionsToUserRequest.js +0 -0
  1063. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignRolesToUserRequest.d.ts +0 -0
  1064. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AssignRolesToUserRequest.js +0 -0
  1065. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuditDtos.d.ts +0 -0
  1066. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuditDtos.js +0 -0
  1067. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuthenticatedUserPayloadDto.d.ts +0 -0
  1068. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/AuthenticatedUserPayloadDto.js +0 -0
  1069. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/BaseResponse.d.ts +0 -0
  1070. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/BaseResponse.js +0 -0
  1071. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/CatalogDtos.d.ts +0 -0
  1072. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/CatalogDtos.js +0 -0
  1073. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConfirmResetPasswordRequest.d.ts +0 -0
  1074. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConfirmResetPasswordRequest.js +0 -0
  1075. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConsoleEntryDtos.d.ts +0 -0
  1076. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ConsoleEntryDtos.js +0 -0
  1077. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedExchangeDtos.d.ts +0 -0
  1078. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedExchangeDtos.js +0 -0
  1079. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedIdentityDtos.d.ts +0 -0
  1080. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FederatedIdentityDtos.js +0 -0
  1081. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FiltriUtente.d.ts +0 -0
  1082. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/FiltriUtente.js +0 -0
  1083. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetGroupsWithMenusResponse.d.ts +0 -0
  1084. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetGroupsWithMenusResponse.js +0 -0
  1085. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetMenusResponse.d.ts +0 -0
  1086. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetMenusResponse.js +0 -0
  1087. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetRolesResponse.d.ts +0 -0
  1088. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetRolesResponse.js +0 -0
  1089. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenRequest.d.ts +0 -0
  1090. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenRequest.js +0 -0
  1091. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenResponse.d.ts +0 -0
  1092. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUserByTokenResponse.js +0 -0
  1093. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUsersResponse.d.ts +0 -0
  1094. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/GetUsersResponse.js +0 -0
  1095. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/IntrospectionDtos.d.ts +0 -0
  1096. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/IntrospectionDtos.js +0 -0
  1097. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginAsDtos.d.ts +0 -0
  1098. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginAsDtos.js +0 -0
  1099. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginRequest.d.ts +0 -0
  1100. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginRequest.js +0 -0
  1101. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginResponse.d.ts +0 -0
  1102. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/LoginResponse.js +0 -0
  1103. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/MenuItem.d.ts +0 -0
  1104. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/MenuItem.js +0 -0
  1105. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Permission.d.ts +0 -0
  1106. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Permission.js +0 -0
  1107. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/PublicRegisterRequest.d.ts +0 -0
  1108. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/PublicRegisterRequest.js +0 -0
  1109. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RefreshTokenDtos.d.ts +0 -0
  1110. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RefreshTokenDtos.js +0 -0
  1111. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterRequest.d.ts +0 -0
  1112. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterRequest.js +0 -0
  1113. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterResponse.d.ts +0 -0
  1114. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RegisterResponse.js +0 -0
  1115. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RevokeTokenRequest.d.ts +0 -0
  1116. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RevokeTokenRequest.js +0 -0
  1117. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Role.d.ts +0 -0
  1118. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/Role.js +0 -0
  1119. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RuoliMenu.d.ts +0 -0
  1120. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/RuoliMenu.js +0 -0
  1121. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SchemaDtos.d.ts +0 -0
  1122. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SchemaDtos.js +0 -0
  1123. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ScopeDtos.d.ts +0 -0
  1124. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ScopeDtos.js +0 -0
  1125. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SendResetPasswordEmailRequest.d.ts +0 -0
  1126. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SendResetPasswordEmailRequest.js +0 -0
  1127. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ServiceToken.d.ts +0 -0
  1128. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/ServiceToken.js +0 -0
  1129. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetStatoRegistrazione.d.ts +0 -0
  1130. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetStatoRegistrazione.js +0 -0
  1131. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetUserPasswordRequest.d.ts +0 -0
  1132. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/SetUserPasswordRequest.js +0 -0
  1133. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/StatoRegistrazione.d.ts +0 -0
  1134. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/StatoRegistrazione.js +0 -0
  1135. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoAbilitazione.d.ts +0 -0
  1136. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoAbilitazione.js +0 -0
  1137. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoFiltro.d.ts +0 -0
  1138. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TipoFiltro.js +0 -0
  1139. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TokenResult.d.ts +0 -0
  1140. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TokenResult.js +0 -0
  1141. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TwoFactorDtos.d.ts +0 -0
  1142. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/TwoFactorDtos.js +0 -0
  1143. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UpdateEnabledStatusRequest.d.ts +0 -0
  1144. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UpdateEnabledStatusRequest.js +0 -0
  1145. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserDto.d.ts +0 -0
  1146. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserDto.js +0 -0
  1147. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsDto.d.ts +0 -0
  1148. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsDto.js +0 -0
  1149. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsResponse.d.ts +0 -0
  1150. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/UserGrantsResponse.js +0 -0
  1151. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/index.d.ts +0 -0
  1152. /package/dist/{accessi-module/Dtos → accessi-service/dtos}/index.js +0 -0
  1153. /package/dist/{accessi-module → accessi-service}/federated-auth/FederatedAuthTypes.js +0 -0
  1154. /package/dist/{accessi-module → accessi-service}/health/nest.d.ts +0 -0
  1155. /package/dist/{accessi-module → accessi-service}/health/nest.js +0 -0
  1156. /package/dist/{accessi-module → accessi-service}/health/readiness.d.ts +0 -0
  1157. /package/dist/{accessi-module → accessi-service}/health/readiness.js +0 -0
  1158. /package/dist/{accessi-module → accessi-service}/middleware/accessiRequirements.d.ts +0 -0
  1159. /package/dist/{accessi-module → accessi-service}/middleware/accessiRequirements.js +0 -0
  1160. /package/dist/{accessi-module → accessi-service}/observability/metrics.d.ts +0 -0
  1161. /package/dist/{accessi-module → accessi-service}/observability/redisMetrics.d.ts +0 -0
  1162. /package/dist/{accessi-module → accessi-service}/observability/redisMetrics.js +0 -0
  1163. /package/dist/{accessi-module → accessi-service}/security/AccessiHttpExceptionFilter.d.ts +0 -0
  1164. /package/dist/{accessi-module → accessi-service}/security/AccessiHttpExceptionFilter.js +0 -0
  1165. /package/dist/{accessi-module → accessi-service}/security/accessControl.d.ts +0 -0
  1166. /package/dist/{accessi-module → accessi-service}/security/accessControl.js +0 -0
  1167. /package/dist/{accessi-module → accessi-service}/security/accessTokenRevocation.d.ts +0 -0
  1168. /package/dist/{accessi-module → accessi-service}/security/accessTokenRevocation.js +0 -0
  1169. /package/dist/{accessi-module → accessi-service}/security/accessiValidation.d.ts +0 -0
  1170. /package/dist/{accessi-module → accessi-service}/security/accessiValidation.js +0 -0
  1171. /package/dist/{accessi-module → accessi-service}/security/adminBootstrap.d.ts +0 -0
  1172. /package/dist/{accessi-module → accessi-service}/security/adminBootstrap.js +0 -0
  1173. /package/dist/{accessi-module → accessi-service}/security/auditSinks.d.ts +0 -0
  1174. /package/dist/{accessi-module → accessi-service}/security/auditSinks.js +0 -0
  1175. /package/dist/{accessi-module → accessi-service}/security/authCookies.d.ts +0 -0
  1176. /package/dist/{accessi-module → accessi-service}/security/authCookies.js +0 -0
  1177. /package/dist/{accessi-module → accessi-service}/security/consoleEntry.d.ts +0 -0
  1178. /package/dist/{accessi-module → accessi-service}/security/consoleEntry.js +0 -0
  1179. /package/dist/{accessi-module → accessi-service}/security/edgeRateLimit.d.ts +0 -0
  1180. /package/dist/{accessi-module → accessi-service}/security/edgeRateLimit.js +0 -0
  1181. /package/dist/{accessi-module → accessi-service}/security/emailConfiguration.d.ts +0 -0
  1182. /package/dist/{accessi-module → accessi-service}/security/emailConfiguration.js +0 -0
  1183. /package/dist/{accessi-module → accessi-service}/security/jwks.d.ts +0 -0
  1184. /package/dist/{accessi-module → accessi-service}/security/jwks.js +0 -0
  1185. /package/dist/{accessi-module → accessi-service}/security/jwksBootstrap.d.ts +0 -0
  1186. /package/dist/{accessi-module → accessi-service}/security/jwksBootstrap.js +0 -0
  1187. /package/dist/{accessi-module → accessi-service}/security/jwtTokenOptions.d.ts +0 -0
  1188. /package/dist/{accessi-module → accessi-service}/security/jwtTokenOptions.js +0 -0
  1189. /package/dist/{accessi-module → accessi-service}/security/loginAs.d.ts +0 -0
  1190. /package/dist/{accessi-module → accessi-service}/security/loginAs.js +0 -0
  1191. /package/dist/{accessi-module → accessi-service}/security/passwordPolicy.d.ts +0 -0
  1192. /package/dist/{accessi-module → accessi-service}/security/passwordPolicy.js +0 -0
  1193. /package/dist/{accessi-module → accessi-service}/security/passwordResetToken.d.ts +0 -0
  1194. /package/dist/{accessi-module → accessi-service}/security/passwordResetToken.js +0 -0
  1195. /package/dist/{accessi-module → accessi-service}/security/publicAuthRateLimit.d.ts +0 -0
  1196. /package/dist/{accessi-module → accessi-service}/security/publicAuthRateLimit.js +0 -0
  1197. /package/dist/{accessi-module → accessi-service}/security/rateLimitStore.d.ts +0 -0
  1198. /package/dist/{accessi-module → accessi-service}/security/rateLimitStore.js +0 -0
  1199. /package/dist/{accessi-module → accessi-service}/security/refreshTokenRotation.d.ts +0 -0
  1200. /package/dist/{accessi-module → accessi-service}/security/refreshTokenRotation.js +0 -0
  1201. /package/dist/{accessi-module → accessi-service}/security/securityHeaders.d.ts +0 -0
  1202. /package/dist/{accessi-module → accessi-service}/security/securityHeaders.js +0 -0
  1203. /package/dist/{accessi-module → accessi-service}/security/serviceTokenRateLimit.d.ts +0 -0
  1204. /package/dist/{accessi-module → accessi-service}/security/serviceTokenRateLimit.js +0 -0
  1205. /package/dist/{accessi-module → accessi-service}/security/sessionRevocation.d.ts +0 -0
  1206. /package/dist/{accessi-module → accessi-service}/security/sessionRevocation.js +0 -0
  1207. /package/dist/{accessi-module → accessi-service}/security/validateOptions.d.ts +0 -0
  1208. /package/dist/{accessi-module → accessi-service}/security/validateOptions.js +0 -0
  1209. /package/dist/{accessi-module/Services/ConfiguratorService → accessi-service/services/configurator-service}/ConfiguratorService.d.ts +0 -0
  1210. /package/dist/{accessi-module/Services/ConfiguratorService → accessi-service/services/configurator-service}/ConfiguratorService.js +0 -0
  1211. /package/dist/{accessi-module/Services/EmailService → accessi-service/services/email-service}/EmailService.d.ts +0 -0
  1212. /package/dist/{accessi-module/Services/SchemaExportService → accessi-service/services/schema-export-service}/SchemaExportService.d.ts +0 -0
  1213. /package/dist/{accessi-module/Services/SchemaExportService → accessi-service/services/schema-export-service}/SchemaExportService.js +0 -0
  1214. /package/dist/{accessi-module/Services/ServiceTokenService → accessi-service/services/service-token-service}/ServiceTokenService.d.ts +0 -0
  1215. /package/dist/{accessi-module/Services/ServiceTokenService → accessi-service/services/service-token-service}/ServiceTokenService.js +0 -0
  1216. /package/dist/{accessi-module → accessi-service}/startupLog.d.ts +0 -0
  1217. /package/dist/{accessi-module → accessi-service}/startupLog.js +0 -0
  1218. /package/dist/{accessi-module/Views → accessi-service/views}/reset-password.html +0 -0
  1219. /package/dist/allegati-module/{Dtos → dtos}/AllegatoDto.d.ts +0 -0
  1220. /package/dist/allegati-module/{Dtos → dtos}/AllegatoDto.js +0 -0
  1221. /package/dist/allegati-module/{Dtos → dtos}/BaseResponse.d.ts +0 -0
  1222. /package/dist/allegati-module/{Dtos → dtos}/BaseResponse.js +0 -0
  1223. /package/dist/allegati-module/{Dtos → dtos}/UploadSingleFileRequest.d.ts +0 -0
  1224. /package/dist/allegati-module/{Dtos → dtos}/UploadSingleFileRequest.js +0 -0
  1225. /package/dist/allegati-module/{Dtos → dtos}/index.d.ts +0 -0
  1226. /package/dist/allegati-module/{Dtos → dtos}/index.js +0 -0
  1227. /package/dist/allegati-module/{Dtos → dtos}/responses/DownloadAllegatoResponseDto.d.ts +0 -0
  1228. /package/dist/allegati-module/{Dtos → dtos}/responses/DownloadAllegatoResponseDto.js +0 -0
  1229. /package/dist/allegati-module/{Dtos → dtos}/responses/GetListResponse.d.ts +0 -0
  1230. /package/dist/allegati-module/{Dtos → dtos}/responses/GetListResponse.js +0 -0
  1231. /package/dist/allegati-module/{Dtos → dtos}/responses/UploadAllegatoResponseDto.d.ts +0 -0
  1232. /package/dist/allegati-module/{Dtos → dtos}/responses/UploadAllegatoResponseDto.js +0 -0
  1233. /package/dist/allegati-module/{Services/AllegatiService → services/allegati-service}/AllegatiService.js +0 -0
  1234. /package/dist/{firebird-compat.d.ts → firebirdCompat.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/accessi-service/console/console.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assignPermissionsToUser,\n assignRolesToUser,\n bootstrapAdmin,\n createFederatedUser,\n createFederatedProvider,\n createManagedUser,\n createLoginAsUrl,\n createMenu,\n createMenuGroup,\n createMenuType,\n createScope,\n createRole,\n createServiceToken,\n deleteFederatedIdentityPermanently,\n deleteFederatedProvider,\n deleteMenu,\n deleteMenuGroup,\n deleteMenuType,\n deleteScope,\n deleteRole,\n deleteUser,\n deleteUserPermanently,\n exchangeConsoleEntryTicket,\n forcePasswordResetLegacy,\n getAdminBootstrapStatus,\n getFederatedIdentities,\n getFederatedProviders,\n getGroupsWithMenus,\n getMenuScopes,\n getMenuTypes,\n getScopes,\n getRoles,\n getSchema,\n getServiceTokens,\n getUserByToken,\n getUserRolesAndGrants,\n getUsers,\n linkFederatedIdentity,\n login,\n verifyTwoFactor,\n resendTwoFactor,\n revokeToken,\n revokeServiceToken,\n rotateServiceToken,\n setGdpr,\n setGroupEnabled,\n setMenuEnabled,\n setScopeMenus,\n setStatoRegistrazione,\n setUserPassword,\n updateFederatedIdentity,\n updateFederatedProvider,\n updateMenu,\n updateMenuGroup,\n updateMenuType,\n updateScope,\n updateRole,\n updateUtente,\n} from './generated/emilsoftware-utilities';\nimport { ACCESSI_UNAUTHORIZED_EVENT, setAccessiConsoleToken } from './accessiFetch';\nimport { WIKI_SECTIONS, wikiGroups, buildAiDigest } from './wiki';\nimport changelogMarkdown from './changelog.md';\nimport type { WikiBlock } from './wiki';\nimport { HELP } from './help';\nimport type {\n CreateFederatedUserRequest,\n CreateFederatedProviderRequest,\n AuthenticatedTokenPayloadDto,\n BootstrapAdminResultDto,\n ConsoleEntrySessionResult,\n FederatedProviderResponseDto,\n GroupWithMenusEntity,\n LoginAsResult,\n LoginResult,\n MenuEntity,\n MenuTypeEntity,\n Permission,\n RegisterRequest,\n Role,\n SchemaDdlResult,\n ScopeEntity,\n ServiceTokenDto,\n IssuedServiceTokenDto,\n UserDto,\n UpdateFederatedProviderRequest,\n} from './generated/model';\n\ntype UserRow = { utente: UserDto; userGrants?: { ruoli?: Array<{ codiceRuolo?: number; descrizioneRuolo?: string }> } };\ntype PageRouteSuggestion = { value: string; menu?: string; group?: string; disabled: boolean };\ntype ConsoleUser = { codiceUtente: number; email?: string; flagSuper: boolean; flagAdmin: boolean };\ntype FederatedProvider = FederatedProviderResponseDto;\ntype ConsoleFederatedIdentity = { identityKey: string; provider: string; subject: string; active: boolean; note?: string };\ntype UserDetailTab = 'sso' | 'profile' | 'roles' | 'grants' | 'loginAs';\ntype ConsoleView =\n | 'users'\n | 'roles'\n | 'menuGroups'\n | 'menuItems'\n | 'menuTypes'\n | 'menuScopes'\n | 'ssoProviders'\n | 'ssoUsers'\n | 'tokens'\n | 'wiki'\n | 'changelog'\n | 'sql';\n\nconst routeSegment: Record<ConsoleView, string> = {\n users: 'utenti',\n roles: 'ruoli-e-grant',\n menuGroups: 'menu-e-gruppi/gruppi',\n menuItems: 'menu-e-gruppi/menu',\n menuTypes: 'menu-e-gruppi/tipi-menu',\n menuScopes: 'menu-e-gruppi/scope',\n ssoProviders: 'sso/provider',\n ssoUsers: 'sso/utenti',\n tokens: 'token-di-servizio',\n wiki: 'wiki',\n changelog: 'changelog',\n sql: 'sql',\n};\nconst routeView = Object.fromEntries(Object.entries(routeSegment).map(([view, segment]) => [segment, view])) as Record<string, ConsoleView>;\n// I padri dei sottomenu hanno un URL proprio: senza figlio selezionato si apre la prima voce.\nconst parentDefaultView: Record<string, ConsoleView> = {\n 'menu-e-gruppi': 'menuGroups',\n sso: 'ssoProviders',\n};\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\nconst USERS_PAGE_SIZE = 25;\n\nlet token = sessionStorage.getItem('accessi-console-token');\n/** Modalita cookie httpOnly: il token non e leggibile da JS e viaggia nei cookie. */\nconst cookieMode = typeof window !== 'undefined' && window.__ACCESSI_AUTH_COOKIE__ === true;\nlet currentUser: ConsoleUser | null = null;\nlet federatedAuthenticationAvailable = false;\nlet usersPage = 0;\nlet usersTotal = 0;\nlet booting = true;\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));\n/** Icona SVG inline per i pulsanti azione, coerente con la sidebar. */\nfunction actionIcon(paths: string): string {\n return `<svg class=\"button-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">${paths}</svg>`;\n}\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\nconst noticeTimers = new Set<number>();\n\n/**\n * Mostra una notifica non bloccante in alto a destra. Successi ed errori si\n * rimuovono da soli; il pulsante di chiusura consente di anticipare la chiusura.\n */\nfunction showNotice(message: string, isError = false): void {\n const container = byId('notice');\n // Un messaggio vuoto azzera tutte le notifiche (usato al logout e al cambio vista).\n if (!message) {\n noticeTimers.forEach((timer) => window.clearTimeout(timer));\n noticeTimers.clear();\n container.innerHTML = '';\n return;\n }\n\n const toast = document.createElement('div');\n const kind = isError ? 'error' : 'success';\n const icon = isError ? '!' : '\\u2713';\n toast.className = `notice notice-${kind}`;\n toast.setAttribute('role', isError ? 'alert' : 'status');\n toast.innerHTML = `<span class=\"notice-icon\" aria-hidden=\"true\">${icon}</span><span class=\"notice-text\">${escapeHtml(message)}</span><button type=\"button\" class=\"notice-close\" aria-label=\"Chiudi il messaggio\">&times;</button>`;\n container.appendChild(toast);\n\n let timer: number | undefined;\n const dismiss = () => {\n if (timer !== undefined) {\n window.clearTimeout(timer);\n noticeTimers.delete(timer);\n timer = undefined;\n }\n toast.remove();\n };\n toast.querySelector<HTMLButtonElement>('.notice-close')?.addEventListener('click', dismiss);\n timer = window.setTimeout(dismiss, isError ? 9000 : 5000);\n noticeTimers.add(timer);\n\n // Evita che una raffica di errori renda il contenitore illimitato.\n while (container.childElementCount > 4) container.firstElementChild?.remove();\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 ${helpDot('grant-direct')}</h3><p class=\"form-help\">Grant diretti, indipendenti dai ruoli. Seleziona <strong>nessuno</strong> per rimuoverli.</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 ${helpDot('grant-level')}<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 ${helpDot('role-assignment')}</h3><p class=\"form-help\">Salvare sostituisce i 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/** Vista compatta di un ruolo: identità, azioni e albero delle abilitazioni su richiesta. */\nfunction roleOverview(role: Role, groups: GroupWithMenusEntity[]): string {\n const roleMenus = role.menu ?? [];\n const assignments = new Map(roleMenus.map((item) => [item.codiceMenu, item]));\n const knownMenus = new Set(groups.flatMap((group) => group.menus.map((menu) => menu.codiceMenu)));\n const tree = groups\n .map((group) => ({ group, entries: group.menus.filter((menu) => assignments.has(menu.codiceMenu)) }))\n .filter((node) => node.entries.length > 0);\n const orphans = roleMenus.filter((item) => !knownMenus.has(item.codiceMenu));\n\n const groupNodes = tree.map(({ group, entries }) => `<li class=\"role-tree-group ${group.enabled === false ? 'is-disabled' : ''}\"><div class=\"role-tree-group-head\"><strong>${escapeHtml(group.descrizioneGruppo)}</strong><span class=\"role-tree-count\">${entries.length}</span></div><ul class=\"role-tree-menus\">${entries.map((menu) => `<li class=\"role-tree-menu ${menu.enabled === false ? 'is-disabled' : ''}\"><span class=\"role-tree-menu-name\">${escapeHtml(menu.descrizioneMenu)}</span><span class=\"permission-level\">${escapeHtml(rolePermissionLevel(assignments.get(menu.codiceMenu)?.tipoAbilitazione))}</span></li>`).join('')}</ul></li>`).join('');\n const orphanNode = orphans.length\n ? `<li class=\"role-tree-group is-orphan\"><div class=\"role-tree-group-head\"><strong>Menu non più nel catalogo</strong><span class=\"role-tree-count\">${orphans.length}</span></div><ul class=\"role-tree-menus\">${orphans.map((item) => `<li class=\"role-tree-menu\"><span class=\"role-tree-menu-name\"><code>${escapeHtml(item.codiceMenu)}</code></span><span class=\"permission-level\">${escapeHtml(rolePermissionLevel(item.tipoAbilitazione))}</span></li>`).join('')}</ul></li>`\n : '';\n\n return `<article class=\"role-card\">\n <div class=\"role-card-head\">\n <div class=\"role-card-title\">\n <strong>${escapeHtml(role.descrizioneRuolo)}</strong>\n <span class=\"role-card-meta\">Codice ${escapeHtml(role.codiceRuolo)} &middot; ${roleMenus.length} menu</span>\n </div>\n <div class=\"role-card-actions\">\n <button type=\"button\" class=\"secondary\" data-role=\"${escapeHtml(role.codiceRuolo)}\">Modifica</button>\n <button type=\"button\" class=\"danger-button\" data-role-delete=\"${escapeHtml(role.codiceRuolo)}\">Elimina</button>\n </div>\n </div>\n ${roleMenus.length ? `<details class=\"role-card-menus\"><summary>Abilitazioni per menu (${roleMenus.length})</summary><ul class=\"role-tree\">${groupNodes}${orphanNode}</ul></details>` : '<p class=\"role-card-empty\">Nessun menu assegnato.</p>'}\n </article>`;\n}\n\n/** Editor compatto dei menu di un ruolo: inclusione e livello, raggruppati per gruppo. */\nfunction roleMenuEditorTable(group: GroupWithMenusEntity, role?: Role): string {\n const roleMenus = role?.menu ?? [];\n const options = group.menus.map((menu) => {\n const assignment = roleMenus.find((item) => item.codiceMenu === menu.codiceMenu);\n const level = assignment?.tipoAbilitazione ?? 10;\n return `<li class=\"role-menu-option ${menu.enabled === false ? 'is-disabled' : ''}\"><label class=\"check\"><input type=\"checkbox\" name=\"menu\" value=\"${escapeHtml(menu.codiceMenu)}\" ${assignment ? 'checked' : ''}><span>${escapeHtml(menu.descrizioneMenu)}</span></label><label class=\"role-menu-level\"><span class=\"sr-only\">Livello per ${escapeHtml(menu.descrizioneMenu)}</span><select name=\"menu-level:${escapeHtml(menu.codiceMenu)}\" ${assignment ? '' : 'disabled'}>${permissionSelectOptions(level)}</select></label></li>`;\n }).join('');\n return `<section class=\"role-menu-group ${group.enabled === false ? 'is-disabled' : ''}\">\n <div class=\"role-menu-group-head\"><strong>${escapeHtml(group.descrizioneGruppo)}</strong>${group.enabled === false ? '<span class=\"muted\">Gruppo disabilitato</span>' : ''}</div>\n <ul class=\"role-menu-options\">${options || '<li class=\"role-menu-empty muted\">Nessun menu in questo gruppo.</li>'}</ul>\n </section>`;\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 // Durante il boot l'overlay è gestito manualmente (verifica sessione), non dalle richieste di rete.\n if (booting) {\n return;\n }\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\n/** Chiude la fase di boot e mostra login o console: evita il lampeggio del login a ogni reload. */\nfunction finishBoot(view: 'login' | 'console'): void {\n booting = false;\n const overlay = byId('loading-overlay');\n overlay.hidden = true;\n byId('app').removeAttribute('aria-busy');\n byId('login').hidden = view !== 'login';\n byId('console').hidden = view !== 'console';\n}\n\nfunction errorMessage(error: unknown): string {\n if (!(error instanceof Error)) return 'Operazione non riuscita.';\n const extra = error as unknown as { code?: unknown; details?: unknown };\n const code = typeof extra.code === 'string' ? extra.code : undefined;\n const details = Array.isArray(extra.details) ? extra.details.map((item) => String(item)) : [];\n const detailSuffix = details.length ? ` (${details.join('; ')})` : '';\n const message = code && !error.message.startsWith(`${code}:`) ? `${code}: ${error.message}` : error.message;\n return `${message}${detailSuffix}`;\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 closeHelp(false);\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 // Apre il ramo dell'albero che contiene la voce attiva.\n document.querySelectorAll<HTMLDetailsElement>('#nav details[data-nav-group]').forEach((branch) => {\n if (branch.querySelector(`[data-view=\"${view}\"]`)) branch.open = true;\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 const decoded = decodeURIComponent(relativePath);\n return routeView[decoded] ?? parentDefaultView[decoded] ?? '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 if (!isViewAllowed(view)) {\n view = 'users';\n replace = true;\n }\n const destination = routePath(view);\n if (window.location.pathname !== destination) {\n window.history[replace ? 'replaceState' : 'pushState']({ view }, '', destination);\n }\n // Tornando alla sezione utenti dal menu si riparte dalla prima pagina.\n if (view === 'users') usersPage = 0;\n await show(view);\n}\n\nfunction requireConsoleAccess(): void {\n if (!currentUser?.flagSuper && !currentUser?.flagAdmin) {\n throw new Error('La console richiede un superutente o un admin Accessi.');\n }\n}\n\n/**\n * Un admin accede a tutte le sezioni. Un superutente (senza admin) gestisce solo gli Utenti.\n */\nfunction isViewAllowed(view: ConsoleView): boolean {\n if (!currentUser) return false;\n if (currentUser.flagAdmin) return true;\n return view === 'users';\n}\n\n/** Mostra/nasconde le voci di navigazione in base ai flag dell'utente connesso. */\nfunction applyRoleNavigation(): void {\n document.querySelectorAll<HTMLElement>('#nav [data-view]').forEach((link) => {\n const view = link.dataset.view as ConsoleView;\n const item = link.closest('li') ?? link;\n item.hidden = !isViewAllowed(view);\n });\n document.querySelectorAll<HTMLElement>('#nav details[data-nav-group]').forEach((branch) => {\n const hasVisible = Array.from(branch.querySelectorAll<HTMLElement>('[data-view]')).some((link) => !link.closest('li')!.hidden);\n branch.hidden = !hasVisible;\n });\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 ${helpDot('sso-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\">Deve corrispondere alla configurazione del backend.</span></label>\n <label>ID utente del provider (subject) ${helpDot('sso-subject')}<input name=\"subject\" required><span class=\"form-help\">Identificatore stabile (es. <code>oid</code> Azure, <code>sub</code> Google/OIDC, <code>NameID</code> SAML). Mai l'email: apri la guida.</span></label>\n <label>Nota ${helpDot('sso-note')}<input name=\"note\"><span class=\"form-help\">Nota interna, non inviata al provider.</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\">Disabilita conserva lo storico; elimina rimuove il collegamento (l'utente resta).</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/**\n * Pannello Login as: genera per l'utente target un token breve da allegare\n * all'URL dell'applicazione indicata dall'amministratore.\n */\nfunction loginAsPanel(user: UserDto): string {\n return `<form id=\"login-as\" class=\"user-editor-section\" data-user-panel=\"loginAs\" role=\"tabpanel\" aria-labelledby=\"user-tab-loginAs\">\n <div class=\"section-heading\"><div><p class=\"eyebrow\">Accesso temporaneo</p><h3>Login as ${helpDot('user-login-as')}</h3></div><span class=\"muted\">Solo superutenti e admin</span></div>\n <div class=\"login-as-info\"><strong>Prima di generare l'URL</strong><ul><li>Il token ha la <strong>stessa durata della sessione Accessi standard</strong> (<code>jwtOptions.expiresIn</code>) e permette di entrare nell'applicazione come <strong>${escapeHtml(user.email)}</strong>.</li><li>È una credenziale: chiunque abbia l'URL può usarlo fino alla scadenza. Non condividerlo e non salvarlo.</li><li>Il token viene allegato come <code>?loginAsToken=</code> all'URL indicato. L'applicazione di destinazione decide come consumarlo.</li><li>L'operazione è consentita solo a superutenti e admin, nel rispetto della gerarchia ADMIN &gt; SUPER.</li></ul></div>\n <label>URL dell'applicazione ${helpDot('login-as-url')}<input name=\"url\" type=\"url\" placeholder=\"https://app.example.com/\" maxlength=\"2048\" required><span class=\"form-help\">URL assoluto http/https. Eventuali query o fragment esistenti vengono conservati.</span></label>\n <button type=\"submit\">Genera URL di accesso</button>\n <div id=\"login-as-result\" class=\"token-reveal\" hidden><code id=\"login-as-url\"></code><a id=\"login-as-open\" class=\"button-link\" href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\">Apri</a><button id=\"login-as-copy\" type=\"button\">Copia URL</button></div>\n </form>`;\n}\n\n/** Builds the tab list for user administration without coupling it to a framework router. */\nfunction userDetailTabs(hasSso: boolean, hasLoginAs: 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 ...(hasLoginAs ? [{ id: 'loginAs' as const, label: 'Login as' }] : []),\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\n/** Carica tutti gli utenti (usato dalla sezione SSO, che popola un selettore completo). */\nasync function loadUsers(): Promise<UserRow[]> {\n return result(await getUsers({ includeGrants: true })) as UserRow[];\n}\n\n/** Carica la pagina corrente della lista utenti e il totale (header X-Total-Count). */\nasync function loadUsersPage(): Promise<{ users: UserRow[]; total: number }> {\n const response = await getUsers({\n includeGrants: true,\n limit: USERS_PAGE_SIZE,\n offset: usersPage * USERS_PAGE_SIZE,\n });\n const users = result<UserRow[]>(response);\n const headers = (response as unknown as { headers?: Headers }).headers;\n const totalHeader = headers?.get?.('X-Total-Count') ?? null;\n const parsed = totalHeader !== null && totalHeader !== '' ? Number(totalHeader) : Number.NaN;\n const total = Number.isFinite(parsed) ? parsed : usersPage * USERS_PAGE_SIZE + users.length;\n return { users, total };\n}\n\n/** Numeri di pagina da mostrare, con ellissi quando le pagine sono molte. */\nfunction pageNumbers(current: number, total: number): Array<number | 'gap'> {\n if (total <= 7) {\n return Array.from({ length: total }, (_, index) => index + 1);\n }\n const wanted = new Set<number>([1, total, current, current - 1, current + 1]);\n const sorted = Array.from(wanted).filter((page) => page >= 1 && page <= total).sort((a, b) => a - b);\n const result: Array<number | 'gap'> = [];\n let previous = 0;\n for (const page of sorted) {\n if (previous !== 0 && page - previous > 1) {\n result.push('gap');\n }\n result.push(page);\n previous = page;\n }\n return result;\n}\n\n/** Paginatore orizzontale con numeri di pagina (troncati) e riepilogo del contesto. */\nfunction pagerMarkup(totalPages: number): string {\n const context = `<span class=\"pager-context\">${usersTotal} utent${usersTotal === 1 ? 'e' : 'i'}${totalPages > 1 ? ` · pagina ${usersPage + 1} di ${totalPages}` : ''}</span>`;\n if (totalPages <= 1) {\n return `<nav class=\"pager\" aria-label=\"Paginazione utenti\">${context}</nav>`;\n }\n\n const numbers = pageNumbers(usersPage + 1, totalPages).map((page) => page === 'gap'\n ? '<span class=\"pager-gap\" aria-hidden=\"true\">&hellip;</span>'\n : `<button type=\"button\" class=\"pager-item\" data-goto=\"${page}\"${page === usersPage + 1 ? ' aria-current=\"page\"' : ''}>${page}</button>`).join('');\n\n const controls = `<span class=\"pager-controls\">`\n + `<button type=\"button\" class=\"pager-item pager-nav\" data-goto=\"prev\"${usersPage === 0 ? ' disabled' : ''} aria-label=\"Pagina precedente\">&lsaquo;</button>`\n + numbers\n + `<button type=\"button\" class=\"pager-item pager-nav\" data-goto=\"next\"${usersPage >= totalPages - 1 ? ' disabled' : ''} aria-label=\"Pagina successiva\">&rsaquo;</button>`\n + '</span>';\n\n return `<nav class=\"pager\" aria-label=\"Paginazione utenti\">${controls}${context}</nav>`;\n}\n\n/** Cella ruoli con etichette; se sono molte mostra \"altre N\" che espande la riga chiudendo le altre. */\nfunction rolesCell(codiceUtente: number, userGrants?: UserRow['userGrants']): string {\n const labels = (userGrants?.ruoli ?? [])\n .map((role) => role.descrizioneRuolo?.trim() || (role.codiceRuolo ? `#${role.codiceRuolo}` : ''))\n .filter((label): label is string => label.length > 0);\n if (labels.length === 0) {\n return '<span class=\"muted\">&mdash;</span>';\n }\n\n const limit = 2;\n if (labels.length <= limit) {\n return `<span class=\"roles-list\">${labels.map(escapeHtml).join(', ')}</span>`;\n }\n\n const hiddenCount = labels.length - limit;\n return `<span class=\"roles-cell\" data-roles-cell=\"${codiceUtente}\">`\n + `<span class=\"roles-list\" data-roles-collapsed>${labels.slice(0, limit).map(escapeHtml).join(', ')}</span>`\n + `<span class=\"roles-list\" data-roles-full hidden>${labels.map(escapeHtml).join(', ')}</span>`\n + `<button type=\"button\" class=\"link-button\" data-roles-toggle=\"${codiceUtente}\" data-roles-more=\"${hiddenCount}\" aria-expanded=\"false\">altre ${hiddenCount}</button>`\n + '</span>';\n}\n\nfunction setRolesExpanded(cell: HTMLElement, expanded: boolean): void {\n cell.querySelector<HTMLElement>('[data-roles-collapsed]')?.toggleAttribute('hidden', expanded);\n cell.querySelector<HTMLElement>('[data-roles-full]')?.toggleAttribute('hidden', !expanded);\n const button = cell.querySelector<HTMLButtonElement>('[data-roles-toggle]');\n if (button) {\n button.setAttribute('aria-expanded', String(expanded));\n button.textContent = expanded ? 'mostra meno' : `altre ${button.dataset.rolesMore ?? ''}`;\n }\n}\n\n/** Espande una riga alla volta, chiudendo le altre. */\nfunction bindRolesToggles(): void {\n document.querySelectorAll<HTMLButtonElement>('[data-roles-toggle]').forEach((button) => {\n button.onclick = () => {\n const cell = button.closest<HTMLElement>('[data-roles-cell]');\n if (!cell) return;\n const willExpand = button.getAttribute('aria-expanded') !== 'true';\n document.querySelectorAll<HTMLElement>('[data-roles-cell]').forEach((other) => {\n if (other !== cell) setRolesExpanded(other, false);\n });\n setRolesExpanded(cell, willExpand);\n };\n });\n}\n\n/**\n * La sezione \"Crea utente admin\" compare solo se il backend ha adminBootstrap abilitato;\n * in caso di errore o risposta inattesa la si nasconde per sicurezza.\n */\nasync function applyAdminBootstrapVisibility(): Promise<void> {\n const panel = document.getElementById('bootstrap-admin-panel');\n if (!panel) return;\n try {\n const status = result<{ enabled?: boolean }>(await getAdminBootstrapStatus());\n panel.hidden = status.enabled !== true;\n } catch {\n panel.hidden = true;\n }\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) {\n token = response.token.value;\n sessionStorage.setItem('accessi-console-token', token);\n setAccessiConsoleToken(token);\n } else if (!cookieMode) {\n throw new Error('Risposta di autenticazione incompleta.');\n }\n resetLogin();\n await bootstrap();\n}\n\nasync function bootstrap(): Promise<void> {\n const hadToken = token !== null;\n try {\n setAccessiConsoleToken(token);\n if (!token && !cookieMode) throw new Error('Inserisci le credenziali amministrative.');\n const payload = result<AuthenticatedTokenPayloadDto>(await getUserByToken({ token: token ?? '' }));\n currentUser = payload.userData;\n requireConsoleAccess();\n applyRoleNavigation();\n await detectFederatedAuthentication();\n const roleLabel = currentUser.flagSuper && currentUser.flagAdmin ? 'super + admin' : currentUser.flagAdmin ? 'admin' : 'superutente';\n byId('who').textContent = `${currentUser.email} - ${roleLabel}`;\n byId<HTMLButtonElement>('sso-navigation').hidden = !federatedAuthenticationAvailable;\n finishBoot('console');\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 finishBoot('login');\n byId('login-error').textContent = cookieMode && !hadToken\n ? ''\n : (error instanceof Error ? error.message : 'Sessione non valida.');\n }\n}\n\n/**\n * Auto-ingresso alla console da un frontend gia autenticato: scambia il ticket\n * monouso (`#entry=<ticket>`) con la sessione Accessi e avvia la console.\n */\nasync function exchangeConsoleEntry(ticket: string): Promise<void> {\n try {\n const session = result<ConsoleEntrySessionResult>(await exchangeConsoleEntryTicket({ ticket }));\n const value = session.token?.value;\n if (typeof value === 'string' && value !== '') {\n token = value;\n sessionStorage.setItem('accessi-console-token', value);\n setAccessiConsoleToken(value);\n } else if (!cookieMode) {\n throw new Error('Apertura automatica della console non riuscita.');\n }\n await bootstrap();\n } catch (error) {\n token = null;\n setAccessiConsoleToken(null);\n sessionStorage.removeItem('accessi-console-token');\n finishBoot('login');\n byId('login-error').textContent = error instanceof Error ? error.message : 'Apertura automatica della console non riuscita.';\n }\n}\n\nasync function showUsers(): Promise<void> {\n const { users, total } = await loadUsersPage();\n usersTotal = total;\n const totalPages = Math.max(1, Math.ceil(total / USERS_PAGE_SIZE));\n if (usersPage >= totalPages) usersPage = totalPages - 1;\n\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><button id=\"reset-legacy\" class=\"secondary\">Invia reset password legacy</button></div>\n <div class=\"pager-row pager-row-top\">${pagerMarkup(totalPages)}</div>\n <table class=\"users-table\"><thead><tr><th>Utente</th><th>Stato</th><th>Accesso</th><th>2FA</th><th>Ruoli</th><th aria-label=\"Azioni\"></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 class=\"roles-col\">${rolesCell(utente.codiceUtente, userGrants)}</td><td><div class=\"row-actions\"><button type=\"button\" class=\"secondary\" data-login-as=\"${utente.codiceUtente}\"${canManageUser(utente) ? '' : ' disabled title=\"Non puoi impersonare un utente di rango superiore\" aria-disabled=\"true\"'}>Login as</button><button data-user=\"${utente.codiceUtente}\"${canManageUser(utente) ? '' : ' disabled title=\"Non puoi gestire un utente di rango superiore\" aria-disabled=\"true\"'}>Gestisci</button></div></td></tr>`).join('') || '<tr><td colspan=\"6\" class=\"muted\">Nessun utente.</td></tr>'}\n </tbody></table><div class=\"pager-row pager-row-bottom\">${pagerMarkup(totalPages)}</div>`);\n\n byId('new-local').onclick = () => showLocalUserForm();\n if (federatedAuthenticationAvailable) byId('new-sso').onclick = () => handleAction(showSsoUserForm);\n byId('reload-users').onclick = () => handleAction(() => show('users'));\n byId('reset-legacy').onclick = () => handleAction(async () => {\n if (!window.confirm('Inviare l email di reset a tutti gli utenti con password non ancora migrata? Richiede un servizio email configurato.')) return;\n await forcePasswordResetLegacy();\n showNotice('Email di reset inviate agli utenti con password legacy.');\n });\n document.querySelectorAll<HTMLButtonElement>('[data-goto]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n const target = button.dataset.goto;\n const nextPage = target === 'prev' ? usersPage - 1 : target === 'next' ? usersPage + 1 : Number(target) - 1;\n if (!Number.isInteger(nextPage) || nextPage < 0 || nextPage >= totalPages || nextPage === usersPage) return;\n usersPage = nextPage;\n await show('users');\n });\n });\n document.querySelectorAll<HTMLButtonElement>('[data-user]').forEach((button) => {\n button.onclick = () => handleAction(() => showUser(button.dataset.user ?? ''));\n });\n document.querySelectorAll<HTMLButtonElement>('[data-login-as]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n await showUser(button.dataset.loginAs ?? '');\n activateUserTab('loginAs');\n });\n });\n bindRolesToggles();\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) ${helpDot('user-2fa')}</label>\n <p class=\"form-help\">Se attiva, il codice è richiesto dopo password o SSO.</p>\n <label class=\"check\"><input name=\"passwordlessLoginEnabled\" type=\"checkbox\" ${user.passwordlessLoginEnabled ? 'checked' : ''} ${user.flagDueFattori ? '' : 'disabled'}> Consenti accesso con il solo codice email ${helpDot('user-passwordless')}</label>\n <p class=\"form-help\">Accesso senza password (richiede il codice email).</p>\n </fieldset>`;\n}\n\n/** Un admin gestisce anche il flag superutente; un superutente senza admin solo il proprio. */\nfunction canManageSuperFlag(): boolean {\n return Boolean(currentUser?.flagSuper || currentUser?.flagAdmin);\n}\n\nfunction canManageAdminFlag(): boolean {\n return Boolean(currentUser?.flagAdmin);\n}\n\n/** Rango di un utente console: 0 comune, 1 superutente, 2 admin (ADMIN > SUPER). */\nfunction consoleUserRank(user: { flagSuper?: boolean; flagAdmin?: boolean } | null | undefined): number {\n if (user?.flagAdmin) return 2;\n if (user?.flagSuper) return 1;\n return 0;\n}\n\n/** L'utente connesso puo' gestire il target? Self sempre, altrimenti rango >= target. */\nfunction canManageUser(user: { codiceUtente?: number; flagSuper?: boolean; flagAdmin?: boolean }): boolean {\n if (currentUser && user.codiceUtente === currentUser.codiceUtente) return true;\n return consoleUserRank(currentUser) >= consoleUserRank(user);\n}\n\n/** Abilita/disabilita i controlli di gestione utente (usato per le schede in sola lettura). */\nfunction setUserManagementEnabled(enabled: boolean): void {\n for (const id of ['disable-user', 'purge-user', 'save-state', 'set-password', 'save-profile', 'set-gdpr']) {\n const element = document.getElementById(id) as HTMLButtonElement | null;\n if (element) element.disabled = !enabled;\n }\n for (const selector of ['#roles button', '#grants button', '#link-sso button']) {\n document.querySelectorAll<HTMLButtonElement>(selector).forEach((button) => { button.disabled = !enabled; });\n }\n for (const selector of ['#profile', '#password-form', '#roles', '#grants', '#link-sso']) {\n document.querySelectorAll<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>(\n `${selector} input, ${selector} select, ${selector} textarea`,\n ).forEach((field) => { field.disabled = !enabled; });\n }\n document.querySelectorAll<HTMLButtonElement>('[data-identity-toggle], [data-identity-delete]').forEach((button) => {\n button.disabled = !enabled;\n });\n}\n\n/**\n * Checkbox dei privilegi mostrate in base al ruolo dell'utente connesso.\n * L'ordine e la visibilita rispecchiano le regole imposte anche dal backend.\n */\nfunction privilegeFields(user: Pick<UserDto, 'flagSuper' | 'flagAdmin'>): string {\n const manageSuper = canManageSuperFlag();\n const manageAdmin = canManageAdminFlag();\n if (!manageSuper && !manageAdmin) return '';\n return `<fieldset><legend>Privilegi Accessi (opzionale)</legend>\n ${manageAdmin ? `<label class=\"check\"><input name=\"flagAdmin\" type=\"checkbox\" ${user.flagAdmin ? 'checked' : ''}> Admin ${helpDot('user-admin')}</label><p class=\"form-help\">Accede a tutta la console (catalogo, token, SSO, utenti) e puo gestire i flag. Non modifica le abilitazioni.</p>` : ''}\n ${manageSuper ? `<label class=\"check\"><input name=\"flagSuper\" type=\"checkbox\" ${user.flagSuper ? 'checked' : ''}> Superutente ${helpDot('user-super')}</label><p class=\"form-help\">Riceve tutte le abilitazioni al livello massimo e gestisce utenti, ruoli e grant.</p>` : ''}\n </fieldset>`;\n}\n\n/** Invia solo i flag che l'utente connesso e autorizzato a modificare. */\nfunction privilegePayload(form: HTMLFormElement): Partial<Pick<UserDto, 'flagSuper' | 'flagAdmin'>> {\n const fields = new FormData(form);\n const payload: Partial<Pick<UserDto, 'flagSuper' | 'flagAdmin'>> = {};\n if (canManageSuperFlag()) payload.flagSuper = fields.has('flagSuper');\n if (canManageAdminFlag()) payload.flagAdmin = fields.has('flagAdmin');\n return payload;\n}\n\n/** Campo testuale opzionale: stringa se valorizzato, null se svuotato, undefined se assente. */\nfunction optionalText(values: Record<string, string>, key: string): string | null | undefined {\n if (!(key in values)) return undefined;\n const raw = (values[key] ?? '').trim();\n return raw === '' ? null : raw;\n}\n\n/** Requisiti di sicurezza della password, allineati alla policy del backend. */\nfunction passwordPolicyViolations(password: string): string[] {\n const violations: string[] = [];\n if (password.length < 8) violations.push('almeno 8 caratteri');\n if (password.length > 100) violations.push('al massimo 100 caratteri');\n if (/\\s/.test(password)) violations.push('nessuno spazio');\n if (!/[A-Z]/.test(password)) violations.push('una lettera maiuscola');\n if (!/[a-z]/.test(password)) violations.push('una lettera minuscola');\n if (!/\\d/.test(password)) violations.push('una cifra');\n if (!/[^A-Za-z0-9]/.test(password)) violations.push('un carattere speciale');\n return violations;\n}\n\n/** Normalizza una data proveniente dall'API per un input type=date (YYYY-MM-DD). */\nfunction dateInputValue(value: unknown): string {\n const text = typeof value === 'string' ? value : '';\n const match = /^(\\d{4}-\\d{2}-\\d{2})/.exec(text);\n return match?.[1] ?? '';\n}\n\n/** Rotte suggerite per la pagina di default, ricavate dal catalogo dei menu. */\nfunction pageRouteSuggestions(groups: GroupWithMenusEntity[]): PageRouteSuggestion[] {\n const routes = new Map<string, PageRouteSuggestion>();\n for (const group of groups) {\n for (const menu of group.menus) {\n const value = (menu.pagina ?? '').trim();\n if (!value) continue;\n const suggestion: PageRouteSuggestion = {\n value,\n menu: menu.descrizioneMenu || undefined,\n group: group.descrizioneGruppo || undefined,\n disabled: menu.enabled === false,\n };\n const current = routes.get(value);\n if (!current || (current.disabled && !suggestion.disabled)) routes.set(value, suggestion);\n }\n }\n return [...routes.values()].sort((a, b) => a.value.localeCompare(b.value, 'it'));\n}\n\n/** Combobox con ricerca per la pagina di default: suggerisce le rotte note ma accetta testo libero. */\nfunction pageDefaultField(user: UserDto): string {\n const value = user.paginaDefault ?? '';\n return `<label class=\"page-default-field\">Pagina di default ${helpDot('user-default-page')}\n <div class=\"page-combobox\" data-page-combobox>\n <div class=\"page-combobox-control\">\n ${actionIcon('<circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>')}\n <input id=\"pagina-default\" name=\"paginaDefault\" type=\"text\" maxlength=\"50\" value=\"${escapeHtml(value)}\" autocomplete=\"off\" role=\"combobox\" aria-autocomplete=\"list\" aria-expanded=\"false\" aria-controls=\"pagina-default-listbox\" placeholder=\"Cerca una rotta o scrivi una pagina\">\n <button type=\"button\" class=\"page-combobox-clear\" aria-label=\"Pulisci la pagina di default\" ${value ? '' : 'hidden'}>&times;</button>\n <button type=\"button\" class=\"page-combobox-toggle\" aria-label=\"Mostra le pagine disponibili\" aria-haspopup=\"listbox\">${actionIcon('<path d=\"m6 9 6 6 6-6\"/>')}</button>\n </div>\n <ul id=\"pagina-default-listbox\" class=\"page-combobox-list\" role=\"listbox\" aria-label=\"Pagine disponibili\" hidden></ul>\n </div>\n <span class=\"form-help\">Scegli una rotta dal catalogo dei menu oppure scrivi un valore libero.</span>\n </label>`;\n}\n\n/** Collega il combobox della pagina di default: filtro live, tastiera, selezione e valore libero. */\nfunction bindPageDefaultCombobox(routes: PageRouteSuggestion[]): void {\n const root = document.querySelector<HTMLElement>('[data-page-combobox]');\n if (!root) return;\n const input = root.querySelector<HTMLInputElement>('input[name=\"paginaDefault\"]');\n const list = root.querySelector<HTMLUListElement>('.page-combobox-list');\n const clear = root.querySelector<HTMLButtonElement>('.page-combobox-clear');\n const toggle = root.querySelector<HTMLButtonElement>('.page-combobox-toggle');\n if (!input || !list) return;\n\n let matches: PageRouteSuggestion[] = [];\n let activeIndex = -1;\n\n const optionId = (index: number) => `pagina-default-option-${index}`;\n const setOpen = (open: boolean) => {\n list.hidden = !open;\n input.setAttribute('aria-expanded', String(open));\n if (!open) {\n activeIndex = -1;\n input.removeAttribute('aria-activedescendant');\n }\n };\n const renderMatches = (query: string) => {\n const needle = query.trim().toLocaleLowerCase('it');\n matches = needle === ''\n ? routes\n : routes.filter((route) => [route.value, route.menu ?? '', route.group ?? ''].join(' ').toLocaleLowerCase('it').includes(needle));\n list.innerHTML = matches.map((route, index) => `<li id=\"${optionId(index)}\" class=\"page-combobox-option${route.disabled ? ' is-disabled' : ''}\" role=\"option\" aria-selected=\"${route.value === input.value ? 'true' : 'false'}\" data-index=\"${index}\"><code>${escapeHtml(route.value)}</code><small>${escapeHtml([route.menu, route.group].filter(Boolean).join(' \\u00b7 ') || 'Rotta del catalogo menu')}${route.disabled ? ' \\u00b7 menu disabilitato' : ''}</small></li>`).join('')\n || '<li class=\"page-combobox-empty\" role=\"presentation\">Nessuna rotta corrisponde. Puoi comunque lasciare il valore scritto.</li>';\n activeIndex = -1;\n input.removeAttribute('aria-activedescendant');\n };\n const highlight = () => {\n list.querySelectorAll<HTMLElement>('.page-combobox-option').forEach((option, index) => {\n option.classList.toggle('is-active', index === activeIndex);\n });\n const current = activeIndex >= 0 ? list.querySelector<HTMLElement>(`#${optionId(activeIndex)}`) : null;\n if (current) {\n input.setAttribute('aria-activedescendant', optionId(activeIndex));\n current.scrollIntoView({ block: 'nearest' });\n } else {\n input.removeAttribute('aria-activedescendant');\n }\n };\n const openList = () => {\n renderMatches('');\n setOpen(true);\n highlight();\n };\n const refresh = (query: string) => {\n renderMatches(query);\n setOpen(true);\n highlight();\n };\n const choose = (route: PageRouteSuggestion) => {\n input.value = route.value;\n if (clear) clear.hidden = false;\n input.focus();\n setOpen(false);\n };\n\n input.addEventListener('focus', openList);\n input.addEventListener('input', () => {\n if (clear) clear.hidden = input.value.length === 0;\n refresh(input.value);\n });\n input.addEventListener('blur', () => {\n window.setTimeout(() => {\n if (!root.contains(document.activeElement)) setOpen(false);\n }, 0);\n });\n input.addEventListener('keydown', (event) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (list.hidden) refresh(input.value);\n if (matches.length === 0) return;\n activeIndex = event.key === 'ArrowDown'\n ? (activeIndex + 1) % matches.length\n : (activeIndex <= 0 ? matches.length - 1 : activeIndex - 1);\n highlight();\n return;\n }\n if (event.key === 'Enter' && !list.hidden && activeIndex >= 0) {\n const route = matches[activeIndex];\n if (route) {\n event.preventDefault();\n choose(route);\n }\n return;\n }\n if (event.key === 'Escape' && !list.hidden) {\n event.preventDefault();\n setOpen(false);\n return;\n }\n if (event.key === 'Tab') setOpen(false);\n });\n\n list.addEventListener('mousedown', (event) => {\n if ((event.target as HTMLElement).closest('[data-index]')) event.preventDefault();\n });\n list.addEventListener('click', (event) => {\n const option = (event.target as HTMLElement).closest<HTMLElement>('[data-index]');\n if (!option) return;\n const route = matches[Number(option.dataset.index)];\n if (route) choose(route);\n });\n if (clear) {\n clear.addEventListener('click', () => {\n input.value = '';\n clear.hidden = true;\n input.focus();\n openList();\n });\n }\n if (toggle) {\n toggle.addEventListener('click', () => {\n if (list.hidden) {\n input.focus();\n openList();\n } else {\n setOpen(false);\n }\n });\n }\n}\n\n/** Campi anagrafici e di sicurezza completi, tutti gestibili dall'admin. */\nfunction extendedProfileFields(user: UserDto): string {\n return `<fieldset><legend>Anagrafica estesa</legend>\n <label>Cellulare ${helpDot('user-cellulare')}<input name=\"cellulare\" maxlength=\"30\" value=\"${escapeHtml(user.cellulare ?? '')}\"></label>\n <label>Codice lingua ${helpDot('user-lingua')}<input name=\"codiceLingua\" maxlength=\"2\" value=\"${escapeHtml(user.codiceLingua ?? '')}\"></label>\n <label>Avatar ${helpDot('user-avatar')}<input name=\"avatar\" maxlength=\"30\" value=\"${escapeHtml(user.avatar ?? '')}\"></label>\n <label>Scadenza password ${helpDot('user-scadenza-password')}<input name=\"dataScadenzaPassword\" type=\"date\" value=\"${dateInputValue(user.dataScadenzaPassword)}\"></label>\n <fieldset class=\"gdpr-status\"><legend>GDPR ${helpDot('user-gdpr')}</legend><p class=\"form-help\">${user.flagGdpr ? `Consenso registrato${dateInputValue(user.dataGdpr) ? ` il ${escapeHtml(dateInputValue(user.dataGdpr))}` : ''}.` : 'Consenso non ancora registrato.'}</p><button type=\"button\" id=\"set-gdpr\" class=\"secondary\">Registra consenso GDPR</button></fieldset>\n <label>Metadata JSON ${helpDot('user-json')}<textarea name=\"jsonMetadata\" rows=\"3\">${escapeHtml(user.jsonMetadata ?? '')}</textarea></label>\n </fieldset>`;\n}\n\n/** Campi anagrafici e policy in un unico payload idempotente. */\nfunction profilePayload(form: HTMLFormElement, codiceUtente: number): Record<string, unknown> {\n const values = formValues(form);\n const fields = new FormData(form);\n const payload: Record<string, unknown> = {\n codiceUtente,\n email: values.email ?? '',\n nome: optionalText(values, 'nome'),\n cognome: optionalText(values, 'cognome'),\n cellulare: optionalText(values, 'cellulare'),\n codiceLingua: optionalText(values, 'codiceLingua'),\n avatar: optionalText(values, 'avatar'),\n paginaDefault: optionalText(values, 'paginaDefault'),\n jsonMetadata: optionalText(values, 'jsonMetadata'),\n dataScadenzaPassword: optionalText(values, 'dataScadenzaPassword'),\n flagDueFattori: fields.has('flagDueFattori'),\n passwordlessLoginEnabled: fields.has('passwordlessLoginEnabled'),\n ...privilegePayload(form),\n };\n if (federatedAuthenticationAvailable) {\n payload.passwordLoginEnabled = fields.has('passwordLoginEnabled');\n }\n return payload;\n}\n\n/** Impostazione diretta della password in un form separato: Invio imposta la password, non salva il profilo. */\nfunction passwordFields(): string {\n return `<form id=\"password-form\" class=\"user-editor-section\" data-user-panel=\"profile\" role=\"tabpanel\" aria-labelledby=\"user-tab-profile\">\n <h3>Password</h3>\n <label>Nuova password ${helpDot('user-set-password')}<input name=\"newPassword\" type=\"password\" autocomplete=\"new-password\" minlength=\"8\" maxlength=\"100\"><span class=\"form-help\">Almeno 8 caratteri con maiuscola, minuscola, cifra e carattere speciale; nessuno spazio. Viene salvata come hash e la scadenza segue la policy; nessuna email inviata.</span></label>\n <button type=\"submit\" id=\"set-password\" class=\"secondary\">Imposta password</button>\n </form>`;\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 ${helpDot('user-email')}<input name=\"email\" type=\"email\" required><span class=\"form-help\">Identificativo di accesso; riceverà l'email per la password.</span></label><label>Nome ${helpDot('user-name')}<input name=\"nome\"></label><label>Cognome ${helpDot('user-name')}<input name=\"cognome\"></label>${privilegeFields({})}<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 const form = eventForm(event);\n await createManagedUser({ ...formValues(form), ...privilegePayload(form) } 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\">Salva solo collegamenti già verificati dal backend.</p>\n <form id=\"sso-user\"><label>Email ${helpDot('user-email')}<input name=\"email\" type=\"email\" required><span class=\"form-help\">Email di contatto e identificativo Accessi dell'utente.</span></label><label>Nome ${helpDot('user-name')}<input name=\"nome\"></label><label>Cognome ${helpDot('user-name')}<input name=\"cognome\"></label>${federatedIdentityFields(providers)}<label class=\"check\"><input name=\"passwordLoginEnabled\" type=\"checkbox\"> Abilita anche la password locale ${helpDot('user-password-login')}</label><span class=\"form-help\">Se disattivato, l'utente accede solo via SSO.</span>${privilegeFields({})}<button>Crea utente SSO</button></form>`);\n byId('back').onclick = () => show('ssoUsers');\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, ...privilegePayload(form) },\n };\n await createFederatedUser(request);\n showNotice('Utente SSO creato e collegamento registrato.');\n await show(currentUser?.flagAdmin ? 'ssoUsers' : 'users');\n });\n };\n}\n\n/** Catalogo dei provider SSO: elenco, censimento, modifica ed eliminazione. */\nasync function showSsoProviders(): Promise<void> {\n if (!federatedAuthenticationAvailable) throw new Error('SSO non è abilitato in questa istanza Accessi.');\n const providerList = result<FederatedProvider[]>(await getFederatedProviders());\n render(`<div class=\"toolbar\"><button id=\"new-provider\">Nuovo provider</button><button id=\"reload-providers\" class=\"secondary\">Aggiorna</button></div>\n <h2>Provider SSO</h2><p class=\"muted\">La validazione di token, issuer e segreti resta nel backend. Un provider si elimina solo se nessuna identità è collegata.</p>\n <div class=\"menu-table-wrap\"><table><thead><tr><th>Provider</th><th>Descrizione</th><th>Stato</th><th></th></tr></thead><tbody>${providerList.map((provider) => `<tr class=\"${provider.active ? '' : 'is-disabled'}\"><td><code>${escapeHtml(provider.provider)}</code></td><td>${escapeHtml(provider.description)}</td><td>${provider.active ? 'Attivo' : 'Disabilitato'}</td><td class=\"row-actions\"><button data-provider=\"${escapeHtml(provider.provider)}\">Gestisci</button></td></tr>`).join('') || '<tr><td colspan=\"4\" class=\"muted\">Nessun provider censito.</td></tr>'}</tbody></table></div>`);\n byId('new-provider').onclick = () => showProviderForm();\n byId('reload-providers').onclick = () => handleAction(showSsoProviders);\n document.querySelectorAll<HTMLButtonElement>('[data-provider]').forEach((button) => {\n button.onclick = () => showProviderForm(providerList.find((provider) => provider.provider === button.dataset.provider));\n });\n}\n\n/** Utenti e identità SSO: elenco e collegamento delle identità. */\nasync function showSsoUsers(): Promise<void> {\n if (!federatedAuthenticationAvailable) throw new Error('SSO non è abilitato in questa istanza Accessi.');\n const users = await loadUsers();\n render(`<div class=\"toolbar\"><button id=\"new-sso\">Nuovo utente SSO</button><button id=\"reload-sso-users\" class=\"secondary\">Aggiorna</button></div>\n <h2>Utenti e identità SSO</h2><p class=\"muted\">Gestisci i collegamenti provider/subject già verificati dal backend.</p>\n <div class=\"menu-table-wrap\"><table><thead><tr><th>Utente</th><th>Accesso</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 class=\"row-actions\"><button data-sso-user=\"${utente.codiceUtente}\">Gestisci identità</button></td></tr>`).join('') || '<tr><td colspan=\"3\" class=\"muted\">Nessun utente.</td></tr>'}</tbody></table></div>`);\n byId('new-sso').onclick = () => handleAction(showSsoUserForm);\n byId('reload-sso-users').onclick = () => handleAction(showSsoUsers);\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 ${helpDot('provider-key')}<input name=\"provider\" value=\"${escapeHtml(provider?.provider)}\" ${isExisting ? 'readonly' : ''} required><span class=\"form-help\">Chiave usata dal backend nel payload SSO (es. <code>azure-ad-acme-prod</code>). Non modificabile dopo il censimento.</span></label><label>Descrizione ${helpDot('provider-description')}<input name=\"description\" value=\"${escapeHtml(provider?.description)}\" required><span class=\"form-help\">Nome leggibile per gli amministratori.</span></label><label>Nota ${helpDot('provider-note')}<input name=\"note\" value=\"${escapeHtml(provider?.note)}\"><span class=\"form-help\">Non inserire segreti o dati personali.</span></label>${isExisting ? `<label class=\"check\"><input name=\"active\" type=\"checkbox\" ${provider.active ? 'checked' : ''}> Provider attivo ${helpDot('provider-active')}</label><span class=\"form-help\">Blocca nuovi login e collegamenti; lo storico resta.</span>` : ''}<button>${isExisting ? 'Salva provider' : 'Censisci provider'}</button>${isExisting ? '<button type=\"button\" id=\"delete-provider\" class=\"danger-button\">Elimina provider</button>' : ''}</form>`);\n byId('back').onclick = () => show('ssoProviders');\n const deleteProviderButton = document.getElementById('delete-provider') as HTMLButtonElement | null;\n if (deleteProviderButton && provider) {\n deleteProviderButton.onclick = () => handleAction(async () => {\n if (!window.confirm(`Eliminare il provider ${provider.provider}? Operazione possibile solo se nessuna identita e collegata.`)) return;\n await deleteFederatedProvider(provider.provider);\n showNotice('Provider SSO eliminato.');\n await show('ssoProviders');\n });\n }\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('ssoProviders');\n });\n };\n}\n\n/** Opzioni dello stato di registrazione Accessi (UTENTI.STAREG). */\nfunction registrationStateOptions(current: unknown): string {\n const states: Array<[number, string]> = [\n [0, 'Non definito'], [5, 'Inserito'], [10, 'Invitato'], [20, 'Confermato'], [50, 'Eliminato'], [99, 'Bloccato'],\n ];\n const currentValue = Number(current);\n return states.map(([value, label]) => `<option value=\"${value}\" ${currentValue === value ? 'selected' : ''}>${label} (${value})</option>`).join('');\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 userRow = (result(users) as UserRow[])[0];\n if (!userRow?.utente) throw new Error('Utente non trovato.');\n const user = userRow.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 const manageable = canManageUser(user);\n render(`${manageable ? '' : '<div class=\"notice notice-error\" role=\"alert\"><span class=\"notice-icon\" aria-hidden=\"true\">!</span><span class=\"notice-text\">Stai visualizzando un utente di rango superiore: scheda in sola lettura.</span></div>'}<div class=\"user-action-bar\"><button id=\"back\" type=\"button\" class=\"secondary\">Indietro</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>\n <form id=\"user-state-form\" class=\"account-panel\">\n <div class=\"account-panel-head\"><div><p class=\"eyebrow\">Amministrazione account</p><h3>Stato e sicurezza</h3><p class=\"form-help\">Aggiorna lo stato di registrazione o disattiva l'account. Le azioni distruttive sono raccolte qui, separate dal profilo.</p></div></div>\n <div class=\"account-state-row\">\n <label class=\"account-state-field\">Stato registrazione ${helpDot('user-state')}<select id=\"user-state\">${registrationStateOptions(user.statoRegistrazione)}</select></label>\n <button id=\"save-state\" type=\"submit\" class=\"secondary\">${actionIcon('<path d=\"M20 6 9 17l-5-5\"/>')}<span>Aggiorna stato</span></button>\n </div>\n <div class=\"account-danger-zone\">\n <div class=\"account-danger-head\"><strong>Azioni distruttive</strong><span class=\"form-help\">La disattivazione conserva i dati; l'eliminazione definitiva è irreversibile.</span></div>\n <div class=\"account-danger-actions\">\n <span class=\"action-with-help\"><button id=\"disable-user\" type=\"button\" class=\"danger-button\">${actionIcon('<path d=\"M3 6h18\"/><path d=\"M8 6V4h8v2\"/><path d=\"M19 6l-1 14H6L5 6\"/><path d=\"M10 11v6\"/><path d=\"M14 11v6\"/>')}<span>Imposta stato eliminato</span></button>${helpDot('user-delete')}</span>\n ${currentUser?.flagAdmin ? `<span class=\"action-with-help\"><button id=\"purge-user\" type=\"button\" class=\"danger-button\">${actionIcon('<path d=\"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/>')}<span>Elimina definitivamente</span></button>${helpDot('user-delete-permanent')}</span>` : ''}\n </div>\n </div>\n </form>\n ${userDetailTabs(federatedAuthenticationAvailable, manageable)}<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 ${helpDot('user-name')}<input name=\"nome\" value=\"${escapeHtml(user.nome)}\"></label><label>Cognome ${helpDot('user-name')}<input name=\"cognome\" value=\"${escapeHtml(user.cognome)}\"></label><label>Email ${helpDot('user-email')}<input name=\"email\" type=\"email\" value=\"${escapeHtml(user.email)}\" required><span class=\"form-help\">Identificativo di accesso e recapito.</span></label>${pageDefaultField(user)}${federatedAuthenticationAvailable ? `<label class=\"check\"><input name=\"passwordLoginEnabled\" type=\"checkbox\" ${user.passwordLoginEnabled !== false ? 'checked' : ''}> Login con password ${helpDot('user-password-login')}</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)}${extendedProfileFields(user)}${privilegeFields(user)}<button id=\"save-profile\" type=\"submit\">Salva</button></form>\n ${passwordFields()}\n ${roleAssignmentEditor(allRoles, userGrants.ruoli, menuGroups)}\n ${directGrantEditor(menuGroups, userGrants.abilitazioni)}\n ${manageable ? loginAsPanel(user) : ''}\n </div>`);\n bindPageDefaultCombobox(pageRouteSuggestions(menuGroups));\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 const targetTab = userTabButtons[targetIndex];\n if (!targetTab) return;\n targetTab.focus();\n activateUserTab(targetTab.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 form = eventForm(event);\n const fields = new FormData(form);\n await updateUtente(codiceUtente, profilePayload(form, codiceUtente) as unknown as UserDto);\n if (codiceUtente === currentUser?.codiceUtente && (\n fields.has('flagDueFattori') !== Boolean(user.flagDueFattori) ||\n fields.has('passwordlessLoginEnabled') !== Boolean(user.passwordlessLoginEnabled) ||\n (canManageSuperFlag() && fields.has('flagSuper') !== Boolean(user.flagSuper)) ||\n (canManageAdminFlag() && fields.has('flagAdmin') !== Boolean(user.flagAdmin))\n )) {\n token = null;\n sessionStorage.removeItem('accessi-console-token');\n setAccessiConsoleToken(null);\n resetLogin();\n await bootstrap();\n byId('login-error').textContent = 'Privilegi o policy aggiornati. 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 passwordForm = document.getElementById('password-form') as HTMLFormElement | null;\n if (passwordForm) passwordForm.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const newPassword = (document.querySelector<HTMLInputElement>('#password-form input[name=\"newPassword\"]')?.value ?? '').trim();\n const violations = passwordPolicyViolations(newPassword);\n if (violations.length > 0) throw new Error(`La password non rispetta i requisiti: richiede ${violations.join(', ')}.`);\n if (!window.confirm(`Impostare una nuova password per ${user.email}?`)) return;\n await setUserPassword(codiceUtente, { newPassword });\n showNotice('Password aggiornata.');\n await showUser(String(codiceUtente));\n });\n };\n\n const loginAsForm = document.getElementById('login-as') as HTMLFormElement | null;\n if (loginAsForm) loginAsForm.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const values = formValues(eventForm(event));\n const issued = result<LoginAsResult>(await createLoginAsUrl(codiceUtente, { url: values.url ?? '' }));\n const box = byId('login-as-result');\n box.hidden = false;\n byId('login-as-url').textContent = issued.loginUrl;\n byId<HTMLAnchorElement>('login-as-open').href = issued.loginUrl;\n byId<HTMLButtonElement>('login-as-copy').onclick = () => handleAction(async () => {\n await navigator.clipboard.writeText(issued.loginUrl);\n showNotice('URL di accesso copiato negli appunti.');\n });\n showNotice(`URL di accesso generato. Scade alle ${new Date(issued.expiresAt).toLocaleTimeString()}.`);\n });\n };\n\n const setGdprButton = document.getElementById('set-gdpr') as HTMLButtonElement | null;\n if (setGdprButton) setGdprButton.onclick = () => handleAction(async () => {\n if (!window.confirm(`Registrare il consenso GDPR per ${user.email}?`)) return;\n await setGdpr(codiceUtente);\n showNotice('Consenso GDPR registrato.');\n await showUser(String(codiceUtente));\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 }); showNotice('Collegamento SSO registrato.'); 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' }); showNotice('Collegamento SSO aggiornato.'); 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 const userStateForm = document.getElementById('user-state-form') as HTMLFormElement | null;\n if (userStateForm) userStateForm.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const stateSelect = document.getElementById('user-state') as HTMLSelectElement | null;\n const statoRegistrazione = Number(stateSelect?.value ?? 0) as 0 | 5 | 10 | 20 | 50 | 99;\n await setStatoRegistrazione({ codiceUtente, statoRegistrazione });\n showNotice('Stato registrazione aggiornato.');\n await showUser(String(codiceUtente));\n });\n };\n byId('disable-user').onclick = () => handleAction(async () => { await deleteUser(codiceUtente); showNotice('Utente impostato come eliminato.'); await show('users'); });\n const purgeUser = document.getElementById('purge-user') as HTMLButtonElement | null;\n if (purgeUser) purgeUser.onclick = () => handleAction(async () => {\n if (!window.confirm(`Eliminare DEFINITIVAMENTE l'utente ${user.email} e tutti i dati collegati? Operazione irreversibile.`)) return;\n await deleteUserPermanently(codiceUtente);\n showNotice('Utente eliminato definitivamente.');\n await show('users');\n });\n\n // Rango superiore: nessun controllo di modifica attivo (il backend rifiuta comunque con 403).\n if (!manageable) setUserManagementEnabled(false);\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</h2><p class=\"form-help\">Definisci i ruoli e i menu che concedono. L'assegnazione agli utenti si gestisce dalla scheda utente.</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 ${helpDot('role-description')}<input name=\"descrizione\" value=\"${escapeHtml(role?.descrizioneRuolo)}\" required><span class=\"form-help\">Nome del ruolo.</span></label><p class=\"form-help\">Seleziona i menu e il livello ${helpDot('role-level')}; il salvataggio sostituisce la configurazione 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 option = checkbox.closest('li');\n const level = option?.querySelector<HTMLSelectElement>('select[name^=\"menu-level:\"]');\n if (level) level.disabled = !checkbox.checked;\n };\n });\n const roleFormElement = document.getElementById('role-form') as HTMLFormElement | null;\n if (roleFormElement) roleFormElement.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const form = eventForm(event);\n const data = new FormData(form);\n const menu = Array.from(data.getAll('menu'), (codiceMenu) => ({ codiceMenu: String(codiceMenu), tipoAbilitazione: Number(data.get(`menu-level:${codiceMenu}`) ?? 10) as Role['menu'][number]['tipoAbilitazione'] }));\n if (menu.length === 0) throw new Error('Seleziona almeno un menu per il ruolo.');\n const request: Role = { descrizioneRuolo: formValues(form).descrizione ?? '', menu };\n if (role?.codiceRuolo) await updateRole(role.codiceRuolo, request);\n else await createRole(request);\n showNotice(role?.codiceRuolo ? 'Ruolo aggiornato.' : 'Ruolo creato.');\n await show('roles');\n });\n };\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 document.querySelectorAll<HTMLButtonElement>('[data-role-delete]').forEach((button) => button.onclick = () => handleAction(async () => {\n if (!window.confirm('Eliminare definitivamente questo ruolo? Le assegnazioni agli utenti verranno rimosse.')) return;\n await deleteRole(Number(button.dataset.roleDelete));\n showNotice('Ruolo eliminato.');\n await show('roles');\n }));\n}\n\n/** Tabella dei gruppi menu con toggle, conteggio menu e azioni. */\nfunction menuGroupsTable(groups: GroupWithMenusEntity[]): string {\n return `<div class=\"menu-table-wrap\"><table><thead><tr><th>Codice</th><th>Descrizione</th><th>Ordine</th><th>Menu</th><th>Stato</th><th></th></tr></thead><tbody>${groups.map((group) => `<tr class=\"${group.enabled === false ? 'is-disabled' : ''}\"><td><code>${escapeHtml(group.codiceGruppo)}</code></td><td><strong>${escapeHtml(group.descrizioneGruppo)}</strong></td><td>${escapeHtml(group.ordineGruppo)}</td><td>${group.menus.length}</td><td><label class=\"table-toggle\"><input type=\"checkbox\" data-group=\"${escapeHtml(group.codiceGruppo)}\" ${group.enabled !== false ? 'checked' : ''}><span>${group.enabled === false ? 'Disabilitato' : 'Abilitato'}</span></label></td><td class=\"row-actions\"><button type=\"button\" data-group-edit=\"${escapeHtml(group.codiceGruppo)}\">Modifica</button><button type=\"button\" class=\"danger-button\" data-group-delete=\"${escapeHtml(group.codiceGruppo)}\">Elimina</button></td></tr>`).join('') || '<tr><td colspan=\"6\" class=\"muted\">Nessun gruppo configurato.</td></tr>'}</tbody></table></div>`;\n}\n\n/** Tabella piatta di tutti i menu con gruppo, tipo e azioni; filtrabile per gruppo. */\nfunction menusTable(entries: Array<{ menu: MenuEntity; group: GroupWithMenusEntity }>, menuTypes: MenuTypeEntity[]): string {\n const typeLabel = (codice?: string) => {\n if (!codice) return 'Non indicato';\n return menuTypes.find((type) => type.codiceTipo === codice)?.descrizioneTipo || codice;\n };\n return `<div class=\"menu-table-wrap\"><table><thead><tr><th>Stato</th><th>Menu</th><th>Codice</th><th>Gruppo</th><th>Ordine</th><th>Tipo</th><th>Pagina</th><th></th></tr></thead><tbody>${entries.map(({ menu, group }) => `<tr class=\"${menu.enabled === false ? 'is-disabled' : ''}\" data-menu-group=\"${escapeHtml(group.codiceGruppo)}\"><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>${menu.note ? `<br><span class=\"muted\">${escapeHtml(menu.note)}</span>` : ''}</td><td><code>${escapeHtml(menu.codiceMenu)}</code></td><td>${escapeHtml(group.descrizioneGruppo)}</td><td>${escapeHtml(menu.ordineMenu)}</td><td>${escapeHtml(typeLabel(menu.tipo))}</td><td>${menu.pagina ? `<code>${escapeHtml(menu.pagina)}</code>` : '<span class=\"muted\">Non indicata</span>'}</td><td class=\"row-actions\"><button type=\"button\" data-menu-edit=\"${escapeHtml(menu.codiceMenu)}\">Modifica</button><button type=\"button\" class=\"danger-button\" data-menu-delete=\"${escapeHtml(menu.codiceMenu)}\">Elimina</button></td></tr>`).join('') || '<tr><td colspan=\"8\" class=\"muted\">Nessun menu configurato.</td></tr>'}</tbody></table></div>`;\n}\n\n/** Tabella del catalogo tipi menu con azioni di modifica ed eliminazione. */\nfunction menuTypeTable(types: MenuTypeEntity[]): string {\n return `<div class=\"menu-table-wrap\"><table><thead><tr><th>Codice</th><th>Descrizione</th><th></th></tr></thead><tbody>${types.map((type) => `<tr><td><code>${escapeHtml(type.codiceTipo)}</code></td><td>${escapeHtml(type.descrizioneTipo || '\\u2014')}</td><td class=\"row-actions\"><button type=\"button\" data-type-edit=\"${escapeHtml(type.codiceTipo)}\">Modifica</button><button type=\"button\" class=\"danger-button\" data-type-delete=\"${escapeHtml(type.codiceTipo)}\">Elimina</button></td></tr>`).join('') || '<tr><td colspan=\"3\" class=\"muted\">Nessun tipo menu.</td></tr>'}</tbody></table></div>`;\n}\n\n/** Gestione dei gruppi: elenco, creazione, modifica, eliminazione e toggle. */\nasync function showMenuGroups(): Promise<void> {\n const groups = result(await getGroupsWithMenus({ includeDisabled: true })) as GroupWithMenusEntity[];\n render(`<div class=\"toolbar\"><button id=\"new-group\">Nuovo gruppo</button><button id=\"reload-groups\" class=\"secondary\">Aggiorna</button></div>\n <h2>Gruppi di menu</h2><p class=\"form-help\">Raggruppano i menu nella navigazione e ne definiscono l'ordine. Un gruppo si elimina solo se non contiene menu.</p>\n ${menuGroupsTable(groups)}`);\n byId('new-group').onclick = () => showMenuGroupForm();\n byId('reload-groups').onclick = () => handleAction(showMenuGroups);\n document.querySelectorAll<HTMLInputElement>('[data-group]').forEach((input) => {\n input.onchange = () => handleAction(async () => {\n await setGroupEnabled(input.dataset.group ?? '', { enabled: input.checked });\n showNotice('Gruppo aggiornato.');\n });\n });\n document.querySelectorAll<HTMLButtonElement>('[data-group-edit]').forEach((button) => {\n button.onclick = () => showMenuGroupForm(groups.find((group) => group.codiceGruppo === button.dataset.groupEdit));\n });\n document.querySelectorAll<HTMLButtonElement>('[data-group-delete]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n if (!window.confirm(`Eliminare il gruppo ${button.dataset.groupDelete}? Operazione possibile solo se non contiene menu.`)) return;\n await deleteMenuGroup(button.dataset.groupDelete ?? '');\n showNotice('Gruppo eliminato.');\n await showMenuGroups();\n });\n });\n}\n\n/** Gestione dei menu: elenco piatto filtrabile, creazione, modifica, eliminazione e toggle. */\nasync function showMenuItems(): Promise<void> {\n const [groupsResponse, typesResponse] = await Promise.all([\n getGroupsWithMenus({ includeDisabled: true }),\n getMenuTypes(),\n ]);\n const groups = result(groupsResponse) as GroupWithMenusEntity[];\n const menuTypes = result(typesResponse) as MenuTypeEntity[];\n const entries = groups.flatMap((group) => group.menus.map((menu) => ({ menu, group })));\n render(`<div class=\"toolbar\"><button id=\"new-menu\">Nuovo menu</button><button id=\"reload-menus\" class=\"secondary\">Aggiorna</button><label class=\"inline-field\">Filtra per gruppo<select id=\"menu-group-filter\"><option value=\"\">Tutti i gruppi</option>${groups.map((group) => `<option value=\"${escapeHtml(group.codiceGruppo)}\">${escapeHtml(group.descrizioneGruppo)}</option>`).join('')}</select></label></div>\n <h2>Menu</h2><p class=\"form-help\">Voci di navigazione. L'eliminazione rimuove anche i grant utente e le associazioni ai ruoli.</p>\n ${menusTable(entries, menuTypes)}`);\n byId('new-menu').onclick = () => showMenuForm(undefined, groups, menuTypes);\n byId('reload-menus').onclick = () => handleAction(showMenuItems);\n const groupFilter = document.getElementById('menu-group-filter') as HTMLSelectElement | null;\n if (groupFilter) {\n groupFilter.onchange = () => {\n const selected = groupFilter.value;\n document.querySelectorAll<HTMLTableRowElement>('[data-menu-group]').forEach((row) => {\n row.hidden = selected !== '' && row.dataset.menuGroup !== selected;\n });\n };\n }\n document.querySelectorAll<HTMLInputElement>('[data-menu]').forEach((input) => {\n input.onchange = () => handleAction(async () => {\n await setMenuEnabled(input.dataset.menu ?? '', { enabled: input.checked });\n showNotice('Menu aggiornato.');\n });\n });\n document.querySelectorAll<HTMLButtonElement>('[data-menu-edit]').forEach((button) => {\n button.onclick = () => showMenuForm(entries.find((entry) => entry.menu.codiceMenu === button.dataset.menuEdit)?.menu, groups, menuTypes);\n });\n document.querySelectorAll<HTMLButtonElement>('[data-menu-delete]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n if (!window.confirm(`Eliminare il menu ${button.dataset.menuDelete}? Verranno rimossi anche i grant utente e le associazioni ai ruoli.`)) return;\n await deleteMenu(button.dataset.menuDelete ?? '');\n showNotice('Menu eliminato.');\n await showMenuItems();\n });\n });\n}\n\n/** Gestione degli scope applicativi: catalogo e assegnazione dei menu. */\nasync function showMenuScopes(): Promise<void> {\n const scopes = result(await getScopes()) as ScopeEntity[];\n render(`<div class=\"toolbar\"><button id=\"new-scope\">Nuovo scope</button><button id=\"reload-scopes\" class=\"secondary\">Aggiorna</button></div>\n <h2>Scope applicativi</h2><p class=\"form-help\">Uno scope decide in quali applicazioni un menu e visibile. Un menu puo appartenere a piu scope.</p>\n <table class=\"entity-table\"><thead><tr><th>Codice</th><th>Nome</th><th>Azioni</th></tr></thead><tbody>\n ${scopes.map((scope) => `<tr><td><code>${escapeHtml(scope.codice)}</code></td><td>${escapeHtml(scope.nome)}</td><td class=\"row-actions\"><button type=\"button\" class=\"secondary\" data-scope-menus=\"${escapeHtml(scope.codice)}\">Menu</button><button type=\"button\" class=\"secondary\" data-scope-edit=\"${escapeHtml(scope.codice)}\">Rinomina</button><button type=\"button\" class=\"danger-button\" data-scope-delete=\"${escapeHtml(scope.codice)}\">Elimina</button></td></tr>`).join('') || '<tr><td colspan=\"3\">Nessuno scope configurato.</td></tr>'}\n </tbody></table>`);\n byId('new-scope').onclick = () => showScopeForm();\n byId('reload-scopes').onclick = () => handleAction(showMenuScopes);\n document.querySelectorAll<HTMLButtonElement>('[data-scope-menus]').forEach((button) => {\n button.onclick = () => handleAction(() => showScopeMenus(button.dataset.scopeMenus ?? ''));\n });\n document.querySelectorAll<HTMLButtonElement>('[data-scope-edit]').forEach((button) => {\n button.onclick = () => showScopeForm(scopes.find((scope) => scope.codice === button.dataset.scopeEdit));\n });\n document.querySelectorAll<HTMLButtonElement>('[data-scope-delete]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n if (!window.confirm(`Eliminare lo scope ${button.dataset.scopeDelete}? Le associazioni ai menu verranno rimosse.`)) return;\n await deleteScope(button.dataset.scopeDelete ?? '');\n showNotice('Scope eliminato.');\n await showMenuScopes();\n });\n });\n}\n\nfunction showScopeForm(scope?: ScopeEntity): void {\n render(`<form id=\"scope-form\"><h2>${scope ? 'Rinomina scope' : 'Nuovo scope'}</h2>\n <label>Codice<input name=\"codice\" maxlength=\"20\" required ${scope ? 'readonly' : ''} value=\"${escapeHtml(scope?.codice ?? '')}\"><span class=\"form-help\">Es. STEX. Maiuscole, cifre e underscore.</span></label>\n <label>Nome<input name=\"nome\" maxlength=\"100\" required value=\"${escapeHtml(scope?.nome ?? '')}\"><span class=\"form-help\">Etichetta leggibile, es. SteX.</span></label>\n <div class=\"toolbar\"><button>Salva</button><button type=\"button\" class=\"secondary\" id=\"cancel-scope\">Annulla</button></div></form>`);\n const form = byId('scope-form') as HTMLFormElement;\n form.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const values = formValues(form);\n const nome = values['nome'] ?? '';\n if (scope) {\n await updateScope(scope.codice, { nome });\n } else {\n await createScope({ codice: (values['codice'] ?? '').trim().toUpperCase(), nome });\n }\n showNotice('Scope salvato.');\n await showMenuScopes();\n });\n };\n byId('cancel-scope').onclick = () => handleAction(showMenuScopes);\n}\n\nasync function showScopeMenus(codiceScope: string): Promise<void> {\n const [groupsResponse, assignedResponse] = await Promise.all([\n getGroupsWithMenus({ includeDisabled: true }),\n getMenuScopes(codiceScope),\n ]);\n const groups = result<GroupWithMenusEntity[]>(groupsResponse);\n const assigned = new Set(result<string[]>(assignedResponse));\n render(`<form id=\"scope-menus\"><h2>Menu dello scope ${escapeHtml(codiceScope)}</h2><p class=\"form-help\">Seleziona i menu visibili nelle applicazioni associate a questo scope. Il salvataggio sostituisce l'elenco.</p>\n ${groups.map((group) => `<fieldset class=\"grant-menu-group\"><legend>${escapeHtml(group.descrizioneGruppo)}</legend>${group.menus.map((menu) => `<label class=\"check\"><input type=\"checkbox\" name=\"menu\" value=\"${escapeHtml(menu.codiceMenu)}\" ${assigned.has(menu.codiceMenu) ? 'checked' : ''}><span>${escapeHtml(menu.descrizioneMenu)} <code>${escapeHtml(menu.codiceMenu)}</code></span></label>`).join('')}</fieldset>`).join('')}\n <div class=\"toolbar\"><button>Salva</button><button type=\"button\" class=\"secondary\" id=\"cancel-scope-menus\">Indietro</button></div></form>`);\n const form = byId('scope-menus') as HTMLFormElement;\n form.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const selected = new FormData(form).getAll('menu').map((value) => String(value));\n await setScopeMenus(codiceScope, { menu: selected });\n showNotice('Menu dello scope aggiornati.');\n await showMenuScopes();\n });\n };\n byId('cancel-scope-menus').onclick = () => handleAction(showMenuScopes);\n}\n\n/** Gestione dei tipi menu: elenco, creazione, modifica ed eliminazione. */\nasync function showMenuTypes(): Promise<void> {\n const menuTypes = result(await getMenuTypes()) as MenuTypeEntity[];\n render(`<div class=\"toolbar\"><button id=\"new-menu-type\">Nuovo tipo menu</button><button id=\"reload-menu-types\" class=\"secondary\">Aggiorna</button></div>\n <h2>Tipi menu</h2><p class=\"form-help\">Classificano i menu (es. amministrazione, operatività). Un tipo si elimina solo se non è usato da alcun menu.</p>\n ${menuTypeTable(menuTypes)}`);\n byId('new-menu-type').onclick = () => showMenuTypeForm();\n byId('reload-menu-types').onclick = () => handleAction(showMenuTypes);\n document.querySelectorAll<HTMLButtonElement>('[data-type-edit]').forEach((button) => {\n button.onclick = () => showMenuTypeForm(menuTypes.find((type) => type.codiceTipo === button.dataset.typeEdit));\n });\n document.querySelectorAll<HTMLButtonElement>('[data-type-delete]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n if (!window.confirm(`Eliminare il tipo menu ${button.dataset.typeDelete}? Operazione possibile solo se nessun menu lo utilizza.`)) return;\n await deleteMenuType(button.dataset.typeDelete ?? '');\n showNotice('Tipo menu eliminato.');\n await showMenuTypes();\n });\n });\n}\n\n/** Form di creazione/modifica di un gruppo menu. */\nfunction showMenuGroupForm(group?: GroupWithMenusEntity): void {\n const isExisting = group !== undefined;\n render(`<button id=\"back\" type=\"button\">Indietro</button><h2>${isExisting ? 'Modifica' : 'Nuovo'} gruppo menu</h2>\n <form id=\"group-form\">\n <label>Codice gruppo ${helpDot('menu-group-code')}<input name=\"codiceGruppo\" maxlength=\"1\" value=\"${escapeHtml(group?.codiceGruppo)}\" ${isExisting ? 'readonly' : ''} required><span class=\"form-help\">Un solo carattere, es. <code>A</code>. Immutabile dopo la creazione.</span></label>\n <label>Descrizione<input name=\"descrizioneGruppo\" maxlength=\"100\" value=\"${escapeHtml(group?.descrizioneGruppo)}\" required></label>\n <label>Ordine ${helpDot('menu-group-order')}<input name=\"ordineGruppo\" type=\"number\" value=\"${group?.ordineGruppo ?? ''}\"><span class=\"form-help\">Usato per ordinare i gruppi nella navigazione.</span></label>\n <label class=\"check\"><input name=\"enabled\" type=\"checkbox\" ${group?.enabled !== false ? 'checked' : ''}> Gruppo abilitato ${helpDot('menu-group-enabled')}</label>\n <button>${isExisting ? 'Salva gruppo' : 'Crea gruppo'}</button>\n </form>`);\n byId('back').onclick = () => handleAction(showMenuGroups);\n const form = document.getElementById('group-form') as HTMLFormElement | null;\n if (form) {\n form.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const values = formValues(eventForm(event));\n const payload = {\n descrizioneGruppo: values.descrizioneGruppo || undefined,\n ordineGruppo: values.ordineGruppo ? Number(values.ordineGruppo) : undefined,\n enabled: new FormData(eventForm(event)).has('enabled'),\n };\n if (isExisting) await updateMenuGroup(group!.codiceGruppo, payload);\n else await createMenuGroup({ codiceGruppo: values.codiceGruppo ?? '', ...payload });\n showNotice(isExisting ? 'Gruppo aggiornato.' : 'Gruppo creato.');\n await showMenuGroups();\n });\n };\n }\n}\n\n/** Form di creazione/modifica di un menu, con selettori di gruppo e tipo. */\nfunction showMenuForm(menu: MenuEntity | undefined, groups: GroupWithMenusEntity[], menuTypes: MenuTypeEntity[]): void {\n const isExisting = menu !== undefined;\n const groupOptions = groups.map((group) => `<option value=\"${escapeHtml(group.codiceGruppo)}\" ${menu?.codiceGruppo === group.codiceGruppo ? 'selected' : ''}>${escapeHtml(group.codiceGruppo)} \\u2013 ${escapeHtml(group.descrizioneGruppo)}</option>`).join('');\n const typeOptions = `<option value=\"\">Nessun tipo</option>${menuTypes.map((type) => `<option value=\"${escapeHtml(type.codiceTipo)}\" ${menu?.tipo === type.codiceTipo ? 'selected' : ''}>${escapeHtml(type.codiceTipo)} \\u2013 ${escapeHtml(type.descrizioneTipo || '')}</option>`).join('')}`;\n render(`<button id=\"back\" type=\"button\">Indietro</button><h2>${isExisting ? 'Modifica' : 'Nuovo'} menu</h2>\n <form id=\"menu-form\">\n <label>Codice menu ${helpDot('menu-code')}<input name=\"codiceMenu\" maxlength=\"20\" value=\"${escapeHtml(menu?.codiceMenu)}\" ${isExisting ? 'readonly' : ''} required><span class=\"form-help\">Chiave tecnica, es. <code>MNU001</code>. Immutabile dopo la creazione.</span></label>\n <label>Descrizione<input name=\"descrizioneMenu\" maxlength=\"100\" value=\"${escapeHtml(menu?.descrizioneMenu)}\" required></label>\n <label>Gruppo ${helpDot('menu-group-select')}<select name=\"codiceGruppo\" required>${groupOptions}</select><span class=\"form-help\">Crea prima un gruppo se non ne esistono.</span></label>\n <label>Tipo menu ${helpDot('menu-type-select')}<select name=\"tipo\">${typeOptions}</select></label>\n <label>Icona ${helpDot('menu-icon')}<input name=\"icona\" maxlength=\"50\" value=\"${escapeHtml(menu?.icona)}\"><span class=\"form-help\">Identificatore icona usato dalla UI host.</span></label>\n <label>Pagina ${helpDot('menu-page')}<input name=\"pagina\" maxlength=\"50\" value=\"${escapeHtml(menu?.pagina)}\"><span class=\"form-help\">Percorso o pagina associata al menu.</span></label>\n <label>Ordine ${helpDot('menu-order')}<input name=\"ordineMenu\" type=\"number\" value=\"${menu?.ordineMenu ?? ''}\"></label>\n <label>Menu di riferimento ${helpDot('menu-rifmenu')}<input name=\"rifMenu\" maxlength=\"20\" value=\"${escapeHtml((menu as (MenuEntity & { rifMenu?: string }) | undefined)?.rifMenu)}\"><span class=\"form-help\">Codice di un menu padre, opzionale.</span></label>\n <label>Nota ${helpDot('menu-note')}<textarea name=\"note\" rows=\"3\" maxlength=\"1000\">${escapeHtml(menu?.note)}</textarea></label>\n <label class=\"check\"><input name=\"enabled\" type=\"checkbox\" ${menu?.enabled !== false ? 'checked' : ''}> Menu abilitato ${helpDot('menu-enabled')}</label>\n <button>${isExisting ? 'Salva menu' : 'Crea menu'}</button>\n </form>`);\n byId('back').onclick = () => handleAction(showMenuItems);\n const form = document.getElementById('menu-form') as HTMLFormElement | null;\n if (form) {\n form.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const values = formValues(eventForm(event));\n const payload = {\n descrizioneMenu: values.descrizioneMenu || undefined,\n codiceGruppo: values.codiceGruppo ?? '',\n tipo: values.tipo || undefined,\n icona: values.icona || undefined,\n pagina: values.pagina || undefined,\n ordineMenu: values.ordineMenu ? Number(values.ordineMenu) : undefined,\n rifMenu: values.rifMenu || undefined,\n note: values.note || undefined,\n enabled: new FormData(eventForm(event)).has('enabled'),\n };\n if (isExisting) await updateMenu(menu!.codiceMenu, payload);\n else await createMenu({ codiceMenu: values.codiceMenu ?? '', ...payload });\n showNotice(isExisting ? 'Menu aggiornato.' : 'Menu creato.');\n await showMenuItems();\n });\n };\n }\n}\n\n/** Form di creazione/modifica di un tipo menu. */\nfunction showMenuTypeForm(type?: MenuTypeEntity): void {\n const isExisting = type !== undefined;\n render(`<button id=\"back\" type=\"button\">Indietro</button><h2>${isExisting ? 'Modifica' : 'Nuovo'} tipo menu</h2>\n <form id=\"menu-type-form\">\n <label>Codice tipo ${helpDot('menu-type-code')}<input name=\"codiceTipo\" maxlength=\"1\" value=\"${escapeHtml(type?.codiceTipo)}\" ${isExisting ? 'readonly' : ''} required><span class=\"form-help\">Un solo carattere, es. <code>A</code>. Immutabile dopo la creazione.</span></label>\n <label>Descrizione<input name=\"descrizioneTipo\" maxlength=\"20\" value=\"${escapeHtml(type?.descrizioneTipo)}\"></label>\n <button>${isExisting ? 'Salva tipo' : 'Crea tipo'}</button>\n </form>`);\n byId('back').onclick = () => handleAction(showMenuTypes);\n const form = document.getElementById('menu-type-form') as HTMLFormElement | null;\n if (form) {\n form.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const values = formValues(eventForm(event));\n if (isExisting) await updateMenuType(type!.codiceTipo, { descrizioneTipo: values.descrizioneTipo || undefined });\n else await createMenuType({ codiceTipo: values.codiceTipo ?? '', descrizioneTipo: values.descrizioneTipo || undefined });\n showNotice(isExisting ? 'Tipo menu aggiornato.' : 'Tipo menu creato.');\n await showMenuTypes();\n });\n };\n }\n}\n\nfunction scopeList(scopes: string[] | undefined): string {\n return (scopes ?? []).join(', ') || 'nessuno';\n}\n\nfunction serviceTokenExpiry(token: ServiceTokenDto): string {\n if (!token.expiresAt) return 'nessuna';\n const date = new Date(token.expiresAt);\n const days = Math.ceil((date.getTime() - Date.now()) / 86_400_000);\n const label = escapeHtml(date.toLocaleString());\n if (days < 0) return `${label}<br><span class=\"error\">scaduto</span>`;\n if (days <= 7) return `${label}<br><span class=\"error\">scade tra ${days} g</span>`;\n return label;\n}\n\nfunction serviceTokenRows(tokens: ServiceTokenDto[], includeRevoked: boolean): string {\n const lastUsed = (token: ServiceTokenDto) => token.lastUsedAt\n ? `<span title=\"${escapeHtml(token.lastUsedIp ?? '')}\">${escapeHtml(new Date(token.lastUsedAt).toLocaleString())}</span>${token.lastUsedIp ? `<br><span class=\"muted\">${escapeHtml(token.lastUsedIp)}</span>` : ''}`\n : 'mai';\n const status = (token: ServiceTokenDto) => token.revoked\n ? `Revocato${token.revokedBy ? ` da #${escapeHtml(token.revokedBy)}` : ''}${token.revokedAt ? `<br><span class=\"muted\">${escapeHtml(new Date(token.revokedAt).toLocaleString())}</span>` : ''}`\n : 'Attivo';\n return tokens.map((token) => `<tr class=\"${token.revoked ? 'is-disabled' : ''}\"><td><strong>${escapeHtml(token.label)}</strong><br><code>${escapeHtml(token.tokenId)}</code></td><td>${escapeHtml(scopeList(token.scopes))}</td><td>${escapeHtml(token.createdAt ? new Date(token.createdAt).toLocaleString() : '')}</td><td>${serviceTokenExpiry(token)}</td><td>${lastUsed(token)}</td><td>${status(token)}</td><td>${token.revoked ? '' : `<button type=\"button\" data-rotate=\"${escapeHtml(token.tokenId)}\">Ruota</button> <button type=\"button\" class=\"danger-button\" data-revoke=\"${escapeHtml(token.tokenId)}\">Revoca</button>`}</td></tr>`).join('') || `<tr><td colspan=\"7\">Nessun token ${includeRevoked ? '' : 'attivo'}.</td></tr>`;\n}\n\n/** Gestione dei token di servizio: elenco, creazione, rotazione e revoca. */\nasync function showServiceTokens(includeRevoked = false): Promise<void> {\n const tokens = result<ServiceTokenDto[]>(await getServiceTokens({ includeRevoked }));\n render(`<div class=\"toolbar\"><button id=\"new-token\">Nuovo token</button><button id=\"toggle-revoked\" class=\"secondary\">${includeRevoked ? 'Nascondi revocati' : 'Mostra revocati'}</button></div><h2>Token di servizio</h2><p class=\"form-help\">Credenziali macchina-a-macchina per chiamate tecniche, non legate a un utente. Il segreto e mostrato <strong>una sola volta</strong> alla creazione: conservalo come variabile d'ambiente/secret. Autenticazione: <code>Authorization: Bearer &lt;token&gt;</code>.</p><table><thead><tr><th>Token</th><th>Scope</th><th>Creato</th><th>Scade</th><th>Ultimo uso</th><th>Stato</th><th></th></tr></thead><tbody>${serviceTokenRows(tokens, includeRevoked)}</tbody></table>`);\n byId('new-token').onclick = () => showServiceTokenForm();\n byId('toggle-revoked').onclick = () => handleAction(() => showServiceTokens(!includeRevoked));\n document.querySelectorAll<HTMLButtonElement>('[data-revoke]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n if (!window.confirm('Revocare definitivamente questo token? Le integrazioni che lo usano smetteranno di funzionare.')) return;\n await revokeServiceToken(button.dataset.revoke ?? '');\n showNotice('Token di servizio revocato.');\n await showServiceTokens(includeRevoked);\n });\n });\n document.querySelectorAll<HTMLButtonElement>('[data-rotate]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n const issued = result<IssuedServiceTokenDto>(await rotateServiceToken(button.dataset.rotate ?? ''));\n showNotice('Token di servizio ruotato.');\n showIssuedServiceToken(issued);\n });\n });\n}\n\nfunction showServiceTokenForm(): void {\n render(`<button id=\"back\" type=\"button\" class=\"secondary\">Indietro</button><h2>Nuovo token di servizio</h2><form id=\"token-form\"><label>Descrizione ${helpDot('token-label')}<input name=\"label\" required maxlength=\"100\"><span class=\"form-help\">Identifica l'integrazione, ad esempio \"IA - produzione\".</span></label><label>Scope ${helpDot('token-scopes')}<input name=\"scopes\" placeholder=\"ia, chat\"><span class=\"form-help\">Separati da virgola (lettere, numeri, ':', '_', '-'). Definiscono cosa può fare il token.</span></label><label>Durata in giorni ${helpDot('token-ttl')}<input name=\"ttlDays\" type=\"number\" min=\"1\" step=\"1\"><span class=\"form-help\">Opzionale. Lascia vuoto per un token senza scadenza.</span></label><button>Crea token</button></form>`);\n byId('back').onclick = () => void show('tokens');\n const form = document.getElementById('token-form') as HTMLFormElement | null;\n if (form) form.onsubmit = (event) => {\n event.preventDefault();\n handleAction(async () => {\n const values = formValues(eventForm(event));\n const scopes = (values.scopes ?? '').split(',').map((scope) => scope.trim()).filter(Boolean);\n const ttlDays = values.ttlDays ? Number(values.ttlDays) : undefined;\n const issued = result<IssuedServiceTokenDto>(await createServiceToken({\n label: values.label ?? '',\n scopes: scopes.length ? scopes : undefined,\n ttlDays: Number.isFinite(ttlDays) ? ttlDays : undefined,\n }));\n showNotice('Token di servizio creato.');\n showIssuedServiceToken(issued);\n });\n };\n}\n\nfunction showIssuedServiceToken(issued: IssuedServiceTokenDto): void {\n render(`<h2>Token creato</h2><p class=\"form-help\">Copia ora il token: <strong>non sara piu mostrato</strong>. Salvalo come variabile d'ambiente/secret del servizio chiamante e non inserirlo nel body delle richieste.</p><div class=\"token-reveal\"><code id=\"issued-token\">${escapeHtml(issued.token)}</code><button id=\"copy-token\" type=\"button\">Copia</button></div><dl class=\"entity-metadata\"><div><dt>Descrizione</dt><dd>${escapeHtml(issued.label)}</dd></div><div><dt>Scope</dt><dd>${escapeHtml(scopeList(issued.scopes))}</dd></div><div><dt>Scade</dt><dd>${issued.expiresAt ? escapeHtml(new Date(issued.expiresAt).toLocaleString()) : 'nessuna'}</dd></div></dl><button id=\"done-token\">Ho copiato, chiudi</button>`);\n byId('copy-token').onclick = () => handleAction(async () => { await navigator.clipboard.writeText(issued.token); showNotice('Token copiato negli appunti.'); });\n byId('done-token').onclick = () => void show('tokens');\n}\n\n/** Rende un singolo blocco della wiki in HTML sicuro. */\nfunction renderWikiBlock(block: WikiBlock): string {\n switch (block.kind) {\n case 'p':\n return `<p>${escapeHtml(block.text)}</p>`;\n case 'h':\n return `<h3>${escapeHtml(block.text)}</h3>`;\n case 'list': {\n const tag = block.ordered ? 'ol' : 'ul';\n return `<${tag}>${block.items.map((item) => `<li>${escapeHtml(item)}</li>`).join('')}</${tag}>`;\n }\n case 'code': {\n const variant = block.variant ? ` is-${block.variant}` : '';\n const title = block.title ? `<span class=\"wiki-code-title\">${escapeHtml(block.title)}</span>` : '';\n return `<figure class=\"wiki-code${variant}\"><figcaption class=\"wiki-code-head\">${title}<span class=\"wiki-code-lang\">${escapeHtml(block.language)}</span><button type=\"button\" class=\"wiki-copy\" data-wiki-copy aria-label=\"Copia il codice\">Copia</button></figcaption><pre><code>${escapeHtml(block.code)}</code></pre></figure>`;\n }\n case 'callout':\n return `<div class=\"wiki-callout is-${block.tone}\">${block.title ? `<strong>${escapeHtml(block.title)}</strong>` : ''}<p>${escapeHtml(block.text)}</p></div>`;\n case 'table':\n return `<div class=\"wiki-table-wrap\"><table><thead><tr>${block.head.map((cell) => `<th>${escapeHtml(cell)}</th>`).join('')}</tr></thead><tbody>${block.rows.map((row) => `<tr>${row.map((cell) => `<td>${escapeHtml(cell)}</td>`).join('')}</tr>`).join('')}</tbody></table></div>`;\n default:\n return '';\n }\n}\n\n/** Collega i pulsanti \"Copia\" dei blocchi di codice contenuti in `root`. */\nfunction bindCopyButtons(root: ParentNode): void {\n root.querySelectorAll<HTMLButtonElement>('[data-wiki-copy]').forEach((button) => {\n button.onclick = () => handleAction(async () => {\n const codeEl = button.closest('.wiki-code')?.querySelector('code');\n await navigator.clipboard.writeText(codeEl?.textContent ?? '');\n showNotice('Codice copiato negli appunti.');\n });\n });\n}\n\n/** Icona \"i\" che apre la miniguida contestuale del campo (trigger di popover non-modale). */\nfunction helpDot(key: string): string {\n const title = HELP[key]?.title ?? key;\n return `<button type=\"button\" class=\"help-dot\" data-help=\"${escapeHtml(key)}\" aria-haspopup=\"dialog\" aria-expanded=\"false\" aria-controls=\"accessi-help-popover\" aria-label=\"Informazioni: ${escapeHtml(title)}\" title=\"Informazioni\">i</button>`;\n}\n\nlet helpPopover: HTMLElement | null = null;\nlet helpAnchor: HTMLElement | null = null;\n\nfunction ensureHelpPopover(): HTMLElement {\n if (!helpPopover) {\n helpPopover = document.createElement('div');\n helpPopover.className = 'help-popover';\n helpPopover.id = 'accessi-help-popover';\n helpPopover.hidden = true;\n helpPopover.setAttribute('role', 'dialog');\n helpPopover.setAttribute('aria-modal', 'false');\n helpPopover.tabIndex = -1;\n document.body.appendChild(helpPopover);\n }\n return helpPopover;\n}\n\n/** Chiude il popover; `restoreFocus` riporta il focus al trigger quando la chiusura e esplicita. */\nfunction closeHelp(restoreFocus = true): void {\n if (!helpPopover) return;\n const wasOpen = !helpPopover.hidden;\n helpPopover.hidden = true;\n const anchor = helpAnchor;\n if (anchor) anchor.setAttribute('aria-expanded', 'false');\n helpAnchor = null;\n if (restoreFocus && wasOpen && anchor && document.contains(anchor)) anchor.focus();\n}\n\n/** Posiziona il popover sotto l'icona, correggendo i bordi dello schermo. */\nfunction positionHelp(): void {\n if (!helpPopover || !helpAnchor || helpPopover.hidden) return;\n const rect = helpAnchor.getBoundingClientRect();\n const width = helpPopover.offsetWidth;\n const height = helpPopover.offsetHeight;\n const margin = 8;\n const left = Math.max(margin, Math.min(rect.right - width, window.innerWidth - width - margin));\n let top = rect.bottom + 6;\n if (top + height > window.innerHeight - margin) {\n const above = rect.top - height - 6;\n top = above >= margin ? above : Math.max(margin, window.innerHeight - height - margin);\n }\n helpPopover.style.left = `${left}px`;\n helpPopover.style.top = `${top}px`;\n}\n\nfunction openHelp(anchor: HTMLElement): void {\n const entry = HELP[anchor.dataset.help ?? ''];\n if (!entry) return;\n const popover = ensureHelpPopover();\n if (helpAnchor && helpAnchor !== anchor) helpAnchor.setAttribute('aria-expanded', 'false');\n popover.innerHTML = `<div class=\"help-popover-head\"><h4 id=\"accessi-help-title\">${escapeHtml(entry.title)}</h4><button type=\"button\" class=\"help-close\" data-help-close aria-label=\"Chiudi\">&times;</button></div><div class=\"help-popover-body\">${entry.blocks.map(renderWikiBlock).join('')}</div>`;\n popover.setAttribute('aria-labelledby', 'accessi-help-title');\n popover.hidden = false;\n helpAnchor = anchor;\n anchor.setAttribute('aria-expanded', 'true');\n bindCopyButtons(popover);\n positionHelp();\n (popover.querySelector<HTMLElement>('.help-close') ?? popover).focus();\n}\n\n/** Indice laterale della wiki, raggruppato per area. */\nfunction wikiIndexMarkup(selectedId: string): string {\n return wikiGroups().map(({ group, sections }) => `<div class=\"wiki-index-group\"><span class=\"wiki-index-group-title\">${escapeHtml(group)}</span><ul>${sections.map((section) => `<li><a href=\"#wiki-${escapeHtml(section.id)}\" data-wiki=\"${escapeHtml(section.id)}\"${section.id === selectedId ? ' aria-current=\"page\"' : ''}>${escapeHtml(section.title)}</a></li>`).join('')}</ul></div>`).join('');\n}\n\n/** Wiki integrata: indice, contenuti e copia del digest per l'IA. */\nasync function showWiki(sectionId?: string): Promise<void> {\n const hashId = /^#wiki-([a-z0-9-]+)$/.exec(window.location.hash)?.[1];\n const requested = sectionId ?? hashId;\n const selected = WIKI_SECTIONS.find((section) => section.id === requested) ?? WIKI_SECTIONS[0];\n if (!selected) return;\n\n render(`<div class=\"wiki\">\n <aside class=\"wiki-index\">\n <div class=\"wiki-index-head\"><strong>Indice</strong><button type=\"button\" id=\"wiki-copy-ai\">Copia per AI</button></div>\n ${wikiIndexMarkup(selected.id)}\n </aside>\n <article class=\"wiki-content\">\n <header class=\"wiki-section-head\"><h2>${escapeHtml(selected.title)}</h2><p>${escapeHtml(selected.summary)}</p></header>\n ${selected.blocks.map(renderWikiBlock).join('')}\n </article>\n </div>`);\n\n document.querySelectorAll<HTMLAnchorElement>('[data-wiki]').forEach((link) => {\n link.onclick = (event) => {\n event.preventDefault();\n const id = link.dataset.wiki ?? '';\n window.history.replaceState(null, '', `${routePath('wiki')}#wiki-${id}`);\n showWiki(id);\n };\n });\n bindCopyButtons(document);\n byId('wiki-copy-ai').onclick = () => handleAction(async () => {\n await navigator.clipboard.writeText(buildAiDigest());\n showNotice('Documentazione per AI copiata negli appunti.');\n });\n}\n\n/** Rendering minimale di Markdown (heading, liste, codice, grassetto/code inline). */\nfunction inlineMarkdown(text: string): string {\n return escapeHtml(text)\n .replace(/\\*\\*([^*]+)\\*\\*/g, '<strong>$1</strong>')\n .replace(/`([^`]+)`/g, '<code>$1</code>');\n}\n\nfunction renderMarkdown(markdown: string): string {\n const lines = markdown.replace(/\\r\\n/g, '\\n').split('\\n');\n const html: string[] = [];\n let inList = false;\n let inCode = false;\n const closeList = () => { if (inList) { html.push('</ul>'); inList = false; } };\n\n for (const line of lines) {\n if (line.startsWith('```')) {\n closeList();\n html.push(inCode ? '</code></pre>' : '<pre class=\"markdown-code\"><code>');\n inCode = !inCode;\n continue;\n }\n if (inCode) { html.push(escapeHtml(line)); continue; }\n\n const heading = /^(#{1,4})\\s+(.*)$/.exec(line);\n if (heading) { closeList(); const level = (heading[1] ?? '').length; html.push(`<h${level}>${inlineMarkdown(heading[2] ?? '')}</h${level}>`); continue; }\n\n const bullet = /^\\s*[-*]\\s+(.*)$/.exec(line);\n if (bullet) { if (!inList) { html.push('<ul>'); inList = true; } html.push(`<li>${inlineMarkdown(bullet[1] ?? '')}</li>`); continue; }\n\n if (line.trim() === '') { closeList(); continue; }\n closeList();\n html.push(`<p>${inlineMarkdown(line)}</p>`);\n }\n\n if (inCode) html.push('</code></pre>');\n closeList();\n return html.join('');\n}\n\nasync function showChangelog(): Promise<void> {\n render(`<article class=\"wiki-content markdown-body changelog-page\">\n <header class=\"wiki-section-head\"><h2>Changelog</h2><p>Novita e modifiche rilevanti del modulo Accessi.</p></header>\n ${renderMarkdown(changelogMarkdown)}\n </article>`);\n}\n\nfunction downloadTextFile(fileName: string, content: string): void {\n const blob = new Blob([content], { type: 'text/plain;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = fileName;\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n URL.revokeObjectURL(url);\n}\n\nasync function showSql(): Promise<void> {\n const schema = result<SchemaDdlResult>(await getSchema());\n const copy = (text: string, notice: string) => () => handleAction(async () => {\n await navigator.clipboard.writeText(text);\n showNotice(notice);\n });\n\n render(`<div class=\"toolbar\"><button id=\"sql-copy-all\">Copia tutto</button><button id=\"sql-download\" class=\"secondary\">Scarica .sql</button><button id=\"sql-reload\" class=\"secondary\">Aggiorna</button></div>\n <h2>SQL dello schema</h2>\n <p class=\"form-help\">DDL generato dallo schema Accessi <strong>${escapeHtml(schema.version)}</strong>. Usalo per creare le entita su una nuova installazione (database vuoto).</p>\n <div class=\"entity-summary\">\n <span><strong>${schema.presentTables.length}</strong> tabelle presenti</span>\n <span><strong>${schema.presentGenerators.length}</strong> generatori</span>\n <span><strong>${schema.extraTables.length}</strong> tabelle extra fuori schema Accessi</span>\n </div>\n ${schema.extraTables.length ? `<p class=\"form-help\">Tabelle presenti non gestite da Accessi: <code>${schema.extraTables.map((name) => escapeHtml(name)).join(', ')}</code></p>` : ''}\n ${schema.sections.map((section) => `<section class=\"sql-section\"><div class=\"sql-section-head\"><h3>${escapeHtml(section.title)}</h3><button type=\"button\" class=\"secondary\" data-sql-copy=\"${escapeHtml(section.id)}\">Copia sezione</button></div><pre class=\"markdown-code\"><code>${escapeHtml(section.sql)}</code></pre></section>`).join('')}`);\n\n byId('sql-copy-all').onclick = copy(schema.script, 'Script SQL completo copiato.');\n byId('sql-download').onclick = () => downloadTextFile(`accessi-schema-${schema.version}.sql`, schema.script);\n byId('sql-reload').onclick = () => handleAction(showSql);\n document.querySelectorAll<HTMLButtonElement>('[data-sql-copy]').forEach((button) => {\n const section = schema.sections.find((entry) => entry.id === button.dataset.sqlCopy);\n if (section) button.onclick = copy(section.sql, `Sezione \"${section.title}\" copiata.`);\n });\n}\n\nasync function show(view: ConsoleView): Promise<void> {\n try {\n const views: Record<string, () => Promise<void>> = {\n users: showUsers,\n roles: showRoles,\n menuGroups: showMenuGroups,\n menuItems: showMenuItems,\n menuTypes: showMenuTypes,\n menuScopes: showMenuScopes,\n ssoProviders: showSsoProviders,\n ssoUsers: showSsoUsers,\n tokens: showServiceTokens,\n wiki: showWiki,\n changelog: showChangelog,\n sql: showSql,\n };\n setActiveNavigation(view);\n const renderView = views[view];\n if (!renderView) throw new Error('Sezione console non valida.');\n await renderView();\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;\nconst bootstrapAdminForm = document.getElementById('bootstrap-admin-form') as HTMLFormElement | null;\nif (bootstrapAdminForm) {\n bootstrapAdminForm.onsubmit = async (event) => {\n event.preventDefault();\n const status = document.getElementById('bootstrap-admin-status');\n try {\n if (status) status.textContent = '';\n const values = formValues(bootstrapAdminForm);\n const fields = new FormData(bootstrapAdminForm);\n const created = result<BootstrapAdminResultDto>(await bootstrapAdmin({\n token: values.token ?? '',\n email: values.email ?? '',\n nome: values.nome || undefined,\n cognome: values.cognome || undefined,\n password: values.password || undefined,\n superUser: fields.has('superUser'),\n }));\n const generated = created.password ? ` Password generata (copiala ora): ${created.password}` : '';\n if (status) status.textContent = `Utente admin creato: ${created.email}.${generated} Ora accedi dal form principale.`;\n bootstrapAdminForm.reset();\n } catch (error) {\n if (status) status.textContent = error instanceof Error ? error.message : 'Creazione non riuscita.';\n }\n };\n}\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 void (async () => {\n if (cookieMode) {\n // Revoca il token corrente e cancella i cookie lato server (best effort).\n await revokeToken({}).catch(() => undefined);\n }\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 })();\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});\n// Sessione scaduta o token revocato: il trasporto segnala il 401, la console torna al login.\nwindow.addEventListener(ACCESSI_UNAUTHORIZED_EVENT, () => {\n if (!token && !cookieMode) return;\n token = null;\n currentUser = null;\n setAccessiConsoleToken(null);\n sessionStorage.removeItem('accessi-console-token');\n finishBoot('login');\n resetLogin();\n byId('login-error').textContent = 'Sessione scaduta o non piu valida. Accedi di nuovo.';\n});\nwindow.addEventListener('accessi-console-network', (event: Event) => {\n updateLoadingState((event as CustomEvent<{ active: boolean }>).detail.active);\n});\n// Tooltip di aiuto: apertura/chiusura dall'icona \"i\", chiusura su click esterno o Esc.\ndocument.addEventListener('click', (event) => {\n const target = event.target as HTMLElement;\n const dot = target.closest<HTMLElement>('[data-help]');\n if (dot) {\n event.preventDefault();\n if (helpAnchor === dot && helpPopover && !helpPopover.hidden) {\n closeHelp();\n } else {\n openHelp(dot);\n }\n return;\n }\n if (target.closest('[data-help-close]')) {\n closeHelp();\n return;\n }\n if (helpPopover && !helpPopover.hidden && !target.closest('.help-popover')) closeHelp();\n});\nwindow.addEventListener('keydown', (event) => {\n if (event.key === 'Escape') closeHelp();\n});\nwindow.addEventListener('resize', positionHelp);\nwindow.addEventListener('scroll', positionHelp, true);\n// La sezione \"Crea utente admin\" viene mostrata solo se il backend la espone.\nvoid applyAdminBootstrapVisibility();\n// Auto-ingresso dal frontend gia autenticato: il fragment contiene solo un ticket\n// monouso, mai il JWT. La console lo scambia con la sessione Accessi.\nconst entryTicket = /^#entry=([a-f0-9]{64})$/i.exec(window.location.hash)?.[1];\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 (entryTicket) {\n window.history.replaceState(null, '', window.location.pathname);\n void exchangeConsoleEntry(entryTicket);\n} else if (ssoChallenge) {\n token = null;\n setAccessiConsoleToken(null);\n sessionStorage.removeItem('accessi-console-token');\n window.history.replaceState(null, '', window.location.pathname);\n finishBoot('login');\n showTwoFactor({ challengeId: ssoChallenge, resendAfterSeconds: 60 });\n} else if (token || cookieMode) {\n void bootstrap();\n} else {\n finishBoot('login');\n}\n\n"]}