emilsoftware-utilities 2.0.0-dev.3 → 2.0.0-dev.30
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 +185 -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 -7
- package/dist/Orm.js +196 -90
- 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 +70 -1
- package/dist/accessi-module/AccessiModule.js +32 -5
- package/dist/accessi-module/AccessiModule.js.map +1 -1
- package/dist/accessi-module/Console/accessiFetch.d.ts +7 -0
- package/dist/accessi-module/Console/accessiFetch.js +59 -0
- package/dist/accessi-module/Console/accessiFetch.js.map +1 -0
- package/dist/accessi-module/Console/console.css +618 -0
- package/dist/accessi-module/Console/console.d.ts +1 -0
- package/dist/accessi-module/Console/console.js +3101 -0
- package/dist/accessi-module/Console/console.js.map +1 -0
- package/dist/accessi-module/Console/generated/accessiApi.d.ts +562 -0
- package/dist/accessi-module/Console/generated/accessiApi.js +533 -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/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 +27 -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/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 +93 -0
- package/dist/accessi-module/Console/generated/model/index.js +110 -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/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 +22 -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 +348 -0
- package/dist/accessi-module/Console/help.js.map +1 -0
- package/dist/accessi-module/Console/index.html +127 -0
- package/dist/accessi-module/Console/wiki.d.ts +52 -0
- package/dist/accessi-module/Console/wiki.js +689 -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 +8 -5
- package/dist/accessi-module/Controllers/AuthController.js +128 -79
- package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
- package/dist/accessi-module/Controllers/ConfiguratorController.d.ts +1 -3
- package/dist/accessi-module/Controllers/ConfiguratorController.js +30 -35
- 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 +124 -5
- 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 +317 -46
- package/dist/accessi-module/Controllers/PermissionController.js.map +1 -1
- 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 +156 -23
- 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/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 +66 -0
- package/dist/accessi-module/Dtos/CatalogDtos.js +336 -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.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.js +7 -1
- 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/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 +7 -0
- package/dist/accessi-module/Dtos/UserDto.js +31 -3
- 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 +11 -0
- package/dist/accessi-module/Dtos/index.js +11 -0
- package/dist/accessi-module/Dtos/index.js.map +1 -1
- package/dist/accessi-module/Services/AuthService/AuthService.d.ts +40 -5
- package/dist/accessi-module/Services/AuthService/AuthService.js +192 -40
- 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 +608 -206
- package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
- 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 +54 -4
- package/dist/accessi-module/Services/UserService/UserService.js +434 -269
- 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/AccessiDatabaseUpdater.d.ts +51 -10
- package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js +435 -181
- package/dist/accessi-module/database-updates/AccessiDatabaseUpdater.js.map +1 -1
- package/dist/accessi-module/database-updates/accessiSchema.d.ts +45 -0
- package/dist/accessi-module/database-updates/accessiSchema.js +87 -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/runAccessiDbUpdate.js +26 -8
- 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 +21 -0
- package/dist/accessi-module/index.js +69 -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 +11 -0
- package/dist/accessi-module/security/accessControl.js +19 -4
- 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/authenticatedToken.d.ts +15 -1
- 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 +30 -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/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.30.tgz +0 -0
- package/dist/firebird-compat.d.ts +29 -6
- package/dist/firebird-compat.js +150 -129
- 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 +11 -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 +103 -83
|
@@ -20,14 +20,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
20
20
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
24
|
+
var t = {};
|
|
25
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
26
|
+
t[p] = s[p];
|
|
27
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
28
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
29
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
30
|
+
t[p[i]] = s[p[i]];
|
|
31
|
+
}
|
|
32
|
+
return t;
|
|
33
|
+
};
|
|
23
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
35
|
exports.UserService = void 0;
|
|
25
36
|
const common_1 = require("@nestjs/common");
|
|
37
|
+
const optionalColumns_1 = require("../../database-updates/optionalColumns");
|
|
26
38
|
const autobind_1 = require("../../../autobind");
|
|
27
39
|
const Orm_1 = require("../../../Orm");
|
|
28
40
|
const Utilities_1 = require("../../../Utilities");
|
|
29
41
|
const FiltriUtente_1 = require("../../Dtos/FiltriUtente");
|
|
30
42
|
const StatoRegistrazione_1 = require("../../Dtos/StatoRegistrazione");
|
|
43
|
+
const emailConfiguration_1 = require("../../security/emailConfiguration");
|
|
31
44
|
const EmailService_1 = require("../EmailService/EmailService");
|
|
32
45
|
const FiltriService_1 = require("../FiltriService/FiltriService");
|
|
33
46
|
const PermissionService_1 = require("../PermissionService/PermissionService");
|
|
@@ -38,12 +51,34 @@ let UserService = class UserService {
|
|
|
38
51
|
this.permissionService = permissionService;
|
|
39
52
|
this.filtriService = filtriService;
|
|
40
53
|
}
|
|
54
|
+
validateApplicationFields(value) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const applicationFields = [['nummac', 'NUMMAC'], ['ragSocCli', 'RAGSOCCLI']];
|
|
57
|
+
let configColumns;
|
|
58
|
+
if (applicationFields.some(([key]) => value[key] !== undefined)) {
|
|
59
|
+
configColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI_CONFIG');
|
|
60
|
+
for (const [key, column] of applicationFields) {
|
|
61
|
+
if (value[key] !== undefined && value[key] !== null && !configColumns.has(column)) {
|
|
62
|
+
throw new common_1.BadRequestException(`Campo applicativo non configurato: UTENTI_CONFIG.${column}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const filterKeys = Object.keys(FiltriUtente_1.FILTRI_UTENTE_DB_MAPPING);
|
|
67
|
+
if (filterKeys.some(key => value[key] !== undefined && value[key] !== null && value[key] !== '')) {
|
|
68
|
+
yield this.filtriService.validateSupportedFields(value);
|
|
69
|
+
}
|
|
70
|
+
return { configColumns };
|
|
71
|
+
});
|
|
72
|
+
}
|
|
41
73
|
normalizeDatabaseBoolean(value) {
|
|
42
74
|
return value === true || value === 1 || value === '1';
|
|
43
75
|
}
|
|
76
|
+
normalizeUserFlags(user) {
|
|
77
|
+
return Object.assign(Object.assign({}, user), { flagSuper: this.normalizeDatabaseBoolean(user.flagSuper), flagAdminConfigurator: this.normalizeDatabaseBoolean(user.flagAdminConfigurator), flagDueFattori: this.normalizeDatabaseBoolean(user.flagDueFattori), passwordlessLoginEnabled: this.normalizeDatabaseBoolean(user.passwordlessLoginEnabled), passwordLoginEnabled: user.passwordLoginEnabled == null || this.normalizeDatabaseBoolean(user.passwordLoginEnabled) });
|
|
78
|
+
}
|
|
44
79
|
normalizeEmail(email) {
|
|
45
80
|
if (typeof email !== 'string' || email.trim() === '') {
|
|
46
|
-
throw new
|
|
81
|
+
throw new common_1.BadRequestException({ code: 'ACCESSI_EMAIL_REQUIRED', message: "L'email è obbligatoria." });
|
|
47
82
|
}
|
|
48
83
|
return email.trim().toLowerCase();
|
|
49
84
|
}
|
|
@@ -53,10 +88,11 @@ let UserService = class UserService {
|
|
|
53
88
|
const existingUser = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase)[0];
|
|
54
89
|
if ((existingUser === null || existingUser === void 0 ? void 0 : existingUser.codiceUtente) &&
|
|
55
90
|
(!currentUserCode || existingUser.codiceUtente !== currentUserCode)) {
|
|
56
|
-
throw new
|
|
91
|
+
throw new common_1.ConflictException({ code: 'ACCESSI_EMAIL_ALREADY_EXISTS', message: "L'email è già associata a un utente Accessi." });
|
|
57
92
|
}
|
|
58
93
|
});
|
|
59
94
|
}
|
|
95
|
+
/** Determina se l'utente puo amministrare il configuratore Accessi (`FLGADMINCONFIG`). */
|
|
60
96
|
isAdminConfigurator(codiceUtente) {
|
|
61
97
|
return __awaiter(this, void 0, void 0, function* () {
|
|
62
98
|
var _a;
|
|
@@ -65,32 +101,35 @@ let UserService = class UserService {
|
|
|
65
101
|
}
|
|
66
102
|
const query = `SELECT FLGADMINCONFIG AS flag_admin_configurator FROM UTENTI_CONFIG WHERE CODUTE = ?`;
|
|
67
103
|
const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [codiceUtente]);
|
|
68
|
-
if (
|
|
104
|
+
if (result.length === 0) {
|
|
69
105
|
return false;
|
|
70
106
|
}
|
|
71
107
|
const mapped = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
72
|
-
|
|
73
|
-
if (typeof flagValue === 'boolean') {
|
|
74
|
-
return flagValue;
|
|
75
|
-
}
|
|
76
|
-
return flagValue === 1;
|
|
108
|
+
return this.normalizeDatabaseBoolean((_a = mapped[0]) === null || _a === void 0 ? void 0 : _a.flagAdminConfigurator);
|
|
77
109
|
});
|
|
78
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Legge il minimo profilo autorevole usato da JWT e middleware. Restituisce `null` per utenti inesistenti.
|
|
113
|
+
* Non usare `UserDto` dal token per decisioni di sicurezza: i flag vengono sempre riletti qui.
|
|
114
|
+
*/
|
|
79
115
|
getAuthenticatedUserSnapshot(codiceUtente) {
|
|
80
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
81
117
|
if (!codiceUtente || codiceUtente <= 0) {
|
|
82
118
|
return null;
|
|
83
119
|
}
|
|
84
|
-
const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `
|
|
85
|
-
SELECT
|
|
86
|
-
U.CODUTE AS codice_utente,
|
|
87
|
-
U.USRNAME AS email,
|
|
88
|
-
U.STAREG AS stato_registrazione,
|
|
89
|
-
C.FLGSUPER AS flag_super,
|
|
90
|
-
C.FLGADMINCONFIG AS flag_admin_configurator
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
120
|
+
const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `
|
|
121
|
+
SELECT
|
|
122
|
+
U.CODUTE AS codice_utente,
|
|
123
|
+
U.USRNAME AS email,
|
|
124
|
+
U.STAREG AS stato_registrazione,
|
|
125
|
+
C.FLGSUPER AS flag_super,
|
|
126
|
+
C.FLGADMINCONFIG AS flag_admin_configurator
|
|
127
|
+
, C.FLG2FATT AS flag_due_fattori
|
|
128
|
+
, C.FLGPWDLESS AS passwordless_login_enabled
|
|
129
|
+
, COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled
|
|
130
|
+
FROM UTENTI U
|
|
131
|
+
LEFT JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
|
|
132
|
+
WHERE U.CODUTE = ?
|
|
94
133
|
`, [codiceUtente]);
|
|
95
134
|
const user = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase)[0];
|
|
96
135
|
if (!(user === null || user === void 0 ? void 0 : user.codiceUtente)) {
|
|
@@ -102,70 +141,138 @@ let UserService = class UserService {
|
|
|
102
141
|
statoRegistrazione: Number(user.statoRegistrazione),
|
|
103
142
|
flagSuper: this.normalizeDatabaseBoolean(user.flagSuper),
|
|
104
143
|
flagAdminConfigurator: this.normalizeDatabaseBoolean(user.flagAdminConfigurator),
|
|
144
|
+
flagDueFattori: this.normalizeDatabaseBoolean(user.flagDueFattori),
|
|
145
|
+
passwordlessLoginEnabled: this.normalizeDatabaseBoolean(user.passwordlessLoginEnabled),
|
|
146
|
+
passwordLoginEnabled: this.normalizeDatabaseBoolean(user.passwordLoginEnabled),
|
|
105
147
|
};
|
|
106
148
|
});
|
|
107
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Elenca gli utenti con filtri opzionali. Grant e campi estesi sono costosi e vengono caricati soltanto
|
|
152
|
+
* quando richiesti esplicitamente nelle opzioni; usare filtri puntuali nei flussi di autenticazione.
|
|
153
|
+
*/
|
|
108
154
|
getUsers(filters, options) {
|
|
109
155
|
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
var _a, _b, _c, _d, _e;
|
|
110
157
|
try {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
158
|
+
const configColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI_CONFIG');
|
|
159
|
+
const filterColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'FILTRI');
|
|
160
|
+
const utentiColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI');
|
|
161
|
+
// Paginazione opzionale con limiti sani: il default resta "tutti gli utenti".
|
|
162
|
+
const limit = Number.isInteger(filters === null || filters === void 0 ? void 0 : filters.limit) && ((_a = filters === null || filters === void 0 ? void 0 : filters.limit) !== null && _a !== void 0 ? _a : 0) > 0
|
|
163
|
+
? Math.min(filters === null || filters === void 0 ? void 0 : filters.limit, 1000)
|
|
164
|
+
: undefined;
|
|
165
|
+
const offset = Number.isInteger(filters === null || filters === void 0 ? void 0 : filters.offset) && ((_b = filters === null || filters === void 0 ? void 0 : filters.offset) !== null && _b !== void 0 ? _b : 0) > 0
|
|
166
|
+
? Math.trunc(filters === null || filters === void 0 ? void 0 : filters.offset)
|
|
167
|
+
: 0;
|
|
168
|
+
const pagination = `${limit !== undefined ? ` FIRST ${limit}` : ''}${offset > 0 ? ` SKIP ${offset}` : ''}`;
|
|
169
|
+
let query = `
|
|
170
|
+
SELECT${pagination}
|
|
171
|
+
U.CODUTE as codice_utente,
|
|
172
|
+
U.USRNAME as email,
|
|
173
|
+
U.FLGGDPR as flag_gdpr,
|
|
174
|
+
U.DATGDPR as data_gdpr,
|
|
175
|
+
U.DATINS as data_inserimento,
|
|
176
|
+
U.DATSCAPWD as data_scadenza_password,
|
|
177
|
+
U.DATLASTLOGIN as data_last_login,
|
|
178
|
+
U.STAREG as stato_registrazione,
|
|
179
|
+
${(0, optionalColumns_1.optionalColumn)(utentiColumns, 'ENABLEIA', 'U', 'enable_ia')},
|
|
180
|
+
G.COGNOME as cognome,
|
|
181
|
+
G.NOME as nome,
|
|
182
|
+
G.AVATAR as avatar,
|
|
183
|
+
G.FLG2FATT as flag_due_fattori,
|
|
184
|
+
G.FLGPWDLESS as passwordless_login_enabled,
|
|
185
|
+
G.CODLINGUA as codice_lingua,
|
|
186
|
+
G.CELLULARE as cellulare,
|
|
187
|
+
G.FLGSUPER as flag_super,
|
|
188
|
+
G.FLGADMINCONFIG as flag_admin_configurator,
|
|
189
|
+
COALESCE(G.FLGPASSWORD, 1) as password_login_enabled,
|
|
190
|
+
G.PAGDEF as pagina_default,
|
|
191
|
+
G.JSON_METADATA as json_metadata,
|
|
192
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'RAGSOCCLI', 'G', 'rag_soc_cli', false)},
|
|
193
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'NUMMAC', 'G', 'nummac')},
|
|
194
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'CAUMOV', 'G', 'caumov')},
|
|
195
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODDIP', 'F', 'cod_dipendente')},
|
|
196
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'NUMREP', 'F', 'num_rep', true)},
|
|
197
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'IDXPERS', 'F', 'idx_pers', true)},
|
|
198
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLISUPER', 'F', 'cod_cli_super', true)},
|
|
199
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODAGE', 'F', 'cod_age', true)},
|
|
200
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLICOL', 'F', 'cod_cli_col', true)},
|
|
201
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLIENTI', 'F', 'cod_clienti', false)},
|
|
202
|
+
F.TIPFIL AS tip_fil,
|
|
203
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'IDXPOS', 'F', 'idx_postazione', true)}
|
|
204
|
+
FROM UTENTI U
|
|
205
|
+
INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE
|
|
206
|
+
LEFT JOIN FILTRI F ON F.CODUTE = U.CODUTE
|
|
207
|
+
WHERE 1=1
|
|
145
208
|
`;
|
|
146
209
|
const queryParams = [];
|
|
147
210
|
if (filters === null || filters === void 0 ? void 0 : filters.email) {
|
|
148
211
|
query += ` AND LOWER(U.USRNAME) = ? `;
|
|
149
212
|
queryParams.push(filters.email.trim().toLowerCase());
|
|
150
213
|
}
|
|
151
|
-
if (filters === null || filters === void 0 ? void 0 : filters.codiceUtente) {
|
|
152
|
-
|
|
153
|
-
|
|
214
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.codiceUtente) !== undefined) {
|
|
215
|
+
const codes = (Array.isArray(filters.codiceUtente) ? filters.codiceUtente : [filters.codiceUtente])
|
|
216
|
+
.map((value) => Number(value))
|
|
217
|
+
.filter((value) => Number.isFinite(value) && value > 0);
|
|
218
|
+
if (codes.length === 0) {
|
|
219
|
+
return [];
|
|
220
|
+
}
|
|
221
|
+
query += ` AND U.CODUTE IN (${codes.map(() => '?').join(', ')}) `;
|
|
222
|
+
queryParams.push(...codes);
|
|
223
|
+
}
|
|
224
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.numRep) !== undefined) {
|
|
225
|
+
const reparti = (Array.isArray(filters.numRep) ? filters.numRep : [filters.numRep])
|
|
226
|
+
.map((value) => Number(value))
|
|
227
|
+
.filter((value) => Number.isFinite(value));
|
|
228
|
+
if (reparti.length === 0) {
|
|
229
|
+
return [];
|
|
230
|
+
}
|
|
231
|
+
query += ` AND F.NUMREP IN (${reparti.map(() => '?').join(', ')}) `;
|
|
232
|
+
queryParams.push(...reparti);
|
|
233
|
+
}
|
|
234
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.codDipendente) !== undefined) {
|
|
235
|
+
query += ` AND F.CODDIP = ? `;
|
|
236
|
+
queryParams.push(Number(filters.codDipendente));
|
|
237
|
+
}
|
|
238
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.tipFil) !== undefined) {
|
|
239
|
+
query += ` AND F.TIPFIL = ? `;
|
|
240
|
+
queryParams.push(Number(filters.tipFil));
|
|
241
|
+
}
|
|
242
|
+
if (filters === null || filters === void 0 ? void 0 : filters.cellulare) {
|
|
243
|
+
query += ` AND TRIM(G.CELLULARE) = ? `;
|
|
244
|
+
queryParams.push(String(filters.cellulare).trim());
|
|
245
|
+
}
|
|
246
|
+
if (filters === null || filters === void 0 ? void 0 : filters.cellute) {
|
|
247
|
+
query += ` AND TRIM(U.CELLUTE) = ? `;
|
|
248
|
+
queryParams.push(String(filters.cellute).trim());
|
|
249
|
+
}
|
|
250
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.flagSuper) !== undefined) {
|
|
251
|
+
query += filters.flagSuper ? ` AND COALESCE(G.FLGSUPER, 0) <> 0 ` : ` AND COALESCE(G.FLGSUPER, 0) = 0 `;
|
|
154
252
|
}
|
|
155
253
|
query += ` ORDER BY U.CODUTE DESC `;
|
|
156
254
|
let users = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, queryParams));
|
|
157
|
-
users = users.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
255
|
+
users = users.map(Utilities_1.RestUtilities.convertKeysToCamelCase).map(user => this.normalizeUserFlags(user));
|
|
158
256
|
const usersResponse = [];
|
|
257
|
+
// I campi estensione sono caricati una volta per tabella (non una per utente) in query IN
|
|
258
|
+
// suddivise in blocchi per non superare i limiti di parametri del driver.
|
|
259
|
+
const extensionFieldsByUser = (options === null || options === void 0 ? void 0 : options.includeExtensionFields)
|
|
260
|
+
? yield this.loadExtensionFieldsForUsers(users.map((user) => user.codiceUtente))
|
|
261
|
+
: undefined;
|
|
262
|
+
// I grant sono caricati in batch (query IN) invece che utente per utente.
|
|
263
|
+
const grantsByUser = (options === null || options === void 0 ? void 0 : options.includeGrants)
|
|
264
|
+
? yield this.permissionService.getUsersRolesAndGrants(users.map((user) => user.codiceUtente))
|
|
265
|
+
: undefined;
|
|
159
266
|
for (const user of users) {
|
|
160
|
-
let userGrants
|
|
267
|
+
let userGrants;
|
|
161
268
|
if (options === null || options === void 0 ? void 0 : options.includeGrants) {
|
|
162
|
-
userGrants =
|
|
269
|
+
userGrants = grantsByUser === null || grantsByUser === void 0 ? void 0 : grantsByUser.get(user.codiceUtente);
|
|
163
270
|
}
|
|
164
|
-
let extensionFields
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
extensionFields[ext.objectKey] =
|
|
271
|
+
let extensionFields;
|
|
272
|
+
if (options === null || options === void 0 ? void 0 : options.includeExtensionFields) {
|
|
273
|
+
extensionFields = {};
|
|
274
|
+
for (const ext of (_c = this.accessiOptions.extensionFieldsOptions) !== null && _c !== void 0 ? _c : []) {
|
|
275
|
+
extensionFields[ext.objectKey] = (_e = (_d = extensionFieldsByUser === null || extensionFieldsByUser === void 0 ? void 0 : extensionFieldsByUser.get(ext.objectKey)) === null || _d === void 0 ? void 0 : _d.get(user.codiceUtente)) !== null && _e !== void 0 ? _e : [];
|
|
169
276
|
}
|
|
170
277
|
}
|
|
171
278
|
usersResponse.push({
|
|
@@ -181,6 +288,68 @@ let UserService = class UserService {
|
|
|
181
288
|
}
|
|
182
289
|
});
|
|
183
290
|
}
|
|
291
|
+
/** Conteggio utenti con gli stessi filtri di `getUsers`, per la paginazione (header X-Total-Count). */
|
|
292
|
+
countUsers(filters) {
|
|
293
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
294
|
+
var _a, _b;
|
|
295
|
+
const conditions = [];
|
|
296
|
+
const params = [];
|
|
297
|
+
if (filters === null || filters === void 0 ? void 0 : filters.email) {
|
|
298
|
+
conditions.push('LOWER(U.USRNAME) = ?');
|
|
299
|
+
params.push(filters.email.trim().toLowerCase());
|
|
300
|
+
}
|
|
301
|
+
if (filters === null || filters === void 0 ? void 0 : filters.codiceUtente) {
|
|
302
|
+
conditions.push('U.CODUTE = ?');
|
|
303
|
+
params.push(filters.codiceUtente);
|
|
304
|
+
}
|
|
305
|
+
const query = `SELECT COUNT(*) AS TOTAL FROM UTENTI U INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE WHERE 1=1 ${conditions.map((condition) => `AND ${condition}`).join(' ')}`;
|
|
306
|
+
const rows = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, params, false));
|
|
307
|
+
const row = rows[0];
|
|
308
|
+
return Number((_b = (_a = row === null || row === void 0 ? void 0 : row.TOTAL) !== null && _a !== void 0 ? _a : row === null || row === void 0 ? void 0 : row.total) !== null && _b !== void 0 ? _b : 0) || 0;
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
loadExtensionFieldsForUsers(codiceUtenti) {
|
|
312
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
313
|
+
var _a;
|
|
314
|
+
const byObjectKey = new Map();
|
|
315
|
+
const extensions = (_a = this.accessiOptions.extensionFieldsOptions) !== null && _a !== void 0 ? _a : [];
|
|
316
|
+
const uniqueCodes = Array.from(new Set(codiceUtenti));
|
|
317
|
+
for (const ext of extensions) {
|
|
318
|
+
const grouped = new Map();
|
|
319
|
+
for (const chunk of this.chunkArray(uniqueCodes, 500)) {
|
|
320
|
+
if (chunk.length === 0) {
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
const placeholders = chunk.map(() => '?').join(', ');
|
|
324
|
+
const rows = (yield Orm_1.Orm.query(ext.databaseOptions, `SELECT ${ext.tableJoinFieldName} AS __joinkey, ${ext.tableFields.join(', ')} FROM ${ext.tableName} WHERE ${ext.tableJoinFieldName} IN (${placeholders})`, chunk)).map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
325
|
+
for (const row of rows) {
|
|
326
|
+
const { __joinkey } = row, rest = __rest(row, ["__joinkey"]);
|
|
327
|
+
const key = Number(__joinkey);
|
|
328
|
+
if (!Number.isFinite(key)) {
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
const bucket = grouped.get(key);
|
|
332
|
+
if (bucket) {
|
|
333
|
+
bucket.push(rest);
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
grouped.set(key, [rest]);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
byObjectKey.set(ext.objectKey, grouped);
|
|
341
|
+
}
|
|
342
|
+
return byObjectKey;
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
chunkArray(items, size) {
|
|
346
|
+
const chunks = [];
|
|
347
|
+
for (let index = 0; index < items.length; index += size) {
|
|
348
|
+
chunks.push(items.slice(index, index + size));
|
|
349
|
+
}
|
|
350
|
+
return chunks;
|
|
351
|
+
}
|
|
352
|
+
/** Cerca il codice interno per email normalizzata. Il chiamante deve gestire il caso senza righe. */
|
|
184
353
|
getCodiceUtenteByEmail(email) {
|
|
185
354
|
return __awaiter(this, void 0, void 0, function* () {
|
|
186
355
|
try {
|
|
@@ -195,179 +364,153 @@ let UserService = class UserService {
|
|
|
195
364
|
}
|
|
196
365
|
});
|
|
197
366
|
}
|
|
367
|
+
/** Recupera il profilo locale usato dal login, compresi filtri Accessi eventualmente presenti. */
|
|
198
368
|
getUserByEmail(email) {
|
|
199
369
|
return __awaiter(this, void 0, void 0, function* () {
|
|
200
|
-
|
|
201
|
-
const query = `
|
|
202
|
-
SELECT
|
|
203
|
-
U.CODUTE AS codice_utente,
|
|
204
|
-
U.USRNAME AS email,
|
|
205
|
-
U.FLGGDPR AS flag_gdpr,
|
|
206
|
-
U.DATSCAPWD as data_scadenza_password,
|
|
207
|
-
U.STAREG AS stato_registrazione,
|
|
208
|
-
C.COGNOME AS cognome,
|
|
209
|
-
C.NOME AS nome,
|
|
210
|
-
C.AVATAR AS avatar,
|
|
211
|
-
C.FLG2FATT AS flag_due_fattori,
|
|
212
|
-
C.
|
|
213
|
-
C.
|
|
214
|
-
C.
|
|
215
|
-
C.
|
|
216
|
-
C.
|
|
217
|
-
C.
|
|
218
|
-
C.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
370
|
+
const configColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI_CONFIG');
|
|
371
|
+
const query = `
|
|
372
|
+
SELECT
|
|
373
|
+
U.CODUTE AS codice_utente,
|
|
374
|
+
U.USRNAME AS email,
|
|
375
|
+
U.FLGGDPR AS flag_gdpr,
|
|
376
|
+
U.DATSCAPWD as data_scadenza_password,
|
|
377
|
+
U.STAREG AS stato_registrazione,
|
|
378
|
+
C.COGNOME AS cognome,
|
|
379
|
+
C.NOME AS nome,
|
|
380
|
+
C.AVATAR AS avatar,
|
|
381
|
+
C.FLG2FATT AS flag_due_fattori,
|
|
382
|
+
C.FLGPWDLESS AS passwordless_login_enabled,
|
|
383
|
+
C.CODLINGUA AS codice_lingua,
|
|
384
|
+
C.CELLULARE AS cellulare,
|
|
385
|
+
C.FLGSUPER AS flag_super,
|
|
386
|
+
C.FLGADMINCONFIG AS flag_admin_configurator,
|
|
387
|
+
COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled,
|
|
388
|
+
C.PAGDEF AS pagina_default,
|
|
389
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'NUMMAC', 'C', 'nummac')},
|
|
390
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'RAGSOCCLI', 'C', 'rag_soc_cli', false)}
|
|
391
|
+
FROM UTENTI U
|
|
392
|
+
INNER JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
|
|
393
|
+
WHERE LOWER(U.USRNAME) = ?
|
|
222
394
|
`;
|
|
223
395
|
const utenti = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [email]).then((results) => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
|
|
224
|
-
const
|
|
225
|
-
if (
|
|
396
|
+
const user = utenti[0];
|
|
397
|
+
if (!user)
|
|
226
398
|
return null;
|
|
227
|
-
|
|
228
|
-
if (
|
|
229
|
-
const
|
|
230
|
-
const filtro = filtriUtente[0];
|
|
399
|
+
const filtro = (yield this.filtriService.getFiltriUser(user.codiceUtente))[0];
|
|
400
|
+
if (filtro) {
|
|
401
|
+
const filterValues = {};
|
|
231
402
|
Object.entries(FiltriUtente_1.FILTRI_UTENTE_DB_MAPPING).forEach(([key]) => {
|
|
232
403
|
if (key in filtro) {
|
|
233
|
-
|
|
404
|
+
filterValues[key] = filtro[key];
|
|
234
405
|
}
|
|
235
406
|
});
|
|
407
|
+
Object.assign(user, filterValues);
|
|
236
408
|
}
|
|
237
|
-
return
|
|
409
|
+
return this.normalizeUserFlags(user);
|
|
238
410
|
});
|
|
239
411
|
}
|
|
240
412
|
insertUserFilters(codiceUtente, filterData) {
|
|
241
413
|
return __awaiter(this, void 0, void 0, function* () {
|
|
242
|
-
|
|
243
|
-
if (!codiceUtente || codiceUtente <= 0) {
|
|
244
|
-
throw new Error('Codice utente non valido');
|
|
245
|
-
}
|
|
246
|
-
const fieldMapping = {
|
|
247
|
-
numeroReport: { dbField: 'NUMREP', type: 'number' },
|
|
248
|
-
indicePersonale: { dbField: 'IDXPERS', type: 'number' },
|
|
249
|
-
codiceClienteSuper: { dbField: 'CODCLISUPER', type: 'number' },
|
|
250
|
-
codAge: { dbField: 'CODAGE', type: 'number' },
|
|
251
|
-
codiceClienteCollegato: { dbField: 'CODCLICOL', type: 'number' },
|
|
252
|
-
codiceClienti: { dbField: 'CODCLIENTI', type: 'string' },
|
|
253
|
-
tipFil: { dbField: 'TIPFIL', type: 'number' },
|
|
254
|
-
idxPostazione: { dbField: 'IDXPOS', type: 'number' },
|
|
255
|
-
};
|
|
256
|
-
const fieldsToInsert = Object.entries(fieldMapping)
|
|
257
|
-
.filter(([tsField]) => {
|
|
258
|
-
const value = filterData[tsField];
|
|
259
|
-
return value !== undefined && value !== null && value !== '';
|
|
260
|
-
})
|
|
261
|
-
.map(([tsField, config]) => {
|
|
262
|
-
const value = filterData[tsField];
|
|
263
|
-
if (config.type === 'number' && typeof value !== 'number') {
|
|
264
|
-
throw new Error(`Il campo ${tsField} deve essere un numero`);
|
|
265
|
-
}
|
|
266
|
-
if (config.type === 'string' && typeof value !== 'string') {
|
|
267
|
-
throw new Error(`Il campo ${tsField} deve essere una stringa`);
|
|
268
|
-
}
|
|
269
|
-
return { tsField, dbField: config.dbField, value };
|
|
270
|
-
});
|
|
271
|
-
if (fieldsToInsert.length === 0) {
|
|
272
|
-
return;
|
|
273
|
-
}
|
|
274
|
-
yield this.executeInTransaction(() => __awaiter(this, void 0, void 0, function* () {
|
|
275
|
-
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, 'DELETE FROM FILTRI WHERE CODUTE = ?', [codiceUtente]);
|
|
276
|
-
const dbFields = ['CODUTE', ...fieldsToInsert.map((f) => f.dbField)];
|
|
277
|
-
const placeholders = dbFields.map(() => '?');
|
|
278
|
-
const values = [codiceUtente, ...fieldsToInsert.map((f) => f.value)];
|
|
279
|
-
const insertQuery = `INSERT INTO FILTRI (${dbFields.join(', ')}) VALUES (${placeholders.join(', ')})`;
|
|
280
|
-
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, insertQuery, values);
|
|
281
|
-
}));
|
|
282
|
-
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
throw new Error(`Errore durante l'inserimento dei filtri per utente ${codiceUtente}: ${error.message}`);
|
|
285
|
-
}
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
executeInTransaction(operation) {
|
|
289
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
290
|
-
yield operation();
|
|
414
|
+
yield this.filtriService.upsertFiltriUtente(codiceUtente, filterData);
|
|
291
415
|
});
|
|
292
416
|
}
|
|
417
|
+
/**
|
|
418
|
+
* Crea utente, configurazione e filtri. La registrazione pubblica resta in stato `INVIO` e non puo
|
|
419
|
+
* impostare privilegi, ruoli o grant; soltanto flussi backend fidati possono usare `allowPrivilegedFields`.
|
|
420
|
+
*/
|
|
293
421
|
register(registrationData, options) {
|
|
294
422
|
return __awaiter(this, void 0, void 0, function* () {
|
|
295
|
-
var _a
|
|
423
|
+
var _a;
|
|
296
424
|
try {
|
|
297
425
|
const allowPrivilegedFields = (options === null || options === void 0 ? void 0 : options.allowPrivilegedFields) === true;
|
|
298
426
|
const normalizedEmail = this.normalizeEmail(registrationData.email);
|
|
427
|
+
if (registrationData.flagDueFattori !== undefined && typeof registrationData.flagDueFattori !== 'boolean') {
|
|
428
|
+
throw new common_1.BadRequestException('Il flag due fattori deve essere booleano.');
|
|
429
|
+
}
|
|
430
|
+
if (registrationData.flagDueFattori && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(normalizedEmail)) {
|
|
431
|
+
throw new common_1.BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');
|
|
432
|
+
}
|
|
299
433
|
if (!allowPrivilegedFields &&
|
|
300
434
|
(registrationData.flagSuper !== undefined ||
|
|
301
435
|
registrationData.flagAdminConfigurator !== undefined ||
|
|
436
|
+
registrationData.flagDueFattori !== undefined ||
|
|
302
437
|
registrationData.roles !== undefined ||
|
|
303
438
|
registrationData.permissions !== undefined)) {
|
|
304
439
|
throw new Error('I campi privilegiati non sono consentiti nella registrazione pubblica.');
|
|
305
440
|
}
|
|
441
|
+
yield this.validateApplicationFields(registrationData);
|
|
306
442
|
yield this.ensureEmailIsAvailable(normalizedEmail);
|
|
307
|
-
const queryUtenti = `INSERT INTO UTENTI (USRNAME, STAREG) VALUES (?,?)`;
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
{
|
|
320
|
-
key: 'cellulare',
|
|
321
|
-
dbField: 'CELLULARE',
|
|
322
|
-
transform: (v) => String(v),
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
key: 'avatar',
|
|
326
|
-
dbField: 'AVATAR',
|
|
327
|
-
transform: (v) => String(v),
|
|
328
|
-
},
|
|
329
|
-
{
|
|
330
|
-
key: 'flagDueFattori',
|
|
331
|
-
dbField: 'FLG2FATT',
|
|
332
|
-
transform: (v) => (v ? 1 : 0),
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
key: 'paginaDefault',
|
|
336
|
-
dbField: 'PAGDEF',
|
|
337
|
-
transform: (v) => String(v),
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
key: 'nummac',
|
|
341
|
-
dbField: 'NUMMAC',
|
|
342
|
-
transform: (v) => Number(v),
|
|
343
|
-
},
|
|
344
|
-
{
|
|
345
|
-
key: 'ragSocCli',
|
|
346
|
-
dbField: 'RAGSOCCLI',
|
|
347
|
-
transform: (v) => String(v),
|
|
348
|
-
},
|
|
349
|
-
];
|
|
350
|
-
if (allowPrivilegedFields) {
|
|
351
|
-
optionalFields.push({
|
|
352
|
-
key: 'flagSuper',
|
|
353
|
-
dbField: 'FLGSUPER',
|
|
354
|
-
transform: (v) => (v ? 1 : 0),
|
|
355
|
-
}, {
|
|
356
|
-
key: 'flagAdminConfigurator',
|
|
357
|
-
dbField: 'FLGADMINCONFIG',
|
|
358
|
-
transform: (v) => (v ? 1 : 0),
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
for (const field of optionalFields) {
|
|
362
|
-
const value = registrationData[field.key];
|
|
363
|
-
if (value !== undefined && value !== null) {
|
|
364
|
-
utentiConfigFields.push(field.dbField);
|
|
365
|
-
utentiConfigPlaceholders.push('?');
|
|
366
|
-
utentiConfigParams.push(field.transform ? field.transform(value) : value);
|
|
443
|
+
const queryUtenti = `INSERT INTO UTENTI (USRNAME, STAREG) VALUES (?,?) RETURNING CODUTE`;
|
|
444
|
+
// Public/local registrations keep the historic INVIO state; trusted master or SSO flows may opt into CONF.
|
|
445
|
+
const paramsUtenti = [normalizedEmail, (_a = options === null || options === void 0 ? void 0 : options.initialState) !== null && _a !== void 0 ? _a : StatoRegistrazione_1.StatoRegistrazione.INVIO];
|
|
446
|
+
// Utente e configurazione sono creati in un'unica transazione; filtri e assegnazioni restano
|
|
447
|
+
// fuori perché delegati a servizi dedicati.
|
|
448
|
+
const codiceUtente = yield Orm_1.Orm.withTransaction(this.accessiOptions.databaseOptions, (transaction) => __awaiter(this, void 0, void 0, function* () {
|
|
449
|
+
var _a;
|
|
450
|
+
const insertedUsers = yield Orm_1.Orm.transactionQuery(transaction, queryUtenti, paramsUtenti);
|
|
451
|
+
const insertedUser = (Array.isArray(insertedUsers) ? insertedUsers[0] : insertedUsers);
|
|
452
|
+
const newCodiceUtente = Number((_a = insertedUser === null || insertedUser === void 0 ? void 0 : insertedUser.CODUTE) !== null && _a !== void 0 ? _a : insertedUser === null || insertedUser === void 0 ? void 0 : insertedUser.codute);
|
|
453
|
+
if (!newCodiceUtente) {
|
|
454
|
+
throw new Error('Creazione utente non riuscita: impossibile recuperare CODUTE.');
|
|
367
455
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
456
|
+
const utentiConfigFields = ['CODUTE', 'COGNOME', 'NOME'];
|
|
457
|
+
const utentiConfigPlaceholders = ['?', '?', '?'];
|
|
458
|
+
const utentiConfigParams = [newCodiceUtente, registrationData.cognome, registrationData.nome];
|
|
459
|
+
const optionalFields = [
|
|
460
|
+
{
|
|
461
|
+
key: 'cellulare',
|
|
462
|
+
dbField: 'CELLULARE',
|
|
463
|
+
transform: (v) => String(v),
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
key: 'avatar',
|
|
467
|
+
dbField: 'AVATAR',
|
|
468
|
+
transform: (v) => String(v),
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
key: 'flagDueFattori',
|
|
472
|
+
dbField: 'FLG2FATT',
|
|
473
|
+
transform: (v) => (v ? 1 : 0),
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
key: 'paginaDefault',
|
|
477
|
+
dbField: 'PAGDEF',
|
|
478
|
+
transform: (v) => String(v),
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
key: 'nummac',
|
|
482
|
+
dbField: 'NUMMAC',
|
|
483
|
+
transform: (v) => Number(v),
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
key: 'ragSocCli',
|
|
487
|
+
dbField: 'RAGSOCCLI',
|
|
488
|
+
transform: (v) => String(v),
|
|
489
|
+
},
|
|
490
|
+
];
|
|
491
|
+
if (allowPrivilegedFields) {
|
|
492
|
+
optionalFields.push({
|
|
493
|
+
key: 'flagSuper',
|
|
494
|
+
dbField: 'FLGSUPER',
|
|
495
|
+
transform: (v) => (v ? 1 : 0),
|
|
496
|
+
}, {
|
|
497
|
+
key: 'flagAdminConfigurator',
|
|
498
|
+
dbField: 'FLGADMINCONFIG',
|
|
499
|
+
transform: (v) => (v ? 1 : 0),
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
for (const field of optionalFields) {
|
|
503
|
+
const value = registrationData[field.key];
|
|
504
|
+
if (value !== undefined && value !== null) {
|
|
505
|
+
utentiConfigFields.push(field.dbField);
|
|
506
|
+
utentiConfigPlaceholders.push('?');
|
|
507
|
+
utentiConfigParams.push(field.transform ? field.transform(value) : value);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
const queryUtentiConfig = `INSERT INTO UTENTI_CONFIG (${utentiConfigFields.join(', ')}) VALUES (${utentiConfigPlaceholders.join(', ')})`;
|
|
511
|
+
yield Orm_1.Orm.transactionQuery(transaction, queryUtentiConfig, utentiConfigParams);
|
|
512
|
+
return newCodiceUtente;
|
|
513
|
+
}));
|
|
371
514
|
yield this.filtriService.upsertFiltriUtente(codiceUtente, registrationData);
|
|
372
515
|
if (allowPrivilegedFields && !!registrationData.roles && registrationData.roles.length > 0) {
|
|
373
516
|
yield this.permissionService.assignRolesToUser(codiceUtente, registrationData.roles);
|
|
@@ -384,20 +527,45 @@ let UserService = class UserService {
|
|
|
384
527
|
}
|
|
385
528
|
});
|
|
386
529
|
}
|
|
530
|
+
/**
|
|
531
|
+
* Aggiorna il profilo utente e i filtri. Le modifiche a stato, ruoli, grant e flag amministrativi richiedono
|
|
532
|
+
* `allowPrivilegedChanges`; gli array ruolo/grant passati in un flusso fidato sostituiscono le assegnazioni.
|
|
533
|
+
*/
|
|
387
534
|
updateUser(codiceUtente, user, options) {
|
|
388
535
|
return __awaiter(this, void 0, void 0, function* () {
|
|
536
|
+
var _a, _b, _c, _d;
|
|
389
537
|
try {
|
|
390
538
|
if (!codiceUtente)
|
|
391
539
|
throw new Error('Impossibile aggiornare senza codice utente.');
|
|
392
540
|
const allowPrivilegedChanges = (options === null || options === void 0 ? void 0 : options.allowPrivilegedChanges) === true;
|
|
541
|
+
for (const value of [user.flagDueFattori, user.passwordlessLoginEnabled]) {
|
|
542
|
+
if (value !== undefined && typeof value !== 'boolean')
|
|
543
|
+
throw new common_1.BadRequestException('Le policy di autenticazione devono essere booleane.');
|
|
544
|
+
}
|
|
393
545
|
if (!allowPrivilegedChanges &&
|
|
394
546
|
(user.statoRegistrazione !== undefined ||
|
|
395
547
|
user.flagSuper !== undefined ||
|
|
396
548
|
user.flagAdminConfigurator !== undefined ||
|
|
549
|
+
user.passwordLoginEnabled !== undefined ||
|
|
550
|
+
user.passwordlessLoginEnabled !== undefined ||
|
|
551
|
+
user.flagDueFattori !== undefined ||
|
|
397
552
|
user.roles !== undefined ||
|
|
398
553
|
user.permissions !== undefined)) {
|
|
399
554
|
throw new Error('Non e consentito modificare campi privilegiati.');
|
|
400
555
|
}
|
|
556
|
+
if (user.flagDueFattori !== undefined || user.passwordlessLoginEnabled !== undefined || user.email !== undefined) {
|
|
557
|
+
const current = yield this.getAuthenticatedUserSnapshot(codiceUtente);
|
|
558
|
+
if (!current)
|
|
559
|
+
throw new common_1.BadRequestException('Utente non trovato.');
|
|
560
|
+
const twoFactor = (_a = user.flagDueFattori) !== null && _a !== void 0 ? _a : current.flagDueFattori;
|
|
561
|
+
const passwordless = (_b = user.passwordlessLoginEnabled) !== null && _b !== void 0 ? _b : current.passwordlessLoginEnabled;
|
|
562
|
+
if (passwordless && !twoFactor)
|
|
563
|
+
throw new common_1.BadRequestException('Il login senza password richiede il codice di accesso attivo.');
|
|
564
|
+
if (twoFactor && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(((_d = (_c = user.email) !== null && _c !== void 0 ? _c : current.email) !== null && _d !== void 0 ? _d : '').trim())) {
|
|
565
|
+
throw new common_1.BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
const { configColumns } = yield this.validateApplicationFields(user);
|
|
401
569
|
const utentiUpdates = [];
|
|
402
570
|
const utentiParams = [];
|
|
403
571
|
if (user.email !== undefined) {
|
|
@@ -435,7 +603,11 @@ let UserService = class UserService {
|
|
|
435
603
|
}
|
|
436
604
|
if (user.flagDueFattori !== undefined) {
|
|
437
605
|
utentiConfigUpdates.push('flg2fatt = ?');
|
|
438
|
-
utentiConfigParams.push(user.flagDueFattori);
|
|
606
|
+
utentiConfigParams.push(user.flagDueFattori ? 1 : 0);
|
|
607
|
+
}
|
|
608
|
+
if (user.passwordlessLoginEnabled !== undefined) {
|
|
609
|
+
utentiConfigUpdates.push('flgpwdless = ?');
|
|
610
|
+
utentiConfigParams.push(user.passwordlessLoginEnabled ? 1 : 0);
|
|
439
611
|
}
|
|
440
612
|
if (user.codiceLingua !== undefined) {
|
|
441
613
|
utentiConfigUpdates.push('codlingua = ?');
|
|
@@ -453,6 +625,10 @@ let UserService = class UserService {
|
|
|
453
625
|
utentiConfigUpdates.push('flgadminconfig = ?');
|
|
454
626
|
utentiConfigParams.push(user.flagAdminConfigurator);
|
|
455
627
|
}
|
|
628
|
+
if (allowPrivilegedChanges && user.passwordLoginEnabled !== undefined) {
|
|
629
|
+
utentiConfigUpdates.push('flgpassword = ?');
|
|
630
|
+
utentiConfigParams.push(user.passwordLoginEnabled ? 1 : 0);
|
|
631
|
+
}
|
|
456
632
|
if (user.paginaDefault !== undefined) {
|
|
457
633
|
utentiConfigUpdates.push('pagdef = ?');
|
|
458
634
|
utentiConfigParams.push(user.paginaDefault);
|
|
@@ -461,7 +637,7 @@ let UserService = class UserService {
|
|
|
461
637
|
utentiConfigUpdates.push('json_metadata = ?');
|
|
462
638
|
utentiConfigParams.push(user.jsonMetadata);
|
|
463
639
|
}
|
|
464
|
-
if (user.ragSocCli !== undefined) {
|
|
640
|
+
if (user.ragSocCli !== undefined && (user.ragSocCli !== null || (configColumns === null || configColumns === void 0 ? void 0 : configColumns.has('RAGSOCCLI')))) {
|
|
465
641
|
utentiConfigUpdates.push('ragsoccli = ?');
|
|
466
642
|
utentiConfigParams.push(user.ragSocCli);
|
|
467
643
|
}
|
|
@@ -470,10 +646,10 @@ let UserService = class UserService {
|
|
|
470
646
|
utentiConfigParams.push(codiceUtente);
|
|
471
647
|
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, queryUtentiConfig, utentiConfigParams);
|
|
472
648
|
}
|
|
473
|
-
if (allowPrivilegedChanges &&
|
|
649
|
+
if (allowPrivilegedChanges && Array.isArray(user.roles)) {
|
|
474
650
|
yield this.permissionService.assignRolesToUser(codiceUtente, user.roles);
|
|
475
651
|
}
|
|
476
|
-
if (allowPrivilegedChanges &&
|
|
652
|
+
if (allowPrivilegedChanges && Array.isArray(user.permissions)) {
|
|
477
653
|
yield this.permissionService.assignPermissionsToUser(codiceUtente, user.permissions);
|
|
478
654
|
}
|
|
479
655
|
yield this.filtriService.upsertFiltriUtente(codiceUtente, user);
|
|
@@ -485,64 +661,10 @@ let UserService = class UserService {
|
|
|
485
661
|
}
|
|
486
662
|
updateUserFilters(codiceUtente, user) {
|
|
487
663
|
return __awaiter(this, void 0, void 0, function* () {
|
|
488
|
-
|
|
489
|
-
if (!codiceUtente || codiceUtente <= 0) {
|
|
490
|
-
throw new Error('Codice utente non valido');
|
|
491
|
-
}
|
|
492
|
-
const fieldMapping = {
|
|
493
|
-
numRep: { dbField: 'NUMREP', type: 'number' },
|
|
494
|
-
idxPers: { dbField: 'IDXPERS', type: 'number' },
|
|
495
|
-
codCliSuper: { dbField: 'CODCLISUPER', type: 'number' },
|
|
496
|
-
codAge: { dbField: 'CODAGE', type: 'number' },
|
|
497
|
-
codCliCol: { dbField: 'CODCLICOL', type: 'number' },
|
|
498
|
-
codiceClienti: { dbField: 'CODCLIENTI', type: 'string' },
|
|
499
|
-
tipFil: { dbField: 'TIPFIL', type: 'number' },
|
|
500
|
-
idxPostazione: { dbField: 'IDXPOS', type: 'number' },
|
|
501
|
-
};
|
|
502
|
-
const fieldsToUpdate = Object.entries(fieldMapping)
|
|
503
|
-
.filter(([tsField]) => {
|
|
504
|
-
const value = user[tsField];
|
|
505
|
-
return value !== undefined && value !== null;
|
|
506
|
-
})
|
|
507
|
-
.map(([tsField, config]) => {
|
|
508
|
-
const value = user[tsField];
|
|
509
|
-
if (config.type === 'number' && typeof value !== 'number') {
|
|
510
|
-
throw new Error(`Il campo ${tsField} deve essere un numero`);
|
|
511
|
-
}
|
|
512
|
-
if (config.type === 'string' && typeof value !== 'string') {
|
|
513
|
-
throw new Error(`Il campo ${tsField} deve essere una stringa`);
|
|
514
|
-
}
|
|
515
|
-
return { tsField, dbField: config.dbField, value };
|
|
516
|
-
});
|
|
517
|
-
if (fieldsToUpdate.length === 0) {
|
|
518
|
-
return;
|
|
519
|
-
}
|
|
520
|
-
yield this.executeInTransaction(() => __awaiter(this, void 0, void 0, function* () {
|
|
521
|
-
const checkQuery = `SELECT COUNT(*) as CNT FROM FILTRI WHERE CODUTE = ?`;
|
|
522
|
-
const existingRecord = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, checkQuery, [
|
|
523
|
-
codiceUtente,
|
|
524
|
-
]);
|
|
525
|
-
const exists = existingRecord[0].CNT > 0;
|
|
526
|
-
if (exists) {
|
|
527
|
-
const updates = fieldsToUpdate.map((f) => `${f.dbField} = ?`).join(', ');
|
|
528
|
-
const values = [...fieldsToUpdate.map((f) => f.value), codiceUtente];
|
|
529
|
-
const updateQuery = `UPDATE FILTRI SET ${updates} WHERE CODUTE = ?`;
|
|
530
|
-
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, updateQuery, values);
|
|
531
|
-
}
|
|
532
|
-
else {
|
|
533
|
-
const dbFields = ['CODUTE', ...fieldsToUpdate.map((f) => f.dbField)];
|
|
534
|
-
const placeholders = dbFields.map(() => '?');
|
|
535
|
-
const insertValues = [codiceUtente, ...fieldsToUpdate.map((f) => f.value)];
|
|
536
|
-
const insertQuery = `INSERT INTO FILTRI (${dbFields.join(', ')}) VALUES (${placeholders.join(', ')})`;
|
|
537
|
-
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, insertQuery, insertValues);
|
|
538
|
-
}
|
|
539
|
-
}));
|
|
540
|
-
}
|
|
541
|
-
catch (error) {
|
|
542
|
-
throw new Error(`Errore durante l'aggiornamento dei filtri per utente ${codiceUtente}: ${error.message}`);
|
|
543
|
-
}
|
|
664
|
+
yield this.filtriService.upsertFiltriUtente(codiceUtente, user);
|
|
544
665
|
});
|
|
545
666
|
}
|
|
667
|
+
/** Eliminazione logica: imposta lo stato `DELETE` senza cancellare lo storico o i collegamenti SSO. */
|
|
546
668
|
deleteUser(codiceCliente) {
|
|
547
669
|
return __awaiter(this, void 0, void 0, function* () {
|
|
548
670
|
try {
|
|
@@ -557,6 +679,7 @@ let UserService = class UserService {
|
|
|
557
679
|
}
|
|
558
680
|
});
|
|
559
681
|
}
|
|
682
|
+
/** Cambia esplicitamente lo stato di registrazione; usare questa API per blocco, conferma o eliminazione logica. */
|
|
560
683
|
setStato(codiceCliente, statoRegistrazione) {
|
|
561
684
|
return __awaiter(this, void 0, void 0, function* () {
|
|
562
685
|
try {
|
|
@@ -574,15 +697,57 @@ let UserService = class UserService {
|
|
|
574
697
|
setGdpr(codiceUtente) {
|
|
575
698
|
return __awaiter(this, void 0, void 0, function* () {
|
|
576
699
|
try {
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
700
|
+
return yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, [
|
|
701
|
+
{ query: 'INSERT INTO UTENTI_GDPR (CODUTE, GDPR) VALUES (?, ?)', params: [codiceUtente, 'true'] },
|
|
702
|
+
{ query: 'UPDATE UTENTI SET FLGGDPR = 1, DATGDPR = CURRENT_DATE WHERE CODUTE = ?', params: [codiceUtente] },
|
|
703
|
+
]);
|
|
580
704
|
}
|
|
581
705
|
catch (error) {
|
|
582
706
|
throw error;
|
|
583
707
|
}
|
|
584
708
|
});
|
|
585
709
|
}
|
|
710
|
+
/**
|
|
711
|
+
* Forza l'invio dell'email di reset password per un utente. Operazione amministrativa.
|
|
712
|
+
* Richiede un servizio email configurato: altrimenti solleva ACCESSI_EMAIL_NOT_CONFIGURED.
|
|
713
|
+
*/
|
|
714
|
+
forcePasswordReset(codiceUtente) {
|
|
715
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
716
|
+
var _a, _b;
|
|
717
|
+
(0, emailConfiguration_1.assertEmailConfigured)(this.accessiOptions);
|
|
718
|
+
const rows = yield this.getUsers({ codiceUtente });
|
|
719
|
+
const email = (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.utente) === null || _b === void 0 ? void 0 : _b.email;
|
|
720
|
+
if (typeof email !== 'string' || email.trim() === '') {
|
|
721
|
+
throw new common_1.NotFoundException(`Nessun utente con email per il codice ${codiceUtente}.`);
|
|
722
|
+
}
|
|
723
|
+
yield this.emailService.sendPasswordResetEmail(email);
|
|
724
|
+
});
|
|
725
|
+
}
|
|
726
|
+
/**
|
|
727
|
+
* Forza l'invio dell'email di reset a tutti gli utenti la cui password non e ancora nel formato
|
|
728
|
+
* moderno (`scrypt$...`), cioe' legacy grezza o `scrypt-legacy` non piu verificabile. Utile quando
|
|
729
|
+
* la `encryptionKey` storica e perduta. Richiede email configurata. Ritorna quanti utenti hanno
|
|
730
|
+
* ricevuto l'email.
|
|
731
|
+
*/
|
|
732
|
+
forcePasswordResetForLegacyPasswords() {
|
|
733
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
734
|
+
(0, emailConfiguration_1.assertEmailConfigured)(this.accessiOptions);
|
|
735
|
+
const rows = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT U.CODUTE AS codice_utente, U.USRNAME AS email
|
|
736
|
+
FROM UTENTI U
|
|
737
|
+
JOIN UTENTI_PWD P ON P.CODUTE = U.CODUTE
|
|
738
|
+
WHERE P.PWD IS NOT NULL AND P.PWD NOT STARTING WITH 'scrypt$'`, [], false);
|
|
739
|
+
let sent = 0;
|
|
740
|
+
for (const row of rows) {
|
|
741
|
+
const raw = Utilities_1.RestUtilities.convertKeysToCamelCase(row);
|
|
742
|
+
const email = typeof raw.email === 'string' ? raw.email.trim() : '';
|
|
743
|
+
if (email === '')
|
|
744
|
+
continue;
|
|
745
|
+
yield this.emailService.sendPasswordResetEmail(email);
|
|
746
|
+
sent += 1;
|
|
747
|
+
}
|
|
748
|
+
return sent;
|
|
749
|
+
});
|
|
750
|
+
}
|
|
586
751
|
};
|
|
587
752
|
exports.UserService = UserService;
|
|
588
753
|
exports.UserService = UserService = __decorate([
|