emilsoftware-utilities 2.0.0-dev.3 → 2.0.0-dev.31
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 +3130 -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 +21 -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 +34 -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 +112 -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 +691 -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.d.ts +1 -0
- package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js +9 -1
- package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
- package/dist/accessi-module/Dtos/GetMenusResponse.d.ts +1 -0
- package/dist/accessi-module/Dtos/GetMenusResponse.js +9 -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 +19 -0
- package/dist/accessi-module/Dtos/UserDto.js +114 -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 +611 -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 +488 -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 +98 -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.31.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,17 +20,46 @@ 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");
|
|
47
|
+
/**
|
|
48
|
+
* Flag applicativi UTENTI_CONFIG esposti e gestibili dal modulo.
|
|
49
|
+
* `key` = nome camelCase nel DTO, `column` = colonna fisica, `alias` = alias SELECT.
|
|
50
|
+
*/
|
|
51
|
+
const APPLICATION_FLAG_FIELDS = [
|
|
52
|
+
{ key: 'flagMop', column: 'FLGMOP', alias: 'flag_mop' },
|
|
53
|
+
{ key: 'flagPiana', column: 'FLGPIANA', alias: 'flag_piana' },
|
|
54
|
+
{ key: 'flagAddetti', column: 'FLGADDETTI', alias: 'flag_addetti' },
|
|
55
|
+
{ key: 'flagOspiti', column: 'FLGOSPITI', alias: 'flag_ospiti' },
|
|
56
|
+
{ key: 'flagPianaRfid', column: 'FLGPIANARFID', alias: 'flag_piana_rfid' },
|
|
57
|
+
{ key: 'flagConta', column: 'FLGCONTA', alias: 'flag_conta' },
|
|
58
|
+
{ key: 'flagCubi', column: 'FLGCUBI', alias: 'flag_cubi' },
|
|
59
|
+
{ key: 'flagCicliPass', column: 'FLGCICLPASS', alias: 'flag_cicli_pass' },
|
|
60
|
+
{ key: 'flagDipendenti', column: 'FLGDIPENDENTI', alias: 'flag_dipendenti' },
|
|
61
|
+
{ key: 'flagInventari', column: 'FLGINVENTARI', alias: 'flag_inventari' },
|
|
62
|
+
];
|
|
34
63
|
let UserService = class UserService {
|
|
35
64
|
constructor(accessiOptions, emailService, permissionService, filtriService) {
|
|
36
65
|
this.accessiOptions = accessiOptions;
|
|
@@ -38,12 +67,38 @@ let UserService = class UserService {
|
|
|
38
67
|
this.permissionService = permissionService;
|
|
39
68
|
this.filtriService = filtriService;
|
|
40
69
|
}
|
|
70
|
+
validateApplicationFields(value) {
|
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
const applicationFields = [['nummac', 'NUMMAC'], ['ragSocCli', 'RAGSOCCLI']];
|
|
73
|
+
let configColumns;
|
|
74
|
+
if (applicationFields.some(([key]) => value[key] !== undefined)) {
|
|
75
|
+
configColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI_CONFIG');
|
|
76
|
+
for (const [key, column] of applicationFields) {
|
|
77
|
+
if (value[key] !== undefined && value[key] !== null && !configColumns.has(column)) {
|
|
78
|
+
throw new common_1.BadRequestException(`Campo applicativo non configurato: UTENTI_CONFIG.${column}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const filterKeys = Object.keys(FiltriUtente_1.FILTRI_UTENTE_DB_MAPPING);
|
|
83
|
+
if (filterKeys.some(key => value[key] !== undefined && value[key] !== null && value[key] !== '')) {
|
|
84
|
+
yield this.filtriService.validateSupportedFields(value);
|
|
85
|
+
}
|
|
86
|
+
return { configColumns };
|
|
87
|
+
});
|
|
88
|
+
}
|
|
41
89
|
normalizeDatabaseBoolean(value) {
|
|
42
90
|
return value === true || value === 1 || value === '1';
|
|
43
91
|
}
|
|
92
|
+
normalizeUserFlags(user) {
|
|
93
|
+
const normalized = 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), enableIa: this.normalizeDatabaseBoolean(user.enableIa) });
|
|
94
|
+
for (const field of APPLICATION_FLAG_FIELDS) {
|
|
95
|
+
normalized[field.key] = this.normalizeDatabaseBoolean(user[field.key]);
|
|
96
|
+
}
|
|
97
|
+
return normalized;
|
|
98
|
+
}
|
|
44
99
|
normalizeEmail(email) {
|
|
45
100
|
if (typeof email !== 'string' || email.trim() === '') {
|
|
46
|
-
throw new
|
|
101
|
+
throw new common_1.BadRequestException({ code: 'ACCESSI_EMAIL_REQUIRED', message: "L'email è obbligatoria." });
|
|
47
102
|
}
|
|
48
103
|
return email.trim().toLowerCase();
|
|
49
104
|
}
|
|
@@ -53,10 +108,11 @@ let UserService = class UserService {
|
|
|
53
108
|
const existingUser = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase)[0];
|
|
54
109
|
if ((existingUser === null || existingUser === void 0 ? void 0 : existingUser.codiceUtente) &&
|
|
55
110
|
(!currentUserCode || existingUser.codiceUtente !== currentUserCode)) {
|
|
56
|
-
throw new
|
|
111
|
+
throw new common_1.ConflictException({ code: 'ACCESSI_EMAIL_ALREADY_EXISTS', message: "L'email è già associata a un utente Accessi." });
|
|
57
112
|
}
|
|
58
113
|
});
|
|
59
114
|
}
|
|
115
|
+
/** Determina se l'utente puo amministrare il configuratore Accessi (`FLGADMINCONFIG`). */
|
|
60
116
|
isAdminConfigurator(codiceUtente) {
|
|
61
117
|
return __awaiter(this, void 0, void 0, function* () {
|
|
62
118
|
var _a;
|
|
@@ -65,32 +121,35 @@ let UserService = class UserService {
|
|
|
65
121
|
}
|
|
66
122
|
const query = `SELECT FLGADMINCONFIG AS flag_admin_configurator FROM UTENTI_CONFIG WHERE CODUTE = ?`;
|
|
67
123
|
const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [codiceUtente]);
|
|
68
|
-
if (
|
|
124
|
+
if (result.length === 0) {
|
|
69
125
|
return false;
|
|
70
126
|
}
|
|
71
127
|
const mapped = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
72
|
-
|
|
73
|
-
if (typeof flagValue === 'boolean') {
|
|
74
|
-
return flagValue;
|
|
75
|
-
}
|
|
76
|
-
return flagValue === 1;
|
|
128
|
+
return this.normalizeDatabaseBoolean((_a = mapped[0]) === null || _a === void 0 ? void 0 : _a.flagAdminConfigurator);
|
|
77
129
|
});
|
|
78
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Legge il minimo profilo autorevole usato da JWT e middleware. Restituisce `null` per utenti inesistenti.
|
|
133
|
+
* Non usare `UserDto` dal token per decisioni di sicurezza: i flag vengono sempre riletti qui.
|
|
134
|
+
*/
|
|
79
135
|
getAuthenticatedUserSnapshot(codiceUtente) {
|
|
80
136
|
return __awaiter(this, void 0, void 0, function* () {
|
|
81
137
|
if (!codiceUtente || codiceUtente <= 0) {
|
|
82
138
|
return null;
|
|
83
139
|
}
|
|
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
|
-
|
|
140
|
+
const result = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `
|
|
141
|
+
SELECT
|
|
142
|
+
U.CODUTE AS codice_utente,
|
|
143
|
+
U.USRNAME AS email,
|
|
144
|
+
U.STAREG AS stato_registrazione,
|
|
145
|
+
C.FLGSUPER AS flag_super,
|
|
146
|
+
C.FLGADMINCONFIG AS flag_admin_configurator
|
|
147
|
+
, C.FLG2FATT AS flag_due_fattori
|
|
148
|
+
, C.FLGPWDLESS AS passwordless_login_enabled
|
|
149
|
+
, COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled
|
|
150
|
+
FROM UTENTI U
|
|
151
|
+
LEFT JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
|
|
152
|
+
WHERE U.CODUTE = ?
|
|
94
153
|
`, [codiceUtente]);
|
|
95
154
|
const user = result.map(Utilities_1.RestUtilities.convertKeysToCamelCase)[0];
|
|
96
155
|
if (!(user === null || user === void 0 ? void 0 : user.codiceUtente)) {
|
|
@@ -102,70 +161,139 @@ let UserService = class UserService {
|
|
|
102
161
|
statoRegistrazione: Number(user.statoRegistrazione),
|
|
103
162
|
flagSuper: this.normalizeDatabaseBoolean(user.flagSuper),
|
|
104
163
|
flagAdminConfigurator: this.normalizeDatabaseBoolean(user.flagAdminConfigurator),
|
|
164
|
+
flagDueFattori: this.normalizeDatabaseBoolean(user.flagDueFattori),
|
|
165
|
+
passwordlessLoginEnabled: this.normalizeDatabaseBoolean(user.passwordlessLoginEnabled),
|
|
166
|
+
passwordLoginEnabled: this.normalizeDatabaseBoolean(user.passwordLoginEnabled),
|
|
105
167
|
};
|
|
106
168
|
});
|
|
107
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Elenca gli utenti con filtri opzionali. Grant e campi estesi sono costosi e vengono caricati soltanto
|
|
172
|
+
* quando richiesti esplicitamente nelle opzioni; usare filtri puntuali nei flussi di autenticazione.
|
|
173
|
+
*/
|
|
108
174
|
getUsers(filters, options) {
|
|
109
175
|
return __awaiter(this, void 0, void 0, function* () {
|
|
176
|
+
var _a, _b, _c, _d, _e;
|
|
110
177
|
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
|
-
|
|
178
|
+
const configColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI_CONFIG');
|
|
179
|
+
const filterColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'FILTRI');
|
|
180
|
+
const utentiColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI');
|
|
181
|
+
// Paginazione opzionale con limiti sani: il default resta "tutti gli utenti".
|
|
182
|
+
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
|
|
183
|
+
? Math.min(filters === null || filters === void 0 ? void 0 : filters.limit, 1000)
|
|
184
|
+
: undefined;
|
|
185
|
+
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
|
|
186
|
+
? Math.trunc(filters === null || filters === void 0 ? void 0 : filters.offset)
|
|
187
|
+
: 0;
|
|
188
|
+
const pagination = `${limit !== undefined ? ` FIRST ${limit}` : ''}${offset > 0 ? ` SKIP ${offset}` : ''}`;
|
|
189
|
+
let query = `
|
|
190
|
+
SELECT${pagination}
|
|
191
|
+
U.CODUTE as codice_utente,
|
|
192
|
+
U.USRNAME as email,
|
|
193
|
+
U.FLGGDPR as flag_gdpr,
|
|
194
|
+
U.DATGDPR as data_gdpr,
|
|
195
|
+
U.DATINS as data_inserimento,
|
|
196
|
+
U.DATSCAPWD as data_scadenza_password,
|
|
197
|
+
U.DATLASTLOGIN as data_last_login,
|
|
198
|
+
U.STAREG as stato_registrazione,
|
|
199
|
+
${(0, optionalColumns_1.optionalColumn)(utentiColumns, 'ENABLEIA', 'U', 'enable_ia')},
|
|
200
|
+
G.COGNOME as cognome,
|
|
201
|
+
G.NOME as nome,
|
|
202
|
+
G.AVATAR as avatar,
|
|
203
|
+
G.FLG2FATT as flag_due_fattori,
|
|
204
|
+
G.FLGPWDLESS as passwordless_login_enabled,
|
|
205
|
+
G.CODLINGUA as codice_lingua,
|
|
206
|
+
G.CELLULARE as cellulare,
|
|
207
|
+
G.FLGSUPER as flag_super,
|
|
208
|
+
G.FLGADMINCONFIG as flag_admin_configurator,
|
|
209
|
+
COALESCE(G.FLGPASSWORD, 1) as password_login_enabled,
|
|
210
|
+
G.PAGDEF as pagina_default,
|
|
211
|
+
G.JSON_METADATA as json_metadata,
|
|
212
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'RAGSOCCLI', 'G', 'rag_soc_cli', false)},
|
|
213
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'NUMMAC', 'G', 'nummac')},
|
|
214
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'CAUMOV', 'G', 'caumov')},
|
|
215
|
+
${APPLICATION_FLAG_FIELDS.map((field) => (0, optionalColumns_1.optionalColumn)(configColumns, field.column, 'G', field.alias)).join(',\n ')},
|
|
216
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODDIP', 'F', 'cod_dipendente')},
|
|
217
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'NUMREP', 'F', 'num_rep', true)},
|
|
218
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'IDXPERS', 'F', 'idx_pers', true)},
|
|
219
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLISUPER', 'F', 'cod_cli_super', true)},
|
|
220
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODAGE', 'F', 'cod_age', true)},
|
|
221
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLICOL', 'F', 'cod_cli_col', true)},
|
|
222
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'CODCLIENTI', 'F', 'cod_clienti', false)},
|
|
223
|
+
F.TIPFIL AS tip_fil,
|
|
224
|
+
${(0, optionalColumns_1.optionalColumn)(filterColumns, 'IDXPOS', 'F', 'idx_postazione', true)}
|
|
225
|
+
FROM UTENTI U
|
|
226
|
+
INNER JOIN UTENTI_CONFIG G ON U.CODUTE = G.CODUTE
|
|
227
|
+
LEFT JOIN FILTRI F ON F.CODUTE = U.CODUTE
|
|
228
|
+
WHERE 1=1
|
|
145
229
|
`;
|
|
146
230
|
const queryParams = [];
|
|
147
231
|
if (filters === null || filters === void 0 ? void 0 : filters.email) {
|
|
148
232
|
query += ` AND LOWER(U.USRNAME) = ? `;
|
|
149
233
|
queryParams.push(filters.email.trim().toLowerCase());
|
|
150
234
|
}
|
|
151
|
-
if (filters === null || filters === void 0 ? void 0 : filters.codiceUtente) {
|
|
152
|
-
|
|
153
|
-
|
|
235
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.codiceUtente) !== undefined) {
|
|
236
|
+
const codes = (Array.isArray(filters.codiceUtente) ? filters.codiceUtente : [filters.codiceUtente])
|
|
237
|
+
.map((value) => Number(value))
|
|
238
|
+
.filter((value) => Number.isFinite(value) && value > 0);
|
|
239
|
+
if (codes.length === 0) {
|
|
240
|
+
return [];
|
|
241
|
+
}
|
|
242
|
+
query += ` AND U.CODUTE IN (${codes.map(() => '?').join(', ')}) `;
|
|
243
|
+
queryParams.push(...codes);
|
|
244
|
+
}
|
|
245
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.numRep) !== undefined) {
|
|
246
|
+
const reparti = (Array.isArray(filters.numRep) ? filters.numRep : [filters.numRep])
|
|
247
|
+
.map((value) => Number(value))
|
|
248
|
+
.filter((value) => Number.isFinite(value));
|
|
249
|
+
if (reparti.length === 0) {
|
|
250
|
+
return [];
|
|
251
|
+
}
|
|
252
|
+
query += ` AND F.NUMREP IN (${reparti.map(() => '?').join(', ')}) `;
|
|
253
|
+
queryParams.push(...reparti);
|
|
254
|
+
}
|
|
255
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.codDipendente) !== undefined) {
|
|
256
|
+
query += ` AND F.CODDIP = ? `;
|
|
257
|
+
queryParams.push(Number(filters.codDipendente));
|
|
258
|
+
}
|
|
259
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.tipFil) !== undefined) {
|
|
260
|
+
query += ` AND F.TIPFIL = ? `;
|
|
261
|
+
queryParams.push(Number(filters.tipFil));
|
|
262
|
+
}
|
|
263
|
+
if (filters === null || filters === void 0 ? void 0 : filters.cellulare) {
|
|
264
|
+
query += ` AND TRIM(G.CELLULARE) = ? `;
|
|
265
|
+
queryParams.push(String(filters.cellulare).trim());
|
|
266
|
+
}
|
|
267
|
+
if (filters === null || filters === void 0 ? void 0 : filters.cellute) {
|
|
268
|
+
query += ` AND TRIM(U.CELLUTE) = ? `;
|
|
269
|
+
queryParams.push(String(filters.cellute).trim());
|
|
270
|
+
}
|
|
271
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.flagSuper) !== undefined) {
|
|
272
|
+
query += filters.flagSuper ? ` AND COALESCE(G.FLGSUPER, 0) <> 0 ` : ` AND COALESCE(G.FLGSUPER, 0) = 0 `;
|
|
154
273
|
}
|
|
155
274
|
query += ` ORDER BY U.CODUTE DESC `;
|
|
156
275
|
let users = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, queryParams));
|
|
157
|
-
users = users.map(Utilities_1.RestUtilities.convertKeysToCamelCase);
|
|
276
|
+
users = users.map(Utilities_1.RestUtilities.convertKeysToCamelCase).map(user => this.normalizeUserFlags(user));
|
|
158
277
|
const usersResponse = [];
|
|
278
|
+
// I campi estensione sono caricati una volta per tabella (non una per utente) in query IN
|
|
279
|
+
// suddivise in blocchi per non superare i limiti di parametri del driver.
|
|
280
|
+
const extensionFieldsByUser = (options === null || options === void 0 ? void 0 : options.includeExtensionFields)
|
|
281
|
+
? yield this.loadExtensionFieldsForUsers(users.map((user) => user.codiceUtente))
|
|
282
|
+
: undefined;
|
|
283
|
+
// I grant sono caricati in batch (query IN) invece che utente per utente.
|
|
284
|
+
const grantsByUser = (options === null || options === void 0 ? void 0 : options.includeGrants)
|
|
285
|
+
? yield this.permissionService.getUsersRolesAndGrants(users.map((user) => user.codiceUtente))
|
|
286
|
+
: undefined;
|
|
159
287
|
for (const user of users) {
|
|
160
|
-
let userGrants
|
|
288
|
+
let userGrants;
|
|
161
289
|
if (options === null || options === void 0 ? void 0 : options.includeGrants) {
|
|
162
|
-
userGrants =
|
|
290
|
+
userGrants = grantsByUser === null || grantsByUser === void 0 ? void 0 : grantsByUser.get(user.codiceUtente);
|
|
163
291
|
}
|
|
164
|
-
let extensionFields
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
extensionFields[ext.objectKey] =
|
|
292
|
+
let extensionFields;
|
|
293
|
+
if (options === null || options === void 0 ? void 0 : options.includeExtensionFields) {
|
|
294
|
+
extensionFields = {};
|
|
295
|
+
for (const ext of (_c = this.accessiOptions.extensionFieldsOptions) !== null && _c !== void 0 ? _c : []) {
|
|
296
|
+
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
297
|
}
|
|
170
298
|
}
|
|
171
299
|
usersResponse.push({
|
|
@@ -181,6 +309,68 @@ let UserService = class UserService {
|
|
|
181
309
|
}
|
|
182
310
|
});
|
|
183
311
|
}
|
|
312
|
+
/** Conteggio utenti con gli stessi filtri di `getUsers`, per la paginazione (header X-Total-Count). */
|
|
313
|
+
countUsers(filters) {
|
|
314
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
315
|
+
var _a, _b;
|
|
316
|
+
const conditions = [];
|
|
317
|
+
const params = [];
|
|
318
|
+
if (filters === null || filters === void 0 ? void 0 : filters.email) {
|
|
319
|
+
conditions.push('LOWER(U.USRNAME) = ?');
|
|
320
|
+
params.push(filters.email.trim().toLowerCase());
|
|
321
|
+
}
|
|
322
|
+
if (filters === null || filters === void 0 ? void 0 : filters.codiceUtente) {
|
|
323
|
+
conditions.push('U.CODUTE = ?');
|
|
324
|
+
params.push(filters.codiceUtente);
|
|
325
|
+
}
|
|
326
|
+
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(' ')}`;
|
|
327
|
+
const rows = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, params, false));
|
|
328
|
+
const row = rows[0];
|
|
329
|
+
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;
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
loadExtensionFieldsForUsers(codiceUtenti) {
|
|
333
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
334
|
+
var _a;
|
|
335
|
+
const byObjectKey = new Map();
|
|
336
|
+
const extensions = (_a = this.accessiOptions.extensionFieldsOptions) !== null && _a !== void 0 ? _a : [];
|
|
337
|
+
const uniqueCodes = Array.from(new Set(codiceUtenti));
|
|
338
|
+
for (const ext of extensions) {
|
|
339
|
+
const grouped = new Map();
|
|
340
|
+
for (const chunk of this.chunkArray(uniqueCodes, 500)) {
|
|
341
|
+
if (chunk.length === 0) {
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
const placeholders = chunk.map(() => '?').join(', ');
|
|
345
|
+
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);
|
|
346
|
+
for (const row of rows) {
|
|
347
|
+
const { __joinkey } = row, rest = __rest(row, ["__joinkey"]);
|
|
348
|
+
const key = Number(__joinkey);
|
|
349
|
+
if (!Number.isFinite(key)) {
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
const bucket = grouped.get(key);
|
|
353
|
+
if (bucket) {
|
|
354
|
+
bucket.push(rest);
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
grouped.set(key, [rest]);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
byObjectKey.set(ext.objectKey, grouped);
|
|
362
|
+
}
|
|
363
|
+
return byObjectKey;
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
chunkArray(items, size) {
|
|
367
|
+
const chunks = [];
|
|
368
|
+
for (let index = 0; index < items.length; index += size) {
|
|
369
|
+
chunks.push(items.slice(index, index + size));
|
|
370
|
+
}
|
|
371
|
+
return chunks;
|
|
372
|
+
}
|
|
373
|
+
/** Cerca il codice interno per email normalizzata. Il chiamante deve gestire il caso senza righe. */
|
|
184
374
|
getCodiceUtenteByEmail(email) {
|
|
185
375
|
return __awaiter(this, void 0, void 0, function* () {
|
|
186
376
|
try {
|
|
@@ -195,179 +385,169 @@ let UserService = class UserService {
|
|
|
195
385
|
}
|
|
196
386
|
});
|
|
197
387
|
}
|
|
388
|
+
/** Recupera il profilo locale usato dal login, compresi filtri Accessi eventualmente presenti. */
|
|
198
389
|
getUserByEmail(email) {
|
|
199
390
|
return __awaiter(this, void 0, void 0, function* () {
|
|
200
|
-
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
U.
|
|
205
|
-
U.
|
|
206
|
-
U.
|
|
207
|
-
U.
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
C.
|
|
211
|
-
C.
|
|
212
|
-
C.
|
|
213
|
-
C.
|
|
214
|
-
C.
|
|
215
|
-
C.
|
|
216
|
-
C.
|
|
217
|
-
C.
|
|
218
|
-
C.
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
391
|
+
const configColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI_CONFIG');
|
|
392
|
+
const utentiColumns = yield (0, optionalColumns_1.getTableColumns)(this.accessiOptions, 'UTENTI');
|
|
393
|
+
const query = `
|
|
394
|
+
SELECT
|
|
395
|
+
U.CODUTE AS codice_utente,
|
|
396
|
+
U.USRNAME AS email,
|
|
397
|
+
U.FLGGDPR AS flag_gdpr,
|
|
398
|
+
U.DATSCAPWD as data_scadenza_password,
|
|
399
|
+
U.STAREG AS stato_registrazione,
|
|
400
|
+
${(0, optionalColumns_1.optionalColumn)(utentiColumns, 'ENABLEIA', 'U', 'enable_ia')},
|
|
401
|
+
C.COGNOME AS cognome,
|
|
402
|
+
C.NOME AS nome,
|
|
403
|
+
C.AVATAR AS avatar,
|
|
404
|
+
C.FLG2FATT AS flag_due_fattori,
|
|
405
|
+
C.FLGPWDLESS AS passwordless_login_enabled,
|
|
406
|
+
C.CODLINGUA AS codice_lingua,
|
|
407
|
+
C.CELLULARE AS cellulare,
|
|
408
|
+
C.FLGSUPER AS flag_super,
|
|
409
|
+
C.FLGADMINCONFIG AS flag_admin_configurator,
|
|
410
|
+
COALESCE(C.FLGPASSWORD, 1) AS password_login_enabled,
|
|
411
|
+
C.PAGDEF AS pagina_default,
|
|
412
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'CAUMOV', 'C', 'caumov')},
|
|
413
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'NUMMAC', 'C', 'nummac')},
|
|
414
|
+
${(0, optionalColumns_1.optionalColumn)(configColumns, 'RAGSOCCLI', 'C', 'rag_soc_cli', false)},
|
|
415
|
+
${APPLICATION_FLAG_FIELDS.map((field) => (0, optionalColumns_1.optionalColumn)(configColumns, field.column, 'C', field.alias)).join(',\n ')}
|
|
416
|
+
FROM UTENTI U
|
|
417
|
+
INNER JOIN UTENTI_CONFIG C ON C.CODUTE = U.CODUTE
|
|
418
|
+
WHERE LOWER(U.USRNAME) = ?
|
|
222
419
|
`;
|
|
223
420
|
const utenti = (yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, query, [email]).then((results) => results.map(Utilities_1.RestUtilities.convertKeysToCamelCase)));
|
|
224
|
-
const
|
|
225
|
-
if (
|
|
421
|
+
const user = utenti[0];
|
|
422
|
+
if (!user)
|
|
226
423
|
return null;
|
|
227
|
-
|
|
228
|
-
if (
|
|
229
|
-
const
|
|
230
|
-
const filtro = filtriUtente[0];
|
|
424
|
+
const filtro = (yield this.filtriService.getFiltriUser(user.codiceUtente))[0];
|
|
425
|
+
if (filtro) {
|
|
426
|
+
const filterValues = {};
|
|
231
427
|
Object.entries(FiltriUtente_1.FILTRI_UTENTE_DB_MAPPING).forEach(([key]) => {
|
|
232
428
|
if (key in filtro) {
|
|
233
|
-
|
|
429
|
+
filterValues[key] = filtro[key];
|
|
234
430
|
}
|
|
235
431
|
});
|
|
432
|
+
Object.assign(user, filterValues);
|
|
236
433
|
}
|
|
237
|
-
return
|
|
434
|
+
return this.normalizeUserFlags(user);
|
|
238
435
|
});
|
|
239
436
|
}
|
|
240
437
|
insertUserFilters(codiceUtente, filterData) {
|
|
241
438
|
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();
|
|
439
|
+
yield this.filtriService.upsertFiltriUtente(codiceUtente, filterData);
|
|
291
440
|
});
|
|
292
441
|
}
|
|
442
|
+
/**
|
|
443
|
+
* Crea utente, configurazione e filtri. La registrazione pubblica resta in stato `INVIO` e non puo
|
|
444
|
+
* impostare privilegi, ruoli o grant; soltanto flussi backend fidati possono usare `allowPrivilegedFields`.
|
|
445
|
+
*/
|
|
293
446
|
register(registrationData, options) {
|
|
294
447
|
return __awaiter(this, void 0, void 0, function* () {
|
|
295
|
-
var _a
|
|
448
|
+
var _a;
|
|
296
449
|
try {
|
|
297
450
|
const allowPrivilegedFields = (options === null || options === void 0 ? void 0 : options.allowPrivilegedFields) === true;
|
|
298
451
|
const normalizedEmail = this.normalizeEmail(registrationData.email);
|
|
452
|
+
if (registrationData.flagDueFattori !== undefined && typeof registrationData.flagDueFattori !== 'boolean') {
|
|
453
|
+
throw new common_1.BadRequestException('Il flag due fattori deve essere booleano.');
|
|
454
|
+
}
|
|
455
|
+
if (registrationData.flagDueFattori && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(normalizedEmail)) {
|
|
456
|
+
throw new common_1.BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');
|
|
457
|
+
}
|
|
299
458
|
if (!allowPrivilegedFields &&
|
|
300
459
|
(registrationData.flagSuper !== undefined ||
|
|
301
460
|
registrationData.flagAdminConfigurator !== undefined ||
|
|
461
|
+
registrationData.flagDueFattori !== undefined ||
|
|
302
462
|
registrationData.roles !== undefined ||
|
|
303
463
|
registrationData.permissions !== undefined)) {
|
|
304
464
|
throw new Error('I campi privilegiati non sono consentiti nella registrazione pubblica.');
|
|
305
465
|
}
|
|
466
|
+
yield this.validateApplicationFields(registrationData);
|
|
306
467
|
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);
|
|
468
|
+
const queryUtenti = `INSERT INTO UTENTI (USRNAME, STAREG) VALUES (?,?) RETURNING CODUTE`;
|
|
469
|
+
// Public/local registrations keep the historic INVIO state; trusted master or SSO flows may opt into CONF.
|
|
470
|
+
const paramsUtenti = [normalizedEmail, (_a = options === null || options === void 0 ? void 0 : options.initialState) !== null && _a !== void 0 ? _a : StatoRegistrazione_1.StatoRegistrazione.INVIO];
|
|
471
|
+
// Utente e configurazione sono creati in un'unica transazione; filtri e assegnazioni restano
|
|
472
|
+
// fuori perché delegati a servizi dedicati.
|
|
473
|
+
const codiceUtente = yield Orm_1.Orm.withTransaction(this.accessiOptions.databaseOptions, (transaction) => __awaiter(this, void 0, void 0, function* () {
|
|
474
|
+
var _a;
|
|
475
|
+
const insertedUsers = yield Orm_1.Orm.transactionQuery(transaction, queryUtenti, paramsUtenti);
|
|
476
|
+
const insertedUser = (Array.isArray(insertedUsers) ? insertedUsers[0] : insertedUsers);
|
|
477
|
+
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);
|
|
478
|
+
if (!newCodiceUtente) {
|
|
479
|
+
throw new Error('Creazione utente non riuscita: impossibile recuperare CODUTE.');
|
|
367
480
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
481
|
+
const utentiConfigFields = ['CODUTE', 'COGNOME', 'NOME'];
|
|
482
|
+
const utentiConfigPlaceholders = ['?', '?', '?'];
|
|
483
|
+
const utentiConfigParams = [newCodiceUtente, registrationData.cognome, registrationData.nome];
|
|
484
|
+
const optionalFields = [
|
|
485
|
+
{
|
|
486
|
+
key: 'cellulare',
|
|
487
|
+
dbField: 'CELLULARE',
|
|
488
|
+
transform: (v) => String(v),
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
key: 'avatar',
|
|
492
|
+
dbField: 'AVATAR',
|
|
493
|
+
transform: (v) => String(v),
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
key: 'flagDueFattori',
|
|
497
|
+
dbField: 'FLG2FATT',
|
|
498
|
+
transform: (v) => (v ? 1 : 0),
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
key: 'paginaDefault',
|
|
502
|
+
dbField: 'PAGDEF',
|
|
503
|
+
transform: (v) => String(v),
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
key: 'nummac',
|
|
507
|
+
dbField: 'NUMMAC',
|
|
508
|
+
transform: (v) => Number(v),
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
key: 'ragSocCli',
|
|
512
|
+
dbField: 'RAGSOCCLI',
|
|
513
|
+
transform: (v) => String(v),
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
key: 'caumov',
|
|
517
|
+
dbField: 'CAUMOV',
|
|
518
|
+
transform: (v) => String(v),
|
|
519
|
+
},
|
|
520
|
+
];
|
|
521
|
+
if (allowPrivilegedFields) {
|
|
522
|
+
optionalFields.push({
|
|
523
|
+
key: 'flagSuper',
|
|
524
|
+
dbField: 'FLGSUPER',
|
|
525
|
+
transform: (v) => (v ? 1 : 0),
|
|
526
|
+
}, {
|
|
527
|
+
key: 'flagAdminConfigurator',
|
|
528
|
+
dbField: 'FLGADMINCONFIG',
|
|
529
|
+
transform: (v) => (v ? 1 : 0),
|
|
530
|
+
});
|
|
531
|
+
for (const flag of APPLICATION_FLAG_FIELDS) {
|
|
532
|
+
optionalFields.push({
|
|
533
|
+
key: flag.key,
|
|
534
|
+
dbField: flag.column,
|
|
535
|
+
transform: (v) => (v ? 1 : 0),
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
for (const field of optionalFields) {
|
|
540
|
+
const value = registrationData[field.key];
|
|
541
|
+
if (value !== undefined && value !== null) {
|
|
542
|
+
utentiConfigFields.push(field.dbField);
|
|
543
|
+
utentiConfigPlaceholders.push('?');
|
|
544
|
+
utentiConfigParams.push(field.transform ? field.transform(value) : value);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
const queryUtentiConfig = `INSERT INTO UTENTI_CONFIG (${utentiConfigFields.join(', ')}) VALUES (${utentiConfigPlaceholders.join(', ')})`;
|
|
548
|
+
yield Orm_1.Orm.transactionQuery(transaction, queryUtentiConfig, utentiConfigParams);
|
|
549
|
+
return newCodiceUtente;
|
|
550
|
+
}));
|
|
371
551
|
yield this.filtriService.upsertFiltriUtente(codiceUtente, registrationData);
|
|
372
552
|
if (allowPrivilegedFields && !!registrationData.roles && registrationData.roles.length > 0) {
|
|
373
553
|
yield this.permissionService.assignRolesToUser(codiceUtente, registrationData.roles);
|
|
@@ -384,20 +564,45 @@ let UserService = class UserService {
|
|
|
384
564
|
}
|
|
385
565
|
});
|
|
386
566
|
}
|
|
567
|
+
/**
|
|
568
|
+
* Aggiorna il profilo utente e i filtri. Le modifiche a stato, ruoli, grant e flag amministrativi richiedono
|
|
569
|
+
* `allowPrivilegedChanges`; gli array ruolo/grant passati in un flusso fidato sostituiscono le assegnazioni.
|
|
570
|
+
*/
|
|
387
571
|
updateUser(codiceUtente, user, options) {
|
|
388
572
|
return __awaiter(this, void 0, void 0, function* () {
|
|
573
|
+
var _a, _b, _c, _d;
|
|
389
574
|
try {
|
|
390
575
|
if (!codiceUtente)
|
|
391
576
|
throw new Error('Impossibile aggiornare senza codice utente.');
|
|
392
577
|
const allowPrivilegedChanges = (options === null || options === void 0 ? void 0 : options.allowPrivilegedChanges) === true;
|
|
578
|
+
for (const value of [user.flagDueFattori, user.passwordlessLoginEnabled]) {
|
|
579
|
+
if (value !== undefined && typeof value !== 'boolean')
|
|
580
|
+
throw new common_1.BadRequestException('Le policy di autenticazione devono essere booleane.');
|
|
581
|
+
}
|
|
393
582
|
if (!allowPrivilegedChanges &&
|
|
394
583
|
(user.statoRegistrazione !== undefined ||
|
|
395
584
|
user.flagSuper !== undefined ||
|
|
396
585
|
user.flagAdminConfigurator !== undefined ||
|
|
586
|
+
user.passwordLoginEnabled !== undefined ||
|
|
587
|
+
user.passwordlessLoginEnabled !== undefined ||
|
|
588
|
+
user.flagDueFattori !== undefined ||
|
|
397
589
|
user.roles !== undefined ||
|
|
398
590
|
user.permissions !== undefined)) {
|
|
399
591
|
throw new Error('Non e consentito modificare campi privilegiati.');
|
|
400
592
|
}
|
|
593
|
+
if (user.flagDueFattori !== undefined || user.passwordlessLoginEnabled !== undefined || user.email !== undefined) {
|
|
594
|
+
const current = yield this.getAuthenticatedUserSnapshot(codiceUtente);
|
|
595
|
+
if (!current)
|
|
596
|
+
throw new common_1.BadRequestException('Utente non trovato.');
|
|
597
|
+
const twoFactor = (_a = user.flagDueFattori) !== null && _a !== void 0 ? _a : current.flagDueFattori;
|
|
598
|
+
const passwordless = (_b = user.passwordlessLoginEnabled) !== null && _b !== void 0 ? _b : current.passwordlessLoginEnabled;
|
|
599
|
+
if (passwordless && !twoFactor)
|
|
600
|
+
throw new common_1.BadRequestException('Il login senza password richiede il codice di accesso attivo.');
|
|
601
|
+
if (twoFactor && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(((_d = (_c = user.email) !== null && _c !== void 0 ? _c : current.email) !== null && _d !== void 0 ? _d : '').trim())) {
|
|
602
|
+
throw new common_1.BadRequestException('Per attivare i codici di accesso serve un indirizzo email valido.');
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
const { configColumns } = yield this.validateApplicationFields(user);
|
|
401
606
|
const utentiUpdates = [];
|
|
402
607
|
const utentiParams = [];
|
|
403
608
|
if (user.email !== undefined) {
|
|
@@ -410,6 +615,10 @@ let UserService = class UserService {
|
|
|
410
615
|
utentiUpdates.push('flggdpr = ?');
|
|
411
616
|
utentiParams.push(user.flagGdpr);
|
|
412
617
|
}
|
|
618
|
+
if (allowPrivilegedChanges && user.enableIa !== undefined) {
|
|
619
|
+
utentiUpdates.push('enableia = ?');
|
|
620
|
+
utentiParams.push(user.enableIa ? 1 : 0);
|
|
621
|
+
}
|
|
413
622
|
if (allowPrivilegedChanges && user.statoRegistrazione !== undefined) {
|
|
414
623
|
utentiUpdates.push('stareg = ?');
|
|
415
624
|
utentiParams.push(user.statoRegistrazione);
|
|
@@ -435,7 +644,11 @@ let UserService = class UserService {
|
|
|
435
644
|
}
|
|
436
645
|
if (user.flagDueFattori !== undefined) {
|
|
437
646
|
utentiConfigUpdates.push('flg2fatt = ?');
|
|
438
|
-
utentiConfigParams.push(user.flagDueFattori);
|
|
647
|
+
utentiConfigParams.push(user.flagDueFattori ? 1 : 0);
|
|
648
|
+
}
|
|
649
|
+
if (user.passwordlessLoginEnabled !== undefined) {
|
|
650
|
+
utentiConfigUpdates.push('flgpwdless = ?');
|
|
651
|
+
utentiConfigParams.push(user.passwordlessLoginEnabled ? 1 : 0);
|
|
439
652
|
}
|
|
440
653
|
if (user.codiceLingua !== undefined) {
|
|
441
654
|
utentiConfigUpdates.push('codlingua = ?');
|
|
@@ -453,6 +666,23 @@ let UserService = class UserService {
|
|
|
453
666
|
utentiConfigUpdates.push('flgadminconfig = ?');
|
|
454
667
|
utentiConfigParams.push(user.flagAdminConfigurator);
|
|
455
668
|
}
|
|
669
|
+
if (allowPrivilegedChanges && user.caumov !== undefined) {
|
|
670
|
+
utentiConfigUpdates.push('caumov = ?');
|
|
671
|
+
utentiConfigParams.push(user.caumov);
|
|
672
|
+
}
|
|
673
|
+
if (allowPrivilegedChanges) {
|
|
674
|
+
for (const flag of APPLICATION_FLAG_FIELDS) {
|
|
675
|
+
const value = user[flag.key];
|
|
676
|
+
if (value !== undefined) {
|
|
677
|
+
utentiConfigUpdates.push(`${flag.column.toLowerCase()} = ?`);
|
|
678
|
+
utentiConfigParams.push(value ? 1 : 0);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
if (allowPrivilegedChanges && user.passwordLoginEnabled !== undefined) {
|
|
683
|
+
utentiConfigUpdates.push('flgpassword = ?');
|
|
684
|
+
utentiConfigParams.push(user.passwordLoginEnabled ? 1 : 0);
|
|
685
|
+
}
|
|
456
686
|
if (user.paginaDefault !== undefined) {
|
|
457
687
|
utentiConfigUpdates.push('pagdef = ?');
|
|
458
688
|
utentiConfigParams.push(user.paginaDefault);
|
|
@@ -461,7 +691,7 @@ let UserService = class UserService {
|
|
|
461
691
|
utentiConfigUpdates.push('json_metadata = ?');
|
|
462
692
|
utentiConfigParams.push(user.jsonMetadata);
|
|
463
693
|
}
|
|
464
|
-
if (user.ragSocCli !== undefined) {
|
|
694
|
+
if (user.ragSocCli !== undefined && (user.ragSocCli !== null || (configColumns === null || configColumns === void 0 ? void 0 : configColumns.has('RAGSOCCLI')))) {
|
|
465
695
|
utentiConfigUpdates.push('ragsoccli = ?');
|
|
466
696
|
utentiConfigParams.push(user.ragSocCli);
|
|
467
697
|
}
|
|
@@ -470,10 +700,10 @@ let UserService = class UserService {
|
|
|
470
700
|
utentiConfigParams.push(codiceUtente);
|
|
471
701
|
yield Orm_1.Orm.execute(this.accessiOptions.databaseOptions, queryUtentiConfig, utentiConfigParams);
|
|
472
702
|
}
|
|
473
|
-
if (allowPrivilegedChanges &&
|
|
703
|
+
if (allowPrivilegedChanges && Array.isArray(user.roles)) {
|
|
474
704
|
yield this.permissionService.assignRolesToUser(codiceUtente, user.roles);
|
|
475
705
|
}
|
|
476
|
-
if (allowPrivilegedChanges &&
|
|
706
|
+
if (allowPrivilegedChanges && Array.isArray(user.permissions)) {
|
|
477
707
|
yield this.permissionService.assignPermissionsToUser(codiceUtente, user.permissions);
|
|
478
708
|
}
|
|
479
709
|
yield this.filtriService.upsertFiltriUtente(codiceUtente, user);
|
|
@@ -485,64 +715,10 @@ let UserService = class UserService {
|
|
|
485
715
|
}
|
|
486
716
|
updateUserFilters(codiceUtente, user) {
|
|
487
717
|
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
|
-
}
|
|
718
|
+
yield this.filtriService.upsertFiltriUtente(codiceUtente, user);
|
|
544
719
|
});
|
|
545
720
|
}
|
|
721
|
+
/** Eliminazione logica: imposta lo stato `DELETE` senza cancellare lo storico o i collegamenti SSO. */
|
|
546
722
|
deleteUser(codiceCliente) {
|
|
547
723
|
return __awaiter(this, void 0, void 0, function* () {
|
|
548
724
|
try {
|
|
@@ -557,6 +733,7 @@ let UserService = class UserService {
|
|
|
557
733
|
}
|
|
558
734
|
});
|
|
559
735
|
}
|
|
736
|
+
/** Cambia esplicitamente lo stato di registrazione; usare questa API per blocco, conferma o eliminazione logica. */
|
|
560
737
|
setStato(codiceCliente, statoRegistrazione) {
|
|
561
738
|
return __awaiter(this, void 0, void 0, function* () {
|
|
562
739
|
try {
|
|
@@ -574,15 +751,57 @@ let UserService = class UserService {
|
|
|
574
751
|
setGdpr(codiceUtente) {
|
|
575
752
|
return __awaiter(this, void 0, void 0, function* () {
|
|
576
753
|
try {
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
754
|
+
return yield Orm_1.Orm.executeMultiple(this.accessiOptions.databaseOptions, [
|
|
755
|
+
{ query: 'INSERT INTO UTENTI_GDPR (CODUTE, GDPR) VALUES (?, ?)', params: [codiceUtente, 'true'] },
|
|
756
|
+
{ query: 'UPDATE UTENTI SET FLGGDPR = 1, DATGDPR = CURRENT_DATE WHERE CODUTE = ?', params: [codiceUtente] },
|
|
757
|
+
]);
|
|
580
758
|
}
|
|
581
759
|
catch (error) {
|
|
582
760
|
throw error;
|
|
583
761
|
}
|
|
584
762
|
});
|
|
585
763
|
}
|
|
764
|
+
/**
|
|
765
|
+
* Forza l'invio dell'email di reset password per un utente. Operazione amministrativa.
|
|
766
|
+
* Richiede un servizio email configurato: altrimenti solleva ACCESSI_EMAIL_NOT_CONFIGURED.
|
|
767
|
+
*/
|
|
768
|
+
forcePasswordReset(codiceUtente) {
|
|
769
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
770
|
+
var _a, _b;
|
|
771
|
+
(0, emailConfiguration_1.assertEmailConfigured)(this.accessiOptions);
|
|
772
|
+
const rows = yield this.getUsers({ codiceUtente });
|
|
773
|
+
const email = (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.utente) === null || _b === void 0 ? void 0 : _b.email;
|
|
774
|
+
if (typeof email !== 'string' || email.trim() === '') {
|
|
775
|
+
throw new common_1.NotFoundException(`Nessun utente con email per il codice ${codiceUtente}.`);
|
|
776
|
+
}
|
|
777
|
+
yield this.emailService.sendPasswordResetEmail(email);
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
/**
|
|
781
|
+
* Forza l'invio dell'email di reset a tutti gli utenti la cui password non e ancora nel formato
|
|
782
|
+
* moderno (`scrypt$...`), cioe' legacy grezza o `scrypt-legacy` non piu verificabile. Utile quando
|
|
783
|
+
* la `encryptionKey` storica e perduta. Richiede email configurata. Ritorna quanti utenti hanno
|
|
784
|
+
* ricevuto l'email.
|
|
785
|
+
*/
|
|
786
|
+
forcePasswordResetForLegacyPasswords() {
|
|
787
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
788
|
+
(0, emailConfiguration_1.assertEmailConfigured)(this.accessiOptions);
|
|
789
|
+
const rows = yield Orm_1.Orm.query(this.accessiOptions.databaseOptions, `SELECT U.CODUTE AS codice_utente, U.USRNAME AS email
|
|
790
|
+
FROM UTENTI U
|
|
791
|
+
JOIN UTENTI_PWD P ON P.CODUTE = U.CODUTE
|
|
792
|
+
WHERE P.PWD IS NOT NULL AND P.PWD NOT STARTING WITH 'scrypt$'`, [], false);
|
|
793
|
+
let sent = 0;
|
|
794
|
+
for (const row of rows) {
|
|
795
|
+
const raw = Utilities_1.RestUtilities.convertKeysToCamelCase(row);
|
|
796
|
+
const email = typeof raw.email === 'string' ? raw.email.trim() : '';
|
|
797
|
+
if (email === '')
|
|
798
|
+
continue;
|
|
799
|
+
yield this.emailService.sendPasswordResetEmail(email);
|
|
800
|
+
sent += 1;
|
|
801
|
+
}
|
|
802
|
+
return sent;
|
|
803
|
+
});
|
|
804
|
+
}
|
|
586
805
|
};
|
|
587
806
|
exports.UserService = UserService;
|
|
588
807
|
exports.UserService = UserService = __decorate([
|