emilsoftware-utilities 2.0.0-dev.4 → 2.0.0-dev.41
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.
- package/README.MD +199 -38
- package/dist/ContractGenerator.d.ts +4 -3
- package/dist/ContractGenerator.js +15 -5
- package/dist/ContractGenerator.js.map +1 -1
- package/dist/DailyFileTransport.d.ts +21 -0
- package/dist/DailyFileTransport.js +74 -0
- package/dist/DailyFileTransport.js.map +1 -0
- package/dist/DatabaseUpdater.d.ts +1 -1
- package/dist/DatabaseUpdater.js +32 -29
- package/dist/DatabaseUpdater.js.map +1 -1
- package/dist/EmilsoftwareModule.js.map +1 -1
- package/dist/ExecutionTimeLogger.d.ts +2 -2
- package/dist/ExecutionTimeLogger.js +5 -4
- package/dist/ExecutionTimeLogger.js.map +1 -1
- package/dist/Logger.d.ts +22 -11
- package/dist/Logger.js +132 -119
- package/dist/Logger.js.map +1 -1
- package/dist/Orm.d.ts +28 -12
- package/dist/Orm.js +194 -153
- package/dist/Orm.js.map +1 -1
- package/dist/RoutesLoggerMiddleware.js.map +1 -1
- package/dist/Utilities.d.ts +18 -8
- package/dist/Utilities.js +117 -38
- package/dist/Utilities.js.map +1 -1
- package/dist/accessi-module/AccessiModule.d.ts +116 -2
- package/dist/accessi-module/AccessiModule.js +36 -5
- package/dist/accessi-module/AccessiModule.js.map +1 -1
- package/dist/accessi-module/Console/accessiFetch.d.ts +16 -0
- package/dist/accessi-module/Console/accessiFetch.js +87 -0
- package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
- package/dist/accessi-module/Console/console.css +681 -0
- package/dist/accessi-module/Console/console.d.ts +1 -0
- package/dist/accessi-module/Console/console.js +3414 -0
- package/dist/accessi-module/Console/console.js.map +1 -0
- package/dist/accessi-module/Console/generated/accessiApi.d.ts +582 -0
- package/dist/accessi-module/Console/generated/accessiApi.js +549 -0
- package/dist/accessi-module/Console/generated/accessiApi.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/abilitazioneMenu.d.ts +39 -0
- package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js +3 -0
- package/dist/accessi-module/Console/generated/model/abilitazioneMenu.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.d.ts +16 -0
- package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js +17 -0
- package/dist/accessi-module/Console/generated/model/abilitazioneMenuTipoAbilitazione.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/actionResponse.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/actionResponse.js +9 -0
- package/dist/accessi-module/Console/generated/model/actionResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.d.ts +11 -0
- package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js +3 -0
- package/dist/accessi-module/Console/generated/model/assignPermissionsToUserRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.d.ts +10 -0
- package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/assignRolesToUserRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.d.ts +10 -0
- package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js +3 -0
- package/dist/accessi-module/Console/generated/model/authenticatedTokenPayloadDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.d.ts +19 -0
- package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js +9 -0
- package/dist/accessi-module/Console/generated/model/authenticatedUserPayloadDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.d.ts +17 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js +9 -0
- package/dist/accessi-module/Console/generated/model/bootstrapAdminResultDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/confirmResetPasswordRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/createFederatedIdentityRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/createFederatedProviderRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.d.ts +18 -0
- package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js +3 -0
- package/dist/accessi-module/Console/generated/model/createFederatedUserRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.d.ts +23 -0
- package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js +3 -0
- package/dist/accessi-module/Console/generated/model/createFilterTypeRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js +15 -0
- package/dist/accessi-module/Console/generated/model/createFilterTypeRequestFlgEnabled.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.d.ts +22 -0
- package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/createMenuGroupRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createMenuRequest.d.ts +52 -0
- package/dist/accessi-module/Console/generated/model/createMenuRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/createMenuRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.d.ts +18 -0
- package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/createMenuTypeRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.d.ts +16 -0
- package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/createServiceTokenRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/createServiceTokenResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/errorResponse.d.ts +18 -0
- package/dist/accessi-module/Console/generated/model/errorResponse.js +9 -0
- package/dist/accessi-module/Console/generated/model/errorResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityListResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.d.ts +23 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js +9 -0
- package/dist/accessi-module/Console/generated/model/federatedIdentityResponseDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderListResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js +9 -0
- package/dist/accessi-module/Console/generated/model/federatedProviderResponseDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/filtriUtente.d.ts +32 -0
- package/dist/accessi-module/Console/generated/model/filtriUtente.js +9 -0
- package/dist/accessi-module/Console/generated/model/filtriUtente.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getFiltriResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getFiltriResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getFiltriResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js +9 -0
- package/dist/accessi-module/Console/generated/model/getFiltriUtenteParams.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getFiltriUtenteResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js +9 -0
- package/dist/accessi-module/Console/generated/model/getGroupsWithMenusParams.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getGroupsWithMenusResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getMenuTypesResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getMenusResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getMenusResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getMenusResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getRolesResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getRolesResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getRolesResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getSchemaResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getSchemaResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getSchemaResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getServiceTokensParams.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js +9 -0
- package/dist/accessi-module/Console/generated/model/getServiceTokensParams.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getServiceTokensResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.d.ts +10 -0
- package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/getUserByTokenRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getUserByTokenResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getUsersParams.d.ts +32 -0
- package/dist/accessi-module/Console/generated/model/getUsersParams.js +9 -0
- package/dist/accessi-module/Console/generated/model/getUsersParams.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getUsersResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/getUsersResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/getUsersResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getUsersResult.d.ts +17 -0
- package/dist/accessi-module/Console/generated/model/getUsersResult.js +3 -0
- package/dist/accessi-module/Console/generated/model/getUsersResult.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js +9 -0
- package/dist/accessi-module/Console/generated/model/getUsersResultExtensionFields.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +19 -0
- package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js +3 -0
- package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/index.d.ts +99 -0
- package/dist/accessi-module/Console/generated/model/index.js +116 -0
- package/dist/accessi-module/Console/generated/model/index.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.d.ts +30 -0
- package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js +9 -0
- package/dist/accessi-module/Console/generated/model/issuedServiceTokenDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/loginRequest.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/loginRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/loginRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/loginResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/loginResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/loginResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/loginResult.d.ts +32 -0
- package/dist/accessi-module/Console/generated/model/loginResult.js +3 -0
- package/dist/accessi-module/Console/generated/model/loginResult.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js +9 -0
- package/dist/accessi-module/Console/generated/model/loginResultExtensionFields.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js +14 -0
- package/dist/accessi-module/Console/generated/model/loginResultPasswordRequired.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +32 -0
- package/dist/accessi-module/Console/generated/model/menuEntity.js +9 -0
- package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/menuTypeEntity.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/menuTypeEntity.js +9 -0
- package/dist/accessi-module/Console/generated/model/menuTypeEntity.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js +9 -0
- package/dist/accessi-module/Console/generated/model/passwordExpiredResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/permission.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/permission.js +9 -0
- package/dist/accessi-module/Console/generated/model/permission.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/publicRegisterRequest.d.ts +51 -0
- package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/publicRegisterRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/registerRequest.d.ts +62 -0
- package/dist/accessi-module/Console/generated/model/registerRequest.js +3 -0
- package/dist/accessi-module/Console/generated/model/registerRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/registerResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/registerResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/registerResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/resendTwoFactorRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/role.d.ts +15 -0
- package/dist/accessi-module/Console/generated/model/role.js +3 -0
- package/dist/accessi-module/Console/generated/model/role.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/ruoliMenu.d.ts +15 -0
- package/dist/accessi-module/Console/generated/model/ruoliMenu.js +3 -0
- package/dist/accessi-module/Console/generated/model/ruoliMenu.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.d.ts +16 -0
- package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js +17 -0
- package/dist/accessi-module/Console/generated/model/ruoliMenuTipoAbilitazione.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/schemaDdlResult.d.ts +20 -0
- package/dist/accessi-module/Console/generated/model/schemaDdlResult.js +3 -0
- package/dist/accessi-module/Console/generated/model/schemaDdlResult.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/schemaDdlSection.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/schemaDdlSection.js +9 -0
- package/dist/accessi-module/Console/generated/model/schemaDdlSection.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/sendResetPasswordEmailRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js +9 -0
- package/dist/accessi-module/Console/generated/model/serveResetPasswordPageParams.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/serviceTokenDto.d.ts +28 -0
- package/dist/accessi-module/Console/generated/model/serviceTokenDto.js +9 -0
- package/dist/accessi-module/Console/generated/model/serviceTokenDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.d.ts +10 -0
- package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/setPasswordLoginPolicyRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js +3 -0
- package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.d.ts +18 -0
- package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js +19 -0
- package/dist/accessi-module/Console/generated/model/setStatoRegistrazioneDtoStatoRegistrazione.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/status.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/status.js +9 -0
- package/dist/accessi-module/Console/generated/model/status.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/tipoFiltro.d.ts +23 -0
- package/dist/accessi-module/Console/generated/model/tipoFiltro.js +3 -0
- package/dist/accessi-module/Console/generated/model/tipoFiltro.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js +15 -0
- package/dist/accessi-module/Console/generated/model/tipoFiltroFlgEnabled.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/tokenResult.d.ts +15 -0
- package/dist/accessi-module/Console/generated/model/tokenResult.js +3 -0
- package/dist/accessi-module/Console/generated/model/tokenResult.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/tokenResultType.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/tokenResultType.js +15 -0
- package/dist/accessi-module/Console/generated/model/tokenResultType.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.d.ts +18 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js +3 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.d.ts +10 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js +14 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoMethod.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js +14 -0
- package/dist/accessi-module/Console/generated/model/twoFactorChallengeDtoTwoFactorRequired.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.d.ts +10 -0
- package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/updateEnabledStatusRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.d.ts +11 -0
- package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/updateFederatedIdentityRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.d.ts +12 -0
- package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/updateFederatedProviderRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.d.ts +21 -0
- package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js +3 -0
- package/dist/accessi-module/Console/generated/model/updateFilterTypeRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js +15 -0
- package/dist/accessi-module/Console/generated/model/updateFilterTypeRequestFlgEnabled.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.d.ts +17 -0
- package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/updateMenuGroupRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateMenuRequest.d.ts +47 -0
- package/dist/accessi-module/Console/generated/model/updateMenuRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/updateMenuRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.d.ts +13 -0
- package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/updateMenuTypeRequest.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/userDto.d.ts +88 -0
- package/dist/accessi-module/Console/generated/model/userDto.js +3 -0
- package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.d.ts +18 -0
- package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js +19 -0
- package/dist/accessi-module/Console/generated/model/userDtoStatoRegistrazione.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/userGrantsDto.d.ts +16 -0
- package/dist/accessi-module/Console/generated/model/userGrantsDto.js +3 -0
- package/dist/accessi-module/Console/generated/model/userGrantsDto.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/userGrantsResponse.d.ts +14 -0
- package/dist/accessi-module/Console/generated/model/userGrantsResponse.js +3 -0
- package/dist/accessi-module/Console/generated/model/userGrantsResponse.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.d.ts +18 -0
- package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js +9 -0
- package/dist/accessi-module/Console/generated/model/verifyTwoFactorRequest.js.map +1 -0
- package/dist/accessi-module/Console/help.d.ts +13 -0
- package/dist/accessi-module/Console/help.js +355 -0
- package/dist/accessi-module/Console/help.js.map +1 -0
- package/dist/accessi-module/Console/index.html +153 -0
- package/dist/accessi-module/Console/wiki.d.ts +52 -0
- package/dist/accessi-module/Console/wiki.js +731 -0
- package/dist/accessi-module/Console/wiki.js.map +1 -0
- package/dist/accessi-module/Controllers/AccessiConsoleController.d.ts +18 -0
- package/dist/accessi-module/Controllers/AccessiConsoleController.js +111 -0
- package/dist/accessi-module/Controllers/AccessiConsoleController.js.map +1 -0
- package/dist/accessi-module/Controllers/AuthController.d.ts +12 -6
- package/dist/accessi-module/Controllers/AuthController.js +167 -82
- package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
- package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -5
- package/dist/accessi-module/Controllers/ConfiguratorController.js +26 -44
- package/dist/accessi-module/Controllers/ConfiguratorController.js.map +1 -1
- package/dist/accessi-module/Controllers/EmailController.d.ts +4 -6
- package/dist/accessi-module/Controllers/EmailController.js +12 -14
- package/dist/accessi-module/Controllers/EmailController.js.map +1 -1
- package/dist/accessi-module/Controllers/FiltriController.d.ts +5 -4
- package/dist/accessi-module/Controllers/FiltriController.js +125 -6
- package/dist/accessi-module/Controllers/FiltriController.js.map +1 -1
- package/dist/accessi-module/Controllers/PermissionController.d.ts +12 -1
- package/dist/accessi-module/Controllers/PermissionController.js +322 -51
- package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
- package/dist/accessi-module/Controllers/SchemaController.d.ts +9 -0
- package/dist/accessi-module/Controllers/SchemaController.js +79 -0
- package/dist/accessi-module/Controllers/SchemaController.js.map +1 -0
- package/dist/accessi-module/Controllers/ServiceTokenController.d.ts +23 -0
- package/dist/accessi-module/Controllers/ServiceTokenController.js +176 -0
- package/dist/accessi-module/Controllers/ServiceTokenController.js.map +1 -0
- package/dist/accessi-module/Controllers/UserController.d.ts +8 -4
- package/dist/accessi-module/Controllers/UserController.js +161 -28
- package/dist/accessi-module/Controllers/UserController.js.map +1 -1
- package/dist/accessi-module/Dtos/Abilitazione.js.map +1 -1
- package/dist/accessi-module/Dtos/AbilitazioneMenu.js +16 -8
- package/dist/accessi-module/Dtos/AbilitazioneMenu.js.map +1 -1
- package/dist/accessi-module/Dtos/AdminBootstrapDtos.d.ts +19 -0
- package/dist/accessi-module/Dtos/AdminBootstrapDtos.js +83 -0
- package/dist/accessi-module/Dtos/AdminBootstrapDtos.js.map +1 -0
- package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js +0 -1
- package/dist/accessi-module/Dtos/AssignPermissionsToUserRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js +1 -2
- package/dist/accessi-module/Dtos/AssignRolesToUserRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.d.ts +13 -0
- package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js +70 -0
- package/dist/accessi-module/Dtos/AuthenticatedUserPayloadDto.js.map +1 -0
- package/dist/accessi-module/Dtos/BaseResponse.d.ts +22 -0
- package/dist/accessi-module/Dtos/BaseResponse.js +106 -1
- package/dist/accessi-module/Dtos/BaseResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/CatalogDtos.d.ts +64 -0
- package/dist/accessi-module/Dtos/CatalogDtos.js +322 -0
- package/dist/accessi-module/Dtos/CatalogDtos.js.map +1 -0
- package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.d.ts +3 -0
- package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js +31 -0
- package/dist/accessi-module/Dtos/ConfirmResetPasswordRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/FederatedIdentityDtos.d.ts +69 -0
- package/dist/accessi-module/Dtos/FederatedIdentityDtos.js +236 -0
- package/dist/accessi-module/Dtos/FederatedIdentityDtos.js.map +1 -0
- package/dist/accessi-module/Dtos/FiltriUtente.js +5 -1
- package/dist/accessi-module/Dtos/FiltriUtente.js.map +1 -1
- package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js +1 -1
- package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/GetMenusResponse.js +1 -1
- package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/GetRolesResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/GetUserByTokenRequest.d.ts +3 -0
- package/dist/accessi-module/Dtos/GetUserByTokenRequest.js +26 -0
- package/dist/accessi-module/Dtos/GetUserByTokenRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/GetUserByTokenResponse.d.ts +5 -0
- package/dist/accessi-module/Dtos/GetUserByTokenResponse.js +27 -0
- package/dist/accessi-module/Dtos/GetUserByTokenResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/GetUsersResponse.d.ts +1 -1
- package/dist/accessi-module/Dtos/GetUsersResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/LoginRequest.d.ts +1 -1
- package/dist/accessi-module/Dtos/LoginRequest.js +3 -2
- package/dist/accessi-module/Dtos/LoginRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/LoginResponse.d.ts +6 -2
- package/dist/accessi-module/Dtos/LoginResponse.js +20 -7
- package/dist/accessi-module/Dtos/LoginResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/MenuItem.js +1 -0
- package/dist/accessi-module/Dtos/Permission.d.ts +1 -0
- package/dist/accessi-module/Dtos/Permission.js +1 -0
- package/dist/accessi-module/Dtos/Permission.js.map +1 -1
- package/dist/accessi-module/Dtos/PublicRegisterRequest.d.ts +5 -0
- package/dist/accessi-module/Dtos/PublicRegisterRequest.js +15 -0
- package/dist/accessi-module/Dtos/PublicRegisterRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/RegisterRequest.d.ts +2 -4
- package/dist/accessi-module/Dtos/RegisterRequest.js +18 -28
- package/dist/accessi-module/Dtos/RegisterRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/RegisterResponse.d.ts +1 -1
- package/dist/accessi-module/Dtos/RegisterResponse.js +3 -3
- package/dist/accessi-module/Dtos/RegisterResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/Role.d.ts +4 -0
- package/dist/accessi-module/Dtos/Role.js +4 -0
- package/dist/accessi-module/Dtos/Role.js.map +1 -1
- package/dist/accessi-module/Dtos/RuoliMenu.js.map +1 -1
- package/dist/accessi-module/Dtos/SchemaDtos.d.ts +19 -0
- package/dist/accessi-module/Dtos/SchemaDtos.js +84 -0
- package/dist/accessi-module/Dtos/SchemaDtos.js.map +1 -0
- package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.d.ts +4 -0
- package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js +36 -0
- package/dist/accessi-module/Dtos/SendResetPasswordEmailRequest.js.map +1 -0
- package/dist/accessi-module/Dtos/ServiceToken.d.ts +34 -0
- package/dist/accessi-module/Dtos/ServiceToken.js +128 -0
- package/dist/accessi-module/Dtos/ServiceToken.js.map +1 -0
- package/dist/accessi-module/Dtos/SetStatoRegistrazione.js.map +1 -1
- package/dist/accessi-module/Dtos/StatoRegistrazione.js.map +1 -1
- package/dist/accessi-module/Dtos/TipoAbilitazione.d.ts +4 -0
- package/dist/accessi-module/Dtos/TipoAbilitazione.js +4 -0
- package/dist/accessi-module/Dtos/TipoAbilitazione.js.map +1 -1
- package/dist/accessi-module/Dtos/TipoFiltro.js.map +1 -1
- package/dist/accessi-module/Dtos/TokenResult.js.map +1 -1
- package/dist/accessi-module/Dtos/TwoFactorDtos.d.ts +13 -0
- package/dist/accessi-module/Dtos/TwoFactorDtos.js +60 -0
- package/dist/accessi-module/Dtos/TwoFactorDtos.js.map +1 -0
- package/dist/accessi-module/Dtos/UpdateEnabledStatusRequest.js.map +1 -1
- package/dist/accessi-module/Dtos/UserDto.d.ts +9 -4
- package/dist/accessi-module/Dtos/UserDto.js +39 -24
- package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
- package/dist/accessi-module/Dtos/UserGrantsDto.js.map +1 -1
- package/dist/accessi-module/Dtos/UserGrantsResponse.d.ts +5 -0
- package/dist/accessi-module/Dtos/UserGrantsResponse.js +27 -0
- package/dist/accessi-module/Dtos/UserGrantsResponse.js.map +1 -0
- package/dist/accessi-module/Dtos/index.d.ts +13 -0
- package/dist/accessi-module/Dtos/index.js +13 -0
- package/dist/accessi-module/Dtos/index.js.map +1 -1
- package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.d.ts +33 -0
- package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js +106 -0
- package/dist/accessi-module/Services/AdminBootstrapService/AdminBootstrapService.js.map +1 -0
- package/dist/accessi-module/Services/AuthService/AuthService.d.ts +40 -5
- package/dist/accessi-module/Services/AuthService/AuthService.js +192 -42
- package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
- package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.d.ts +3 -1
- package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js +5 -1
- package/dist/accessi-module/Services/ConfiguratorService/ConfiguratorService.js.map +1 -1
- package/dist/accessi-module/Services/EmailService/EmailService.d.ts +9 -2
- package/dist/accessi-module/Services/EmailService/EmailService.js +47 -22
- package/dist/accessi-module/Services/EmailService/EmailService.js.map +1 -1
- package/dist/accessi-module/Services/FiltriService/FiltriService.d.ts +18 -3
- package/dist/accessi-module/Services/FiltriService/FiltriService.js +92 -16
- package/dist/accessi-module/Services/FiltriService/FiltriService.js.map +1 -1
- package/dist/accessi-module/Services/PermissionService/PermissionService.d.ts +77 -2
- package/dist/accessi-module/Services/PermissionService/PermissionService.js +603 -206
- package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
- package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.d.ts +36 -0
- package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js +125 -0
- package/dist/accessi-module/Services/SchemaExportService/SchemaExportService.js.map +1 -0
- package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.d.ts +75 -0
- package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js +265 -0
- package/dist/accessi-module/Services/ServiceTokenService/ServiceTokenService.js.map +1 -0
- package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.d.ts +27 -0
- package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js +175 -0
- package/dist/accessi-module/Services/TwoFactorService/TwoFactorService.js.map +1 -0
- package/dist/accessi-module/Services/UserService/UserService.d.ts +51 -5
- package/dist/accessi-module/Services/UserService/UserService.js +396 -294
- package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
- package/dist/accessi-module/Views/reset-password.html +213 -213
- package/dist/accessi-module/accessiRuntime.d.ts +45 -0
- package/dist/accessi-module/accessiRuntime.js +39 -0
- package/dist/accessi-module/accessiRuntime.js.map +1 -0
- package/dist/accessi-module/database-updates/AccessiCatalogMigrator.d.ts +83 -0
- package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js +360 -0
- package/dist/accessi-module/database-updates/AccessiCatalogMigrator.js.map +1 -0
- package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.d.ts +58 -10
- package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +506 -179
- package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
- package/dist/accessi-module/database-updates/accessiOptionsFromEnv.d.ts +5 -0
- package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js +79 -0
- package/dist/accessi-module/database-updates/accessiOptionsFromEnv.js.map +1 -0
- package/dist/accessi-module/database-updates/accessiSchema.d.ts +67 -0
- package/dist/accessi-module/database-updates/accessiSchema.js +124 -0
- package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -0
- package/dist/accessi-module/database-updates/optionalColumns.d.ts +7 -0
- package/dist/accessi-module/database-updates/optionalColumns.js +58 -0
- package/dist/accessi-module/database-updates/optionalColumns.js.map +1 -0
- package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.d.ts +1 -0
- package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js +69 -0
- package/dist/accessi-module/database-updates/runAccessiCatalogMigrations.js.map +1 -0
- package/dist/accessi-module/database-updates/runAccessiDbUpdate.js +15 -53
- package/dist/accessi-module/database-updates/runAccessiDbUpdate.js.map +1 -1
- package/dist/accessi-module/federated-auth/FederatedAuthController.d.ts +24 -0
- package/dist/accessi-module/federated-auth/FederatedAuthController.js +333 -0
- package/dist/accessi-module/federated-auth/FederatedAuthController.js.map +1 -0
- package/dist/accessi-module/federated-auth/FederatedAuthService.d.ts +100 -0
- package/dist/accessi-module/federated-auth/FederatedAuthService.js +451 -0
- package/dist/accessi-module/federated-auth/FederatedAuthService.js.map +1 -0
- package/dist/accessi-module/federated-auth/FederatedAuthTypes.d.ts +53 -0
- package/dist/accessi-module/federated-auth/FederatedAuthTypes.js +3 -0
- package/dist/accessi-module/federated-auth/FederatedAuthTypes.js.map +1 -0
- package/dist/accessi-module/index.d.ts +29 -0
- package/dist/accessi-module/index.js +89 -19
- package/dist/accessi-module/index.js.map +1 -1
- package/dist/accessi-module/jwt/jwt.strategy.d.ts +1 -1
- package/dist/accessi-module/jwt/jwt.strategy.js +16 -7
- package/dist/accessi-module/jwt/jwt.strategy.js.map +1 -1
- package/dist/accessi-module/middleware/accessiRequirements.d.ts +23 -1
- package/dist/accessi-module/middleware/accessiRequirements.js +7 -0
- package/dist/accessi-module/middleware/accessiRequirements.js.map +1 -1
- package/dist/accessi-module/middleware/authenticateGen.d.ts +16 -1
- package/dist/accessi-module/middleware/authenticateGen.js +63 -25
- package/dist/accessi-module/middleware/authenticateGen.js.map +1 -1
- package/dist/accessi-module/security/AccessiHttpExceptionFilter.d.ts +12 -0
- package/dist/accessi-module/security/AccessiHttpExceptionFilter.js +74 -0
- package/dist/accessi-module/security/AccessiHttpExceptionFilter.js.map +1 -0
- package/dist/accessi-module/security/accessControl.d.ts +22 -2
- package/dist/accessi-module/security/accessControl.js +47 -8
- package/dist/accessi-module/security/accessControl.js.map +1 -1
- package/dist/accessi-module/security/accessiValidation.d.ts +9 -0
- package/dist/accessi-module/security/accessiValidation.js +41 -0
- package/dist/accessi-module/security/accessiValidation.js.map +1 -0
- package/dist/accessi-module/security/adminBootstrap.d.ts +8 -0
- package/dist/accessi-module/security/adminBootstrap.js +41 -0
- package/dist/accessi-module/security/adminBootstrap.js.map +1 -0
- package/dist/accessi-module/security/authenticatedToken.d.ts +16 -2
- package/dist/accessi-module/security/authenticatedToken.js +31 -4
- package/dist/accessi-module/security/authenticatedToken.js.map +1 -1
- package/dist/accessi-module/security/emailConfiguration.d.ts +20 -0
- package/dist/accessi-module/security/emailConfiguration.js +41 -0
- package/dist/accessi-module/security/emailConfiguration.js.map +1 -0
- package/dist/accessi-module/security/passwordResetToken.d.ts +13 -3
- package/dist/accessi-module/security/passwordResetToken.js +13 -5
- package/dist/accessi-module/security/passwordResetToken.js.map +1 -1
- package/dist/accessi-module/security/publicAuthRateLimit.d.ts +3 -3
- package/dist/accessi-module/security/publicAuthRateLimit.js +31 -8
- package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
- package/dist/accessi-module/security/serviceTokenGuard.d.ts +25 -0
- package/dist/accessi-module/security/serviceTokenGuard.js +85 -0
- package/dist/accessi-module/security/serviceTokenGuard.js.map +1 -0
- package/dist/accessi-module/security/serviceTokenRateLimit.d.ts +8 -0
- package/dist/accessi-module/security/serviceTokenRateLimit.js +49 -0
- package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -0
- package/dist/accessi-module/startupLog.d.ts +6 -0
- package/dist/accessi-module/startupLog.js +25 -0
- package/dist/accessi-module/startupLog.js.map +1 -0
- package/dist/allegati-module/AllegatiModule.d.ts +12 -1
- package/dist/allegati-module/AllegatiModule.js +11 -1
- package/dist/allegati-module/AllegatiModule.js.map +1 -1
- package/dist/allegati-module/Controllers/AllegatiController.d.ts +2 -1
- package/dist/allegati-module/Controllers/AllegatiController.js +23 -15
- package/dist/allegati-module/Controllers/AllegatiController.js.map +1 -1
- package/dist/allegati-module/Dtos/AllegatoDto.js.map +1 -1
- package/dist/allegati-module/Dtos/BaseResponse.js.map +1 -1
- package/dist/allegati-module/Dtos/UploadSingleFileRequest.js.map +1 -1
- package/dist/allegati-module/Dtos/index.js.map +1 -1
- package/dist/allegati-module/Dtos/responses/DownloadAllegatoResponseDto.js.map +1 -1
- package/dist/allegati-module/Dtos/responses/GetListResponse.js.map +1 -1
- package/dist/allegati-module/Dtos/responses/UploadAllegatoResponseDto.js.map +1 -1
- package/dist/allegati-module/Services/AllegatiService/AllegatiService.d.ts +10 -3
- package/dist/allegati-module/Services/AllegatiService/AllegatiService.js +150 -101
- package/dist/allegati-module/Services/AllegatiService/AllegatiService.js.map +1 -1
- package/dist/allegati-module/index.js.map +1 -1
- package/dist/allegati-module/security/allegatiAuthorizationGuard.d.ts +14 -0
- package/dist/allegati-module/security/allegatiAuthorizationGuard.js +70 -0
- package/dist/allegati-module/security/allegatiAuthorizationGuard.js.map +1 -0
- package/dist/autobind.d.ts +10 -3
- package/dist/autobind.js +24 -9
- package/dist/autobind.js.map +1 -1
- package/dist/emilsoftware-utilities-2.0.0-dev.41.tgz +0 -0
- package/dist/firebird-compat.d.ts +27 -6
- package/dist/firebird-compat.js +150 -135
- package/dist/firebird-compat.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/initEmilsoftwareModule.js +13 -3
- package/dist/initEmilsoftwareModule.js.map +1 -1
- package/dist/scripts/generateAccessiOpenApi.d.ts +1 -0
- package/dist/scripts/generateAccessiOpenApi.js +57 -0
- package/dist/scripts/generateAccessiOpenApi.js.map +1 -0
- package/dist/scripts/generateAccessiWiki.d.ts +1 -0
- package/dist/scripts/generateAccessiWiki.js +131 -0
- package/dist/scripts/generateAccessiWiki.js.map +1 -0
- package/dist/swagger/SwaggerConfig.d.ts +7 -1
- package/dist/swagger/SwaggerConfig.js +22 -8
- package/dist/swagger/SwaggerConfig.js.map +1 -1
- package/package.json +105 -83
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionalColumns.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/optionalColumns.ts"],"names":[],"mappings":";;;;;;;;;;;AAoBA,wDAEC;AAGD,0CAqBC;AAGD,wCAEC;AAlDD,mCAAgC;AAIhC;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,KAAM,CAAC;AACnC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;AAExD,SAAS,QAAQ,CAAC,OAAuB,EAAE,KAAa;;IACtD,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IACnC,OAAO,CAAC,MAAA,EAAE,CAAC,IAAI,mCAAI,EAAE,EAAE,MAAA,EAAE,CAAC,IAAI,mCAAI,EAAE,EAAE,MAAA,EAAE,CAAC,QAAQ,mCAAI,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1F,CAAC;AAED,yEAAyE;AACzE,SAAgB,sBAAsB;IACpC,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,uGAAuG;AACvG,SAAsB,eAAe,CAAC,OAAuB,EAAE,KAAa;;QAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YACrC,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,SAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,EAClD,iGAAiG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACrH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAA4B,EAAE,EAAE,WAAC,OAAA,MAAM,CAAC,MAAA,GAAG,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA,EAAA,CAAC,CAAC,CAAC;QAE1G,IAAI,WAAW,CAAC,IAAI,IAAI,wBAAwB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,mBAAmB,EAAE,CAAC,CAAC;QAExE,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAED,4FAA4F;AAC5F,SAAgB,cAAc,CAAC,OAAoB,EAAE,IAAY,EAAE,UAAkB,EAAE,WAAmB,EAAE,OAAO,GAAG,IAAI;IACxH,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,GAAG,OAAO,WAAW,EAAE,CAAC;AACtI,CAAC","sourcesContent":["import type { AccessiOptions } from '../AccessiModule';\nimport { Orm } from '../../Orm';\n\ntype ColumnCacheEntry = { columns: Set<string>; expiresAt: number };\n\n/**\n * I metadati delle colonne sono letti di rado ma usati a ogni operazione. Una cache a breve TTL\n * evita una query di introspezione per richiesta; il TTL limita la finestra di staleness se lo\n * schema viene esteso a runtime (le migrazioni girano comunque al bootstrap).\n */\nconst COLUMN_CACHE_TTL_MS = 60_000;\nconst COLUMN_CACHE_MAX_ENTRIES = 100;\nconst columnCache = new Map<string, ColumnCacheEntry>();\n\nfunction cacheKey(options: AccessiOptions, table: string): string {\n const db = options.databaseOptions;\n return [db.host ?? '', db.port ?? '', db.database ?? '', table.toUpperCase()].join('|');\n}\n\n/** Invalida la cache dei metadati (usata dopo migrazioni o nei test). */\nexport function clearTableColumnsCache(): void {\n columnCache.clear();\n}\n\n/** Metadata is read per operation so host-owned extensions can change without a stale global cache. */\nexport async function getTableColumns(options: AccessiOptions, table: string): Promise<Set<string>> {\n const key = cacheKey(options, table);\n const now = Date.now();\n const cached = columnCache.get(key);\n if (cached && cached.expiresAt > now) {\n return cached.columns;\n }\n\n const rows = await Orm.query(options.databaseOptions,\n 'SELECT TRIM(RDB$FIELD_NAME) AS COLUMN_NAME FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME = ?', [table], false);\n const columns = new Set(rows.map((row: Record<string, unknown>) => String(row.COLUMN_NAME ?? '').trim()));\n\n if (columnCache.size >= COLUMN_CACHE_MAX_ENTRIES) {\n const oldestKey = columnCache.keys().next().value;\n if (oldestKey !== undefined) {\n columnCache.delete(oldestKey);\n }\n }\n columnCache.set(key, { columns, expiresAt: now + COLUMN_CACHE_TTL_MS });\n\n return columns;\n}\n\n/** Arguments come exclusively from the library's fixed field mappings, never HTTP input. */\nexport function optionalColumn(columns: Set<string>, name: string, tableAlias: string, outputAlias: string, numeric = true): string {\n return `${columns.has(name) ? `${tableAlias}.${name}` : `CAST(NULL AS ${numeric ? 'INTEGER' : 'VARCHAR(255)'})`} AS ${outputAlias}`;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const AccessiDatabaseUpdater_1 = require("./AccessiDatabaseUpdater");
|
|
13
|
+
const AccessiCatalogMigrator_1 = require("./AccessiCatalogMigrator");
|
|
14
|
+
const accessiOptionsFromEnv_1 = require("./accessiOptionsFromEnv");
|
|
15
|
+
const Orm_1 = require("../../Orm");
|
|
16
|
+
function main() {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
var _a;
|
|
19
|
+
const options = (0, accessiOptionsFromEnv_1.createAccessiOptionsFromEnv)();
|
|
20
|
+
if (!((_a = options.catalogScripts) === null || _a === void 0 ? void 0 : _a.folder)) {
|
|
21
|
+
throw new Error("Variabile ambiente mancante: ACCESSI_CATALOG_FOLDER (cartella delle catalog migrations).");
|
|
22
|
+
}
|
|
23
|
+
const checkOnly = process.argv.includes('--check');
|
|
24
|
+
console.log(`[Accessi Catalog] Target: ${options.databaseOptions.host}:${options.databaseOptions.port} -> ${options.databaseOptions.database}`);
|
|
25
|
+
console.log(`[Accessi Catalog] Cartella: ${options.catalogScripts.folder}`);
|
|
26
|
+
// Prima lo schema si adegua, poi si eseguono gli script di catalogo.
|
|
27
|
+
if (!checkOnly) {
|
|
28
|
+
console.log('[Accessi Catalog] Riconciliazione schema...');
|
|
29
|
+
yield AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.run(options);
|
|
30
|
+
}
|
|
31
|
+
if (checkOnly) {
|
|
32
|
+
const pending = yield (0, AccessiCatalogMigrator_1.listPendingCatalogScripts)(options);
|
|
33
|
+
console.log(`[Accessi Catalog] Gia applicati: ${pending.applied.length}`);
|
|
34
|
+
console.log(`[Accessi Catalog] Da applicare: ${pending.pending.length}${pending.pending.length ? ` -> ${pending.pending.join(', ')}` : ''}`);
|
|
35
|
+
console.log(`[Accessi Catalog] Modificati (checksum diverso): ${pending.changed.length}${pending.changed.length ? ` -> ${pending.changed.join(', ')}` : ''}`);
|
|
36
|
+
console.log(`[Accessi Catalog] Non conformi (solo DML): ${pending.invalid.length}`);
|
|
37
|
+
for (const entry of pending.invalid) {
|
|
38
|
+
for (const violation of entry.violations)
|
|
39
|
+
console.error(`[Accessi Catalog] Non conforme: ${entry.script} -> ${violation}`);
|
|
40
|
+
}
|
|
41
|
+
if (pending.invalid.length)
|
|
42
|
+
process.exitCode = 1;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const report = yield (0, AccessiCatalogMigrator_1.applyCatalogScripts)(options);
|
|
46
|
+
console.log(`[Accessi Catalog] Scoperti: ${report.discovered} | Applicati: ${report.applied.length} | Saltati: ${report.skipped.length} | Non conformi: ${report.invalid.length} | Falliti: ${report.failed.length}`);
|
|
47
|
+
if (report.applied.length)
|
|
48
|
+
console.log(`[Accessi Catalog] Applicati: ${report.applied.join(', ')}`);
|
|
49
|
+
for (const entry of report.invalid) {
|
|
50
|
+
for (const violation of entry.violations)
|
|
51
|
+
console.error(`[Accessi Catalog] Non conforme: ${entry.script} -> ${violation}`);
|
|
52
|
+
}
|
|
53
|
+
if (report.failed.length) {
|
|
54
|
+
for (const failure of report.failed)
|
|
55
|
+
console.error(`[Accessi Catalog] Fallito: ${failure.script} -> ${failure.error}`);
|
|
56
|
+
}
|
|
57
|
+
if (report.failed.length || report.invalid.length)
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
main()
|
|
62
|
+
.then(() => Orm_1.Orm.closePools())
|
|
63
|
+
.then(() => { var _a; return process.exit((_a = process.exitCode) !== null && _a !== void 0 ? _a : 0); })
|
|
64
|
+
.catch((error) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
console.error("[Accessi Catalog] Errore durante l'esecuzione:", error);
|
|
66
|
+
yield Orm_1.Orm.closePools().catch(() => undefined);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}));
|
|
69
|
+
//# sourceMappingURL=runAccessiCatalogMigrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runAccessiCatalogMigrations.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/runAccessiCatalogMigrations.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccessiDatabaseUpdater } from \"./AccessiDatabaseUpdater\";\nimport { applyCatalogScripts, listPendingCatalogScripts } from \"./AccessiCatalogMigrator\";\nimport { createAccessiOptionsFromEnv } from \"./accessiOptionsFromEnv\";\nimport { Orm } from \"../../Orm\";\n\nasync function main(): Promise<void> {\n const options = createAccessiOptionsFromEnv();\n if (!options.catalogScripts?.folder) {\n throw new Error(\"Variabile ambiente mancante: ACCESSI_CATALOG_FOLDER (cartella delle catalog migrations).\");\n }\n\n const checkOnly = process.argv.includes('--check');\n console.log(`[Accessi Catalog] Target: ${options.databaseOptions.host}:${options.databaseOptions.port} -> ${options.databaseOptions.database}`);\n console.log(`[Accessi Catalog] Cartella: ${options.catalogScripts.folder}`);\n\n // Prima lo schema si adegua, poi si eseguono gli script di catalogo.\n if (!checkOnly) {\n console.log('[Accessi Catalog] Riconciliazione schema...');\n await AccessiDatabaseUpdater.run(options);\n }\n\n if (checkOnly) {\n const pending = await listPendingCatalogScripts(options);\n console.log(`[Accessi Catalog] Gia applicati: ${pending.applied.length}`);\n console.log(`[Accessi Catalog] Da applicare: ${pending.pending.length}${pending.pending.length ? ` -> ${pending.pending.join(', ')}` : ''}`);\n console.log(`[Accessi Catalog] Modificati (checksum diverso): ${pending.changed.length}${pending.changed.length ? ` -> ${pending.changed.join(', ')}` : ''}`);\n console.log(`[Accessi Catalog] Non conformi (solo DML): ${pending.invalid.length}`);\n for (const entry of pending.invalid) {\n for (const violation of entry.violations) console.error(`[Accessi Catalog] Non conforme: ${entry.script} -> ${violation}`);\n }\n if (pending.invalid.length) process.exitCode = 1;\n return;\n }\n\n const report = await applyCatalogScripts(options);\n console.log(`[Accessi Catalog] Scoperti: ${report.discovered} | Applicati: ${report.applied.length} | Saltati: ${report.skipped.length} | Non conformi: ${report.invalid.length} | Falliti: ${report.failed.length}`);\n if (report.applied.length) console.log(`[Accessi Catalog] Applicati: ${report.applied.join(', ')}`);\n for (const entry of report.invalid) {\n for (const violation of entry.violations) console.error(`[Accessi Catalog] Non conforme: ${entry.script} -> ${violation}`);\n }\n if (report.failed.length) {\n for (const failure of report.failed) console.error(`[Accessi Catalog] Fallito: ${failure.script} -> ${failure.error}`);\n }\n if (report.failed.length || report.invalid.length) process.exitCode = 1;\n}\n\nmain()\n .then(() => Orm.closePools())\n .then(() => process.exit(process.exitCode ?? 0))\n .catch(async (error) => {\n console.error(\"[Accessi Catalog] Errore durante l'esecuzione:\", error);\n await Orm.closePools().catch(() => undefined);\n process.exit(1);\n });\n"]}
|
|
@@ -10,66 +10,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const AccessiDatabaseUpdater_1 = require("./AccessiDatabaseUpdater");
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
var _a;
|
|
16
|
-
const value = (_a = process.env[name]) !== null && _a !== void 0 ? _a : fallback;
|
|
17
|
-
if (!value) {
|
|
18
|
-
throw new Error(`Variabile ambiente mancante: ${name}`);
|
|
19
|
-
}
|
|
20
|
-
return value;
|
|
21
|
-
}
|
|
22
|
-
function getOptionalBoolean(name, fallback) {
|
|
23
|
-
const value = process.env[name];
|
|
24
|
-
if (value === undefined) {
|
|
25
|
-
return fallback;
|
|
26
|
-
}
|
|
27
|
-
return value.toLowerCase() === "true";
|
|
28
|
-
}
|
|
29
|
-
function createAccessiOptionsFromEnv() {
|
|
30
|
-
return {
|
|
31
|
-
databaseOptions: Utilities_1.DatabaseUtilities.createOption(getEnv("ACCESSI_DB_HOST"), Number(getEnv("ACCESSI_DB_PORT", "3050")), getEnv("ACCESSI_DB_DATABASE"), getEnv("ACCESSI_DB_USER", "SYSDBA"), getEnv("ACCESSI_DB_PASSWORD", "masterkey")),
|
|
32
|
-
confirmationEmailUrl: getEnv("ACCESSI_CONFIRMATION_EMAIL_URL", "http://localhost"),
|
|
33
|
-
confirmationEmailReturnUrl: getEnv("ACCESSI_CONFIRMATION_RETURN_EMAIL_URL", "http://localhost"),
|
|
34
|
-
confirmationEmailPrefix: process.env.ACCESSI_CONFIRMATION_EMAIL_PREFIX,
|
|
35
|
-
customResetPage: process.env.ACCESSI_CUSTOM_RESET_PAGE,
|
|
36
|
-
encryptionKey: getEnv("ACCESSI_ENCRYPTION_KEY", "1234567890ABCDEF"),
|
|
37
|
-
mockDemoUser: getOptionalBoolean("ACCESSI_MOCK_DEMO_USER", false),
|
|
38
|
-
passwordExpiration: getOptionalBoolean("ACCESSI_PASSWORD_EXPIRATION", false),
|
|
39
|
-
autoUpdateDatabase: true,
|
|
40
|
-
jwtOptions: {
|
|
41
|
-
secret: getEnv("ACCESSI_JWT_SECRET", "local-accessi-update"),
|
|
42
|
-
expiresIn: getEnv("ACCESSI_JWT_EXPIRES", "24h"),
|
|
43
|
-
},
|
|
44
|
-
emailOptions: {
|
|
45
|
-
host: getEnv("ACCESSI_EMAIL_HOST", "localhost"),
|
|
46
|
-
port: Number(getEnv("ACCESSI_EMAIL_PORT", "25")),
|
|
47
|
-
secure: getOptionalBoolean("ACCESSI_EMAIL_SECURE", false),
|
|
48
|
-
requireTLS: getOptionalBoolean("ACCESSI_EMAIL_REQUIRE_TLS", false),
|
|
49
|
-
tls: {
|
|
50
|
-
rejectUnauthorized: getOptionalBoolean("ACCESSI_EMAIL_TLS_REJECT_UNAUTHORIZED", false),
|
|
51
|
-
},
|
|
52
|
-
from: getEnv("ACCESSI_EMAIL_FROM", "noreply@example.local"),
|
|
53
|
-
auth: {
|
|
54
|
-
user: getEnv("ACCESSI_EMAIL_USER", "local-user"),
|
|
55
|
-
pass: getEnv("ACCESSI_EMAIL_PASSWORD", "local-password"),
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
extensionFieldsOptions: [],
|
|
59
|
-
};
|
|
60
|
-
}
|
|
13
|
+
const accessiOptionsFromEnv_1 = require("./accessiOptionsFromEnv");
|
|
14
|
+
const Orm_1 = require("../../Orm");
|
|
61
15
|
function main() {
|
|
62
16
|
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
const options = createAccessiOptionsFromEnv();
|
|
64
|
-
|
|
17
|
+
const options = (0, accessiOptionsFromEnv_1.createAccessiOptionsFromEnv)();
|
|
18
|
+
const checkOnly = process.argv.includes('--check');
|
|
19
|
+
console.log(checkOnly ? '[Accessi DB Update] Verifica schema in sola lettura...' : '[Accessi DB Update] Avvio aggiornamento database...');
|
|
65
20
|
console.log(`[Accessi DB Update] Target: ${options.databaseOptions.host}:${options.databaseOptions.port} -> ${options.databaseOptions.database}`);
|
|
66
|
-
|
|
21
|
+
if (checkOnly)
|
|
22
|
+
yield AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.assertCompatible(options);
|
|
23
|
+
else
|
|
24
|
+
yield AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.run(options);
|
|
67
25
|
const currentVersion = yield AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.getCurrentVersion(options);
|
|
68
26
|
console.log(`[Accessi DB Update] Completato. Versione corrente: ${currentVersion !== null && currentVersion !== void 0 ? currentVersion : "N/D"} | Ultima disponibile: ${AccessiDatabaseUpdater_1.AccessiDatabaseUpdater.getLatestVersion()}`);
|
|
69
27
|
});
|
|
70
28
|
}
|
|
71
|
-
main()
|
|
29
|
+
main()
|
|
30
|
+
.then(() => Orm_1.Orm.closePools())
|
|
31
|
+
.then(() => process.exit(0))
|
|
32
|
+
.catch((error) => __awaiter(void 0, void 0, void 0, function* () {
|
|
72
33
|
console.error("[Accessi DB Update] Errore durante l'aggiornamento:", error);
|
|
34
|
+
yield Orm_1.Orm.closePools().catch(() => undefined);
|
|
73
35
|
process.exit(1);
|
|
74
|
-
});
|
|
36
|
+
}));
|
|
75
37
|
//# sourceMappingURL=runAccessiDbUpdate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runAccessiDbUpdate.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/runAccessiDbUpdate.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runAccessiDbUpdate.js","sourceRoot":"","sources":["../../../src/accessi-module/database-updates/runAccessiDbUpdate.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qEAAkE;AAClE,mEAAsE;AACtE,mCAAgC;AAEhC,SAAe,IAAI;;QACjB,MAAM,OAAO,GAAG,IAAA,mDAA2B,GAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC;QAC1I,OAAO,CAAC,GAAG,CACT,+BAA+B,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,CACrI,CAAC;QAEF,IAAI,SAAS;YAAE,MAAM,+CAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;;YACjE,MAAM,+CAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,cAAc,GAAG,MAAM,+CAAsB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CACT,sDAAsD,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,KAAK,0BAA0B,+CAAsB,CAAC,gBAAgB,EAAE,EAAE,CACnJ,CAAC;IACJ,CAAC;CAAA;AAED,IAAI,EAAE;KACH,IAAI,CAAC,GAAG,EAAE,CAAC,SAAG,CAAC,UAAU,EAAE,CAAC;KAC5B,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC3B,KAAK,CAAC,CAAO,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,SAAG,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAA,CAAC,CAAC","sourcesContent":["import { AccessiDatabaseUpdater } from \"./AccessiDatabaseUpdater\";\nimport { createAccessiOptionsFromEnv } from \"./accessiOptionsFromEnv\";\nimport { Orm } from \"../../Orm\";\n\nasync function main(): Promise<void> {\n const options = createAccessiOptionsFromEnv();\n\n const checkOnly = process.argv.includes('--check');\n console.log(checkOnly ? '[Accessi DB Update] Verifica schema in sola lettura...' : '[Accessi DB Update] Avvio aggiornamento database...');\n console.log(\n `[Accessi DB Update] Target: ${options.databaseOptions.host}:${options.databaseOptions.port} -> ${options.databaseOptions.database}`\n );\n\n if (checkOnly) await AccessiDatabaseUpdater.assertCompatible(options);\n else await AccessiDatabaseUpdater.run(options);\n\n const currentVersion = await AccessiDatabaseUpdater.getCurrentVersion(options);\n console.log(\n `[Accessi DB Update] Completato. Versione corrente: ${currentVersion ?? \"N/D\"} | Ultima disponibile: ${AccessiDatabaseUpdater.getLatestVersion()}`\n );\n}\n\nmain()\n .then(() => Orm.closePools())\n .then(() => process.exit(0))\n .catch(async (error) => {\n console.error(\"[Accessi DB Update] Errore durante l'aggiornamento:\", error);\n await Orm.closePools().catch(() => undefined);\n process.exit(1);\n });\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Request, Response } from 'express';
|
|
2
|
+
import { CreateFederatedIdentityRequest, CreateFederatedProviderRequest, CreateFederatedUserRequest, SetPasswordLoginPolicyRequest, UpdateFederatedIdentityRequest, UpdateFederatedProviderRequest } from '../Dtos/FederatedIdentityDtos';
|
|
3
|
+
import { FederatedAuthService } from './FederatedAuthService';
|
|
4
|
+
/**
|
|
5
|
+
* Master-only administration API. Authentication itself is intentionally not
|
|
6
|
+
* exposed over HTTP: the hosting backend validates its SSO and calls
|
|
7
|
+
* FederatedAuthService.authenticate({ provider, subject }) directly.
|
|
8
|
+
*/
|
|
9
|
+
export declare class FederatedAuthController {
|
|
10
|
+
private readonly federatedAuthService;
|
|
11
|
+
constructor(federatedAuthService: FederatedAuthService);
|
|
12
|
+
getProviders(request: Request, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
13
|
+
createProvider(request: Request, body: CreateFederatedProviderRequest, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
14
|
+
updateProvider(request: Request, provider: string, body: UpdateFederatedProviderRequest, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
15
|
+
deleteProvider(request: Request, provider: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
16
|
+
getIdentities(request: Request, codiceUtente: number, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
17
|
+
linkIdentity(request: Request, codiceUtente: number, body: CreateFederatedIdentityRequest, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
18
|
+
createUser(request: Request, body: CreateFederatedUserRequest, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
19
|
+
setPasswordPolicy(request: Request, codiceUtente: number, body: SetPasswordLoginPolicyRequest, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
20
|
+
disableIdentity(request: Request, identityKey: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
21
|
+
deleteIdentity(request: Request, codiceUtente: number, identityKey: string, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
22
|
+
updateIdentity(request: Request, identityKey: string, body: UpdateFederatedIdentityRequest, res: Response): Promise<Response<any, Record<string, any>>>;
|
|
23
|
+
private sendError;
|
|
24
|
+
}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var FederatedAuthController_1;
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.FederatedAuthController = void 0;
|
|
26
|
+
const common_1 = require("@nestjs/common");
|
|
27
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
28
|
+
const Utilities_1 = require("../../Utilities");
|
|
29
|
+
const BaseResponse_1 = require("../Dtos/BaseResponse");
|
|
30
|
+
const FederatedIdentityDtos_1 = require("../Dtos/FederatedIdentityDtos");
|
|
31
|
+
const jwt_strategy_1 = require("../jwt/jwt.strategy");
|
|
32
|
+
const accessControl_1 = require("../security/accessControl");
|
|
33
|
+
const FederatedAuthService_1 = require("./FederatedAuthService");
|
|
34
|
+
/**
|
|
35
|
+
* Master-only administration API. Authentication itself is intentionally not
|
|
36
|
+
* exposed over HTTP: the hosting backend validates its SSO and calls
|
|
37
|
+
* FederatedAuthService.authenticate({ provider, subject }) directly.
|
|
38
|
+
*/
|
|
39
|
+
let FederatedAuthController = FederatedAuthController_1 = class FederatedAuthController {
|
|
40
|
+
constructor(federatedAuthService) {
|
|
41
|
+
this.federatedAuthService = federatedAuthService;
|
|
42
|
+
}
|
|
43
|
+
getProviders(request, res) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
try {
|
|
46
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
47
|
+
return Utilities_1.RestUtilities.sendBaseResponse(res, yield this.federatedAuthService.getProviders());
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return this.sendError(res, error);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
createProvider(request, body, res) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
try {
|
|
57
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
58
|
+
return Utilities_1.RestUtilities.sendBaseResponse(res, yield this.federatedAuthService.createProvider(body), common_1.HttpStatus.CREATED);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return this.sendError(res, error);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
updateProvider(request, provider, body, res) {
|
|
66
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
try {
|
|
68
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
69
|
+
return Utilities_1.RestUtilities.sendBaseResponse(res, yield this.federatedAuthService.updateProvider(provider, body));
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return this.sendError(res, error);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
deleteProvider(request, provider, res) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
try {
|
|
79
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
80
|
+
yield this.federatedAuthService.deleteProvider(provider);
|
|
81
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, `Provider SSO ${provider} eliminato.`);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return this.sendError(res, error);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
getIdentities(request, codiceUtente, res) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
try {
|
|
91
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
92
|
+
return Utilities_1.RestUtilities.sendBaseResponse(res, yield this.federatedAuthService.getUserIdentities(codiceUtente));
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return this.sendError(res, error);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
linkIdentity(request, codiceUtente, body, res) {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
try {
|
|
102
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
103
|
+
const identity = yield this.federatedAuthService.linkIdentity(codiceUtente, body, body.note);
|
|
104
|
+
return Utilities_1.RestUtilities.sendBaseResponse(res, identity, common_1.HttpStatus.CREATED);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
return this.sendError(res, error);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
createUser(request, body, res) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
try {
|
|
114
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
115
|
+
const identity = yield this.federatedAuthService.createManagedFederatedUser(body.user, body, body.passwordLoginEnabled === true, body.note);
|
|
116
|
+
return Utilities_1.RestUtilities.sendBaseResponse(res, identity, common_1.HttpStatus.CREATED);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
return this.sendError(res, error);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
setPasswordPolicy(request, codiceUtente, body, res) {
|
|
124
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
try {
|
|
126
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
127
|
+
yield this.federatedAuthService.setPasswordLoginEnabled(codiceUtente, body.passwordLoginEnabled);
|
|
128
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, 'Policy di autenticazione aggiornata.');
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return this.sendError(res, error);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
disableIdentity(request, identityKey, res) {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
try {
|
|
138
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
139
|
+
yield this.federatedAuthService.disableIdentity(identityKey);
|
|
140
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, 'Identita SSO disabilitata.');
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
return this.sendError(res, error);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
deleteIdentity(request, codiceUtente, identityKey, res) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
try {
|
|
150
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
151
|
+
yield this.federatedAuthService.deleteIdentity(codiceUtente, identityKey);
|
|
152
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, 'Collegamento SSO eliminato definitivamente.');
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
return this.sendError(res, error);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
updateIdentity(request, identityKey, body, res) {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
try {
|
|
162
|
+
(0, accessControl_1.ensureAdmin)((0, accessControl_1.getAuthenticatedAccessiUser)(request));
|
|
163
|
+
yield this.federatedAuthService.updateIdentity(identityKey, body);
|
|
164
|
+
return Utilities_1.RestUtilities.sendOKMessage(res, 'Collegamento SSO aggiornato.');
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
return this.sendError(res, error);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
sendError(res, error) {
|
|
172
|
+
const status = error instanceof common_1.HttpException ? error.getStatus() : common_1.HttpStatus.INTERNAL_SERVER_ERROR;
|
|
173
|
+
return Utilities_1.RestUtilities.sendErrorMessage(res, error, FederatedAuthController_1.name, status);
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
exports.FederatedAuthController = FederatedAuthController;
|
|
177
|
+
__decorate([
|
|
178
|
+
(0, swagger_1.ApiOperation)({ summary: 'Elenca i provider SSO censiti', operationId: 'getFederatedProviders', description: 'Riservato a superutente. Restituisce solo catalogo e stato Accessi; issuer, secret e configurazioni SSO restano nel backend.' }),
|
|
179
|
+
(0, swagger_1.ApiOkResponse)({ type: FederatedIdentityDtos_1.FederatedProviderListResponse }),
|
|
180
|
+
(0, common_1.Get)('providers'),
|
|
181
|
+
__param(0, (0, common_1.Req)()),
|
|
182
|
+
__param(1, (0, common_1.Res)()),
|
|
183
|
+
__metadata("design:type", Function),
|
|
184
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
185
|
+
__metadata("design:returntype", Promise)
|
|
186
|
+
], FederatedAuthController.prototype, "getProviders", null);
|
|
187
|
+
__decorate([
|
|
188
|
+
(0, swagger_1.ApiOperation)({ summary: 'Censisce un provider SSO', operationId: 'createFederatedProvider', description: 'Riservato a superutente. La chiave provider deve corrispondere alla configurazione stabile del backend; non salvare segreti, issuer o token.' }),
|
|
189
|
+
(0, swagger_1.ApiBody)({ type: FederatedIdentityDtos_1.CreateFederatedProviderRequest }),
|
|
190
|
+
(0, swagger_1.ApiCreatedResponse)({ type: FederatedIdentityDtos_1.FederatedProviderResponse }),
|
|
191
|
+
(0, common_1.Post)('providers'),
|
|
192
|
+
__param(0, (0, common_1.Req)()),
|
|
193
|
+
__param(1, (0, common_1.Body)()),
|
|
194
|
+
__param(2, (0, common_1.Res)()),
|
|
195
|
+
__metadata("design:type", Function),
|
|
196
|
+
__metadata("design:paramtypes", [Object, FederatedIdentityDtos_1.CreateFederatedProviderRequest, Object]),
|
|
197
|
+
__metadata("design:returntype", Promise)
|
|
198
|
+
], FederatedAuthController.prototype, "createProvider", null);
|
|
199
|
+
__decorate([
|
|
200
|
+
(0, swagger_1.ApiOperation)({ summary: 'Aggiorna o disabilita un provider SSO', operationId: 'updateFederatedProvider', description: 'Riservato a superutente. La chiave provider è immutabile: disabilitarla blocca nuovi login SSO ma conserva i collegamenti storici.' }),
|
|
201
|
+
(0, swagger_1.ApiParam)({ name: 'provider', example: 'azure-ad-acme-produzione', description: 'Chiave stabile del provider censito.' }),
|
|
202
|
+
(0, swagger_1.ApiBody)({ type: FederatedIdentityDtos_1.UpdateFederatedProviderRequest }),
|
|
203
|
+
(0, swagger_1.ApiOkResponse)({ type: FederatedIdentityDtos_1.FederatedProviderResponse }),
|
|
204
|
+
(0, common_1.Patch)('providers/:provider'),
|
|
205
|
+
__param(0, (0, common_1.Req)()),
|
|
206
|
+
__param(1, (0, common_1.Param)('provider')),
|
|
207
|
+
__param(2, (0, common_1.Body)()),
|
|
208
|
+
__param(3, (0, common_1.Res)()),
|
|
209
|
+
__metadata("design:type", Function),
|
|
210
|
+
__metadata("design:paramtypes", [Object, String, FederatedIdentityDtos_1.UpdateFederatedProviderRequest, Object]),
|
|
211
|
+
__metadata("design:returntype", Promise)
|
|
212
|
+
], FederatedAuthController.prototype, "updateProvider", null);
|
|
213
|
+
__decorate([
|
|
214
|
+
(0, swagger_1.ApiOperation)({ summary: 'Elimina un provider SSO', operationId: 'deleteFederatedProvider', description: 'Riservato a superutente. Consentito solo se nessuna identita e collegata al provider; in alternativa disabilitalo.' }),
|
|
215
|
+
(0, swagger_1.ApiParam)({ name: 'provider', example: 'azure-ad-acme-produzione', description: 'Chiave stabile del provider censito.' }),
|
|
216
|
+
(0, swagger_1.ApiOkResponse)({ type: BaseResponse_1.ActionResponse }),
|
|
217
|
+
(0, swagger_1.ApiResponse)({ status: 404, type: BaseResponse_1.ErrorResponse, description: 'Provider non registrato.' }),
|
|
218
|
+
(0, swagger_1.ApiResponse)({ status: 409, type: BaseResponse_1.ErrorResponse, description: 'Provider ancora utilizzato da identita collegate.' }),
|
|
219
|
+
(0, common_1.Delete)('providers/:provider'),
|
|
220
|
+
__param(0, (0, common_1.Req)()),
|
|
221
|
+
__param(1, (0, common_1.Param)('provider')),
|
|
222
|
+
__param(2, (0, common_1.Res)()),
|
|
223
|
+
__metadata("design:type", Function),
|
|
224
|
+
__metadata("design:paramtypes", [Object, String, Object]),
|
|
225
|
+
__metadata("design:returntype", Promise)
|
|
226
|
+
], FederatedAuthController.prototype, "deleteProvider", null);
|
|
227
|
+
__decorate([
|
|
228
|
+
(0, swagger_1.ApiOperation)({ summary: 'Elenca le identita SSO di un utente', operationId: 'getFederatedIdentities', description: 'Riservato a superutente. Non restituisce token esterni o claim del provider.' }),
|
|
229
|
+
(0, swagger_1.ApiParam)({ name: 'codiceUtente', example: 123 }),
|
|
230
|
+
(0, swagger_1.ApiOkResponse)({ type: FederatedIdentityDtos_1.FederatedIdentityListResponse }),
|
|
231
|
+
(0, swagger_1.ApiResponse)({ status: 403, type: BaseResponse_1.ErrorResponse }),
|
|
232
|
+
(0, common_1.Get)('users/:codiceUtente/identities'),
|
|
233
|
+
__param(0, (0, common_1.Req)()),
|
|
234
|
+
__param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
|
|
235
|
+
__param(2, (0, common_1.Res)()),
|
|
236
|
+
__metadata("design:type", Function),
|
|
237
|
+
__metadata("design:paramtypes", [Object, Number, Object]),
|
|
238
|
+
__metadata("design:returntype", Promise)
|
|
239
|
+
], FederatedAuthController.prototype, "getIdentities", null);
|
|
240
|
+
__decorate([
|
|
241
|
+
(0, swagger_1.ApiOperation)({ summary: 'Associa un SSO gia verificato a un utente esistente', operationId: 'linkFederatedIdentity', description: 'Il master deve fornire un provider e subject ottenuti da una verifica SSO lato backend; questo endpoint non verifica token esterni.' }),
|
|
242
|
+
(0, swagger_1.ApiParam)({ name: 'codiceUtente', example: 123 }),
|
|
243
|
+
(0, swagger_1.ApiBody)({ type: FederatedIdentityDtos_1.CreateFederatedIdentityRequest }),
|
|
244
|
+
(0, swagger_1.ApiCreatedResponse)({ type: FederatedIdentityDtos_1.FederatedIdentityResponse }),
|
|
245
|
+
(0, common_1.Post)('users/:codiceUtente/identities'),
|
|
246
|
+
__param(0, (0, common_1.Req)()),
|
|
247
|
+
__param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
|
|
248
|
+
__param(2, (0, common_1.Body)()),
|
|
249
|
+
__param(3, (0, common_1.Res)()),
|
|
250
|
+
__metadata("design:type", Function),
|
|
251
|
+
__metadata("design:paramtypes", [Object, Number, FederatedIdentityDtos_1.CreateFederatedIdentityRequest, Object]),
|
|
252
|
+
__metadata("design:returntype", Promise)
|
|
253
|
+
], FederatedAuthController.prototype, "linkIdentity", null);
|
|
254
|
+
__decorate([
|
|
255
|
+
(0, swagger_1.ApiOperation)({ summary: 'Crea un utente gestito e SSO-only', operationId: 'createFederatedUser', description: 'Riservato a superutente. L utente nasce confermato, con identita collegata e senza password salvo opt-in esplicito.' }),
|
|
256
|
+
(0, swagger_1.ApiBody)({ type: FederatedIdentityDtos_1.CreateFederatedUserRequest }),
|
|
257
|
+
(0, swagger_1.ApiCreatedResponse)({ type: FederatedIdentityDtos_1.FederatedIdentityResponse }),
|
|
258
|
+
(0, swagger_1.ApiResponse)({ status: 400, type: BaseResponse_1.ErrorResponse, description: 'Provider o subject non validi.' }),
|
|
259
|
+
(0, swagger_1.ApiResponse)({ status: 404, type: BaseResponse_1.ErrorResponse, description: 'Provider SSO non censito.' }),
|
|
260
|
+
(0, swagger_1.ApiResponse)({ status: 409, type: BaseResponse_1.ErrorResponse, description: 'Email o identità SSO già associate a un utente.' }),
|
|
261
|
+
(0, swagger_1.ApiResponse)({ status: 503, type: BaseResponse_1.ErrorResponse, description: 'Schema Accessi non aggiornato.' }),
|
|
262
|
+
(0, swagger_1.ApiResponse)({ status: 500, type: BaseResponse_1.ErrorResponse, description: 'Errore inatteso durante il provisioning; la risposta contiene FEDERATED_USER_PROVISIONING_FAILED.' }),
|
|
263
|
+
(0, common_1.Post)('users'),
|
|
264
|
+
__param(0, (0, common_1.Req)()),
|
|
265
|
+
__param(1, (0, common_1.Body)()),
|
|
266
|
+
__param(2, (0, common_1.Res)()),
|
|
267
|
+
__metadata("design:type", Function),
|
|
268
|
+
__metadata("design:paramtypes", [Object, FederatedIdentityDtos_1.CreateFederatedUserRequest, Object]),
|
|
269
|
+
__metadata("design:returntype", Promise)
|
|
270
|
+
], FederatedAuthController.prototype, "createUser", null);
|
|
271
|
+
__decorate([
|
|
272
|
+
(0, swagger_1.ApiOperation)({ summary: 'Abilita o disabilita il login con password', operationId: 'setPasswordLoginPolicy', description: 'Con false il login locale restituisce PASSWORD_LOGIN_DISABLED; le identita SSO attive restano utilizzabili.' }),
|
|
273
|
+
(0, swagger_1.ApiParam)({ name: 'codiceUtente', example: 123 }),
|
|
274
|
+
(0, swagger_1.ApiBody)({ type: FederatedIdentityDtos_1.SetPasswordLoginPolicyRequest }),
|
|
275
|
+
(0, swagger_1.ApiOkResponse)({ type: BaseResponse_1.ActionResponse }),
|
|
276
|
+
(0, common_1.Patch)('users/:codiceUtente/password-login'),
|
|
277
|
+
__param(0, (0, common_1.Req)()),
|
|
278
|
+
__param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
|
|
279
|
+
__param(2, (0, common_1.Body)()),
|
|
280
|
+
__param(3, (0, common_1.Res)()),
|
|
281
|
+
__metadata("design:type", Function),
|
|
282
|
+
__metadata("design:paramtypes", [Object, Number, FederatedIdentityDtos_1.SetPasswordLoginPolicyRequest, Object]),
|
|
283
|
+
__metadata("design:returntype", Promise)
|
|
284
|
+
], FederatedAuthController.prototype, "setPasswordPolicy", null);
|
|
285
|
+
__decorate([
|
|
286
|
+
(0, swagger_1.ApiOperation)({ summary: 'Disabilita un identita SSO', operationId: 'disableFederatedIdentity', description: 'Soft delete: l associazione resta tracciata ma non puo piu autenticare.' }),
|
|
287
|
+
(0, swagger_1.ApiParam)({ name: 'identityKey', description: 'SHA-256 restituito dagli endpoint di elenco o creazione.' }),
|
|
288
|
+
(0, swagger_1.ApiOkResponse)({ type: BaseResponse_1.ActionResponse }),
|
|
289
|
+
(0, common_1.Delete)('identities/:identityKey'),
|
|
290
|
+
__param(0, (0, common_1.Req)()),
|
|
291
|
+
__param(1, (0, common_1.Param)('identityKey')),
|
|
292
|
+
__param(2, (0, common_1.Res)()),
|
|
293
|
+
__metadata("design:type", Function),
|
|
294
|
+
__metadata("design:paramtypes", [Object, String, Object]),
|
|
295
|
+
__metadata("design:returntype", Promise)
|
|
296
|
+
], FederatedAuthController.prototype, "disableIdentity", null);
|
|
297
|
+
__decorate([
|
|
298
|
+
(0, swagger_1.ApiOperation)({ summary: 'Elimina definitivamente un collegamento SSO', operationId: 'deleteFederatedIdentityPermanently', description: 'Riservato a superutente. Rimuove il collegamento provider e subject dall’utente, senza eliminare l’utente Accessi.' }),
|
|
299
|
+
(0, swagger_1.ApiParam)({ name: 'codiceUtente', example: 123 }),
|
|
300
|
+
(0, swagger_1.ApiParam)({ name: 'identityKey', description: 'SHA-256 del collegamento da eliminare.' }),
|
|
301
|
+
(0, swagger_1.ApiOkResponse)({ type: BaseResponse_1.ActionResponse }),
|
|
302
|
+
(0, swagger_1.ApiResponse)({ status: 404, type: BaseResponse_1.ErrorResponse, description: 'Collegamento assente o non appartenente all’utente.' }),
|
|
303
|
+
(0, common_1.Delete)('users/:codiceUtente/identities/:identityKey'),
|
|
304
|
+
__param(0, (0, common_1.Req)()),
|
|
305
|
+
__param(1, (0, common_1.Param)('codiceUtente', common_1.ParseIntPipe)),
|
|
306
|
+
__param(2, (0, common_1.Param)('identityKey')),
|
|
307
|
+
__param(3, (0, common_1.Res)()),
|
|
308
|
+
__metadata("design:type", Function),
|
|
309
|
+
__metadata("design:paramtypes", [Object, Number, String, Object]),
|
|
310
|
+
__metadata("design:returntype", Promise)
|
|
311
|
+
], FederatedAuthController.prototype, "deleteIdentity", null);
|
|
312
|
+
__decorate([
|
|
313
|
+
(0, swagger_1.ApiOperation)({ summary: 'Aggiorna un collegamento SSO', operationId: 'updateFederatedIdentity', description: 'Consente di modificare nota e stato attivo del collegamento. identityKey e una chiave tecnica, non un token SSO.' }),
|
|
314
|
+
(0, swagger_1.ApiParam)({ name: 'identityKey', description: 'SHA-256 restituito dagli endpoint di elenco o creazione.' }),
|
|
315
|
+
(0, swagger_1.ApiBody)({ type: FederatedIdentityDtos_1.UpdateFederatedIdentityRequest }),
|
|
316
|
+
(0, swagger_1.ApiOkResponse)({ type: BaseResponse_1.ActionResponse }),
|
|
317
|
+
(0, common_1.Patch)('identities/:identityKey'),
|
|
318
|
+
__param(0, (0, common_1.Req)()),
|
|
319
|
+
__param(1, (0, common_1.Param)('identityKey')),
|
|
320
|
+
__param(2, (0, common_1.Body)()),
|
|
321
|
+
__param(3, (0, common_1.Res)()),
|
|
322
|
+
__metadata("design:type", Function),
|
|
323
|
+
__metadata("design:paramtypes", [Object, String, FederatedIdentityDtos_1.UpdateFederatedIdentityRequest, Object]),
|
|
324
|
+
__metadata("design:returntype", Promise)
|
|
325
|
+
], FederatedAuthController.prototype, "updateIdentity", null);
|
|
326
|
+
exports.FederatedAuthController = FederatedAuthController = FederatedAuthController_1 = __decorate([
|
|
327
|
+
(0, swagger_1.ApiTags)('Federated authentication'),
|
|
328
|
+
(0, swagger_1.ApiBearerAuth)(),
|
|
329
|
+
(0, common_1.UseGuards)(jwt_strategy_1.JwtSimpleGuard),
|
|
330
|
+
(0, common_1.Controller)('accessi/federated-auth'),
|
|
331
|
+
__metadata("design:paramtypes", [FederatedAuthService_1.FederatedAuthService])
|
|
332
|
+
], FederatedAuthController);
|
|
333
|
+
//# sourceMappingURL=FederatedAuthController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FederatedAuthController.js","sourceRoot":"","sources":["../../../src/accessi-module/federated-auth/FederatedAuthController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Delete, Get, HttpException, HttpStatus, Param, ParseIntPipe, Patch, Post, Req, Res, UseGuards } from '@nestjs/common';\nimport { ApiBearerAuth, ApiBody, ApiCreatedResponse, ApiOkResponse, ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger';\nimport { Request, Response } from 'express';\nimport { RestUtilities } from '../../Utilities';\nimport { ActionResponse, ErrorResponse } from '../Dtos/BaseResponse';\nimport { CreateFederatedIdentityRequest, CreateFederatedProviderRequest, CreateFederatedUserRequest, FederatedIdentityListResponse, FederatedIdentityResponse, FederatedProviderListResponse, FederatedProviderResponse, SetPasswordLoginPolicyRequest, UpdateFederatedIdentityRequest, UpdateFederatedProviderRequest } from '../Dtos/FederatedIdentityDtos';\nimport { JwtSimpleGuard } from '../jwt/jwt.strategy';\nimport { ensureAdmin, getAuthenticatedAccessiUser } from '../security/accessControl';\nimport { FederatedAuthService } from './FederatedAuthService';\n\n/**\n * Master-only administration API. Authentication itself is intentionally not\n * exposed over HTTP: the hosting backend validates its SSO and calls\n * FederatedAuthService.authenticate({ provider, subject }) directly.\n */\n@ApiTags('Federated authentication')\n@ApiBearerAuth()\n@UseGuards(JwtSimpleGuard)\n@Controller('accessi/federated-auth')\nexport class FederatedAuthController {\n constructor(private readonly federatedAuthService: FederatedAuthService) {}\n\n @ApiOperation({ summary: 'Elenca i provider SSO censiti', operationId: 'getFederatedProviders', description: 'Riservato a superutente. Restituisce solo catalogo e stato Accessi; issuer, secret e configurazioni SSO restano nel backend.' })\n @ApiOkResponse({ type: FederatedProviderListResponse })\n @Get('providers')\n async getProviders(@Req() request: Request, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n return RestUtilities.sendBaseResponse(res, await this.federatedAuthService.getProviders());\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Censisce un provider SSO', operationId: 'createFederatedProvider', description: 'Riservato a superutente. La chiave provider deve corrispondere alla configurazione stabile del backend; non salvare segreti, issuer o token.' })\n @ApiBody({ type: CreateFederatedProviderRequest })\n @ApiCreatedResponse({ type: FederatedProviderResponse })\n @Post('providers')\n async createProvider(@Req() request: Request, @Body() body: CreateFederatedProviderRequest, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n return RestUtilities.sendBaseResponse(res, await this.federatedAuthService.createProvider(body), HttpStatus.CREATED);\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Aggiorna o disabilita un provider SSO', operationId: 'updateFederatedProvider', description: 'Riservato a superutente. La chiave provider è immutabile: disabilitarla blocca nuovi login SSO ma conserva i collegamenti storici.' })\n @ApiParam({ name: 'provider', example: 'azure-ad-acme-produzione', description: 'Chiave stabile del provider censito.' })\n @ApiBody({ type: UpdateFederatedProviderRequest })\n @ApiOkResponse({ type: FederatedProviderResponse })\n @Patch('providers/:provider')\n async updateProvider(@Req() request: Request, @Param('provider') provider: string, @Body() body: UpdateFederatedProviderRequest, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n return RestUtilities.sendBaseResponse(res, await this.federatedAuthService.updateProvider(provider, body));\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Elimina un provider SSO', operationId: 'deleteFederatedProvider', description: 'Riservato a superutente. Consentito solo se nessuna identita e collegata al provider; in alternativa disabilitalo.' })\n @ApiParam({ name: 'provider', example: 'azure-ad-acme-produzione', description: 'Chiave stabile del provider censito.' })\n @ApiOkResponse({ type: ActionResponse })\n @ApiResponse({ status: 404, type: ErrorResponse, description: 'Provider non registrato.' })\n @ApiResponse({ status: 409, type: ErrorResponse, description: 'Provider ancora utilizzato da identita collegate.' })\n @Delete('providers/:provider')\n async deleteProvider(@Req() request: Request, @Param('provider') provider: string, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n await this.federatedAuthService.deleteProvider(provider);\n return RestUtilities.sendOKMessage(res, `Provider SSO ${provider} eliminato.`);\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Elenca le identita SSO di un utente', operationId: 'getFederatedIdentities', description: 'Riservato a superutente. Non restituisce token esterni o claim del provider.' })\n @ApiParam({ name: 'codiceUtente', example: 123 })\n @ApiOkResponse({ type: FederatedIdentityListResponse })\n @ApiResponse({ status: 403, type: ErrorResponse })\n @Get('users/:codiceUtente/identities')\n async getIdentities(@Req() request: Request, @Param('codiceUtente', ParseIntPipe) codiceUtente: number, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n return RestUtilities.sendBaseResponse(res, await this.federatedAuthService.getUserIdentities(codiceUtente));\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Associa un SSO gia verificato a un utente esistente', operationId: 'linkFederatedIdentity', description: 'Il master deve fornire un provider e subject ottenuti da una verifica SSO lato backend; questo endpoint non verifica token esterni.' })\n @ApiParam({ name: 'codiceUtente', example: 123 })\n @ApiBody({ type: CreateFederatedIdentityRequest })\n @ApiCreatedResponse({ type: FederatedIdentityResponse })\n @Post('users/:codiceUtente/identities')\n async linkIdentity(@Req() request: Request, @Param('codiceUtente', ParseIntPipe) codiceUtente: number, @Body() body: CreateFederatedIdentityRequest, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n const identity = await this.federatedAuthService.linkIdentity(codiceUtente, body, body.note);\n return RestUtilities.sendBaseResponse(res, identity, HttpStatus.CREATED);\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Crea un utente gestito e SSO-only', operationId: 'createFederatedUser', description: 'Riservato a superutente. L utente nasce confermato, con identita collegata e senza password salvo opt-in esplicito.' })\n @ApiBody({ type: CreateFederatedUserRequest })\n @ApiCreatedResponse({ type: FederatedIdentityResponse })\n @ApiResponse({ status: 400, type: ErrorResponse, description: 'Provider o subject non validi.' })\n @ApiResponse({ status: 404, type: ErrorResponse, description: 'Provider SSO non censito.' })\n @ApiResponse({ status: 409, type: ErrorResponse, description: 'Email o identità SSO già associate a un utente.' })\n @ApiResponse({ status: 503, type: ErrorResponse, description: 'Schema Accessi non aggiornato.' })\n @ApiResponse({ status: 500, type: ErrorResponse, description: 'Errore inatteso durante il provisioning; la risposta contiene FEDERATED_USER_PROVISIONING_FAILED.' })\n @Post('users')\n async createUser(@Req() request: Request, @Body() body: CreateFederatedUserRequest, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n const identity = await this.federatedAuthService.createManagedFederatedUser(body.user, body, body.passwordLoginEnabled === true, body.note);\n return RestUtilities.sendBaseResponse(res, identity, HttpStatus.CREATED);\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Abilita o disabilita il login con password', operationId: 'setPasswordLoginPolicy', description: 'Con false il login locale restituisce PASSWORD_LOGIN_DISABLED; le identita SSO attive restano utilizzabili.' })\n @ApiParam({ name: 'codiceUtente', example: 123 })\n @ApiBody({ type: SetPasswordLoginPolicyRequest })\n @ApiOkResponse({ type: ActionResponse })\n @Patch('users/:codiceUtente/password-login')\n async setPasswordPolicy(@Req() request: Request, @Param('codiceUtente', ParseIntPipe) codiceUtente: number, @Body() body: SetPasswordLoginPolicyRequest, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n await this.federatedAuthService.setPasswordLoginEnabled(codiceUtente, body.passwordLoginEnabled);\n return RestUtilities.sendOKMessage(res, 'Policy di autenticazione aggiornata.');\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Disabilita un identita SSO', operationId: 'disableFederatedIdentity', description: 'Soft delete: l associazione resta tracciata ma non puo piu autenticare.' })\n @ApiParam({ name: 'identityKey', description: 'SHA-256 restituito dagli endpoint di elenco o creazione.' })\n @ApiOkResponse({ type: ActionResponse })\n @Delete('identities/:identityKey')\n async disableIdentity(@Req() request: Request, @Param('identityKey') identityKey: string, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n await this.federatedAuthService.disableIdentity(identityKey);\n return RestUtilities.sendOKMessage(res, 'Identita SSO disabilitata.');\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Elimina definitivamente un collegamento SSO', operationId: 'deleteFederatedIdentityPermanently', description: 'Riservato a superutente. Rimuove il collegamento provider e subject dall’utente, senza eliminare l’utente Accessi.' })\n @ApiParam({ name: 'codiceUtente', example: 123 })\n @ApiParam({ name: 'identityKey', description: 'SHA-256 del collegamento da eliminare.' })\n @ApiOkResponse({ type: ActionResponse })\n @ApiResponse({ status: 404, type: ErrorResponse, description: 'Collegamento assente o non appartenente all’utente.' })\n @Delete('users/:codiceUtente/identities/:identityKey')\n async deleteIdentity(@Req() request: Request, @Param('codiceUtente', ParseIntPipe) codiceUtente: number, @Param('identityKey') identityKey: string, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n await this.federatedAuthService.deleteIdentity(codiceUtente, identityKey);\n return RestUtilities.sendOKMessage(res, 'Collegamento SSO eliminato definitivamente.');\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n @ApiOperation({ summary: 'Aggiorna un collegamento SSO', operationId: 'updateFederatedIdentity', description: 'Consente di modificare nota e stato attivo del collegamento. identityKey e una chiave tecnica, non un token SSO.' })\n @ApiParam({ name: 'identityKey', description: 'SHA-256 restituito dagli endpoint di elenco o creazione.' })\n @ApiBody({ type: UpdateFederatedIdentityRequest })\n @ApiOkResponse({ type: ActionResponse })\n @Patch('identities/:identityKey')\n async updateIdentity(@Req() request: Request, @Param('identityKey') identityKey: string, @Body() body: UpdateFederatedIdentityRequest, @Res() res: Response) {\n try {\n ensureAdmin(getAuthenticatedAccessiUser(request));\n await this.federatedAuthService.updateIdentity(identityKey, body);\n return RestUtilities.sendOKMessage(res, 'Collegamento SSO aggiornato.');\n } catch (error) {\n return this.sendError(res, error);\n }\n }\n\n private sendError(res: Response, error: unknown) {\n const status = error instanceof HttpException ? error.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR;\n return RestUtilities.sendErrorMessage(res, error, FederatedAuthController.name, status);\n }\n}\n"]}
|