Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: cb0ab1b3 by Tony Chemit at 2020-05-12T17:38:05+02:00 Les assistants create, update, update-security (et drop ?) devraient exiger que le compte fourni soit superuser - Closes #1481 - - - - - 11 changed files: - client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java - client-datasource-editor-api/src/main/i18n/getters/java.getter - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIHandler.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIModel.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/presets/actions/TestRemote.java - client-runner/src/main/java/fr/ird/observe/client/RunObserve.java - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - pom.xml - services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java ===================================== @@ -115,7 +115,8 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport { private boolean modified; // indique si l'utilisateur connecté est le propriétaire de la base private boolean owner; - private ObserveServiceMainFactory serviceFactory; + private boolean superUser; + private final ObserveServiceMainFactory serviceFactory; public ObserveSwingDataSource(ClientConfig config, ObserveServiceMainFactory serviceFactory, ObserveDataSourceConfiguration configuration) { this.config = config; @@ -201,7 +202,9 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport { canWriteReferential(), canReadData(), canWriteData(), - isOwner(), getVersion(), + isOwner(), + isSuperUser(), + getVersion(), getVersion(), ImmutableList.of()); } @@ -446,6 +449,14 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport { return configuration instanceof ObserveDataSourceConfigurationRest; } + public boolean isSuperUser() { + return superUser; + } + + public void setSuperUser(boolean superUser) { + this.superUser = superUser; + } + public void addObserveSwingDataSourceListener(ObserveSwingDataSourceListener listener) { listenerList.add(ObserveSwingDataSourceListener.class, listener); } ===================================== client-datasource-editor-api/src/main/i18n/getters/java.getter ===================================== @@ -187,6 +187,7 @@ observe.storage.error.rest.user.unknown observe.storage.error.serverVersionMismatch observe.storage.error.serverVersionModelMismatch observe.storage.error.user.not.owner +observe.storage.error.user.not.superUser observe.storage.internalDump.last.modified observe.storage.internalDump.not.exist observe.storage.label.data.import.db ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIHandler.java ===================================== @@ -486,6 +486,7 @@ public class StorageUIHandler implements UIHandler<StorageUI>, WithDecoratorServ ObserveDataSourceInformation dataSourceInformation = currentDataSource.checkCanConnect(false); currentDataSource.setOwner(dataSourceInformation.isOwner()); + currentDataSource.setSuperUser(dataSourceInformation.isSuperUser()); progressModel.setExtent(1); currentDataSource.migrateData(dataSourceInformation, config.getModelVersion()); ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/StorageUIModel.java ===================================== @@ -477,6 +477,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie } if (getDataSourceInformation() != null) { dataSource.setOwner(getDataSourceInformation().isOwner()); + dataSource.setSuperUser(getDataSourceInformation().isSuperUser()); } return dataSource; } @@ -1689,6 +1690,7 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie boolean createAction = ObstunaAdminAction.CREATE.equals(adminAction); dataSourceInformation = dataSource.checkCanConnect(createAction); dataSource.setOwner(dataSourceInformation.isOwner()); + dataSource.setSuperUser(dataSourceInformation.isSuperUser()); Version versionDataSource = dataSourceInformation.getVersion(); // en mise a jour de la base on ne test pas la version @@ -1745,6 +1747,11 @@ public class StorageUIModel extends WizardModel<StorageStep> implements WithClie log.error(connexionStatusError); setConnexionStatus(ConnexionStatus.FAILED); result = false; + } else if (!dataSourceInformation.isSuperUser()) { + connexionStatusError = t("observe.storage.error.user.not.superUser"); + log.error(connexionStatusError); + setConnexionStatus(ConnexionStatus.FAILED); + result = false; } } return result; ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/presets/actions/TestRemote.java ===================================== @@ -66,6 +66,7 @@ public class TestRemote extends RemoteActionSupport { ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(false); dataSource.setOwner(dataSourceInformation.isOwner()); + dataSource.setSuperUser(dataSourceInformation.isSuperUser()); Version versionDataSource = dataSourceInformation.getVersion(); ===================================== client-runner/src/main/java/fr/ird/observe/client/RunObserve.java ===================================== @@ -380,6 +380,7 @@ public class RunObserve extends ApplicationRunner implements WithBackupsManager, ObserveDataSourceInformation dataSourceInformation = dataSource.checkCanConnect(false); dataSource.setOwner(dataSourceInformation.isOwner()); + dataSource.setSuperUser(dataSourceInformation.isSuperUser()); dataSource.migrateDataIfPossible(dataSourceInformation, config.getModelVersion()); // la source sera utilisée dans les ui ===================================== observe-i18n/src/main/i18n/translations/observe_en_GB.properties ===================================== @@ -2780,6 +2780,7 @@ observe.storage.error.rest.user.unknown=User "%s" is not defined on server observe.storage.error.serverVersionMismatch=Remote server version (%s) is not compliant with the client version (%s) observe.storage.error.serverVersionModelMismatch=Remote server model version (%s) is not compliant with the client model version (%s) observe.storage.error.user.not.owner=User must be owner of database to perform this action\! +observe.storage.error.user.not.superUser=User must be super-user of database to perform this action\! observe.storage.import.data.fromBackup=Import data from a backup of a local database (*.sql.gz) observe.storage.import.data.fromRemoteStorage=Import data from a remote database observe.storage.import.data.fromServerStorage=Import data from a remove server ===================================== observe-i18n/src/main/i18n/translations/observe_es_ES.properties ===================================== @@ -2780,6 +2780,7 @@ observe.storage.error.rest.user.unknown=El usuario "%s" no es conocido del servi observe.storage.error.serverVersionMismatch=La versión del servidor remoto (%s) no es compatible con la versión del modelo (%s) observe.storage.error.serverVersionModelMismatch=La version du modèle du serveur distant (%s) n'est pas compatible avec la version du modèle du client (%s) \#TODO observe.storage.error.user.not.owner=User must be owner of database to perform this action\! \#TODO +observe.storage.error.user.not.superUser=User must be super-user of database to perform this action\! \#TODO observe.storage.import.data.fromBackup=Importar los datos de una copia de seguridad de una base local (*.sql.gz) observe.storage.import.data.fromRemoteStorage=Importar los datos de una base remota observe.storage.import.data.fromServerStorage=Importar los datos de un servidor remoto ===================================== observe-i18n/src/main/i18n/translations/observe_fr_FR.properties ===================================== @@ -2780,6 +2780,7 @@ observe.storage.error.rest.user.unknown=L'utilisateur "%s" est inconnu sur le se observe.storage.error.serverVersionMismatch=La version du serveur distant (%s) n'est pas compatible avec la version du client (%s) observe.storage.error.serverVersionModelMismatch=La version du modèle du serveur distant (%s) n'est pas compatible avec la version du modèle du client (%s) observe.storage.error.user.not.owner=L'utilisateur doit être le propriétaire de la base pour effectuer cette opération \! +observe.storage.error.user.not.superUser=L'utilisateur doit être *Super utilisateur* pour effectuer cette opération \! observe.storage.import.data.fromBackup=Importer les données depuis une sauvegarde de base locale (*.sql.gz) observe.storage.import.data.fromRemoteStorage=Importer les données depuis une base distante observe.storage.import.data.fromServerStorage=Importer les données depuis un serveur distant ===================================== pom.xml ===================================== @@ -24,7 +24,7 @@ <parent> <groupId>io.ultreia.maven</groupId> <artifactId>pom</artifactId> - <version>2020.24</version> + <version>2020.25</version> </parent> <groupId>fr.ird.observe</groupId> @@ -162,7 +162,7 @@ <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> <buildDate>${maven.build.timestamp}</buildDate> - <lib.version.toolkit>4.29</lib.version.toolkit> + <lib.version.toolkit>4.30</lib.version.toolkit> <lib.version.nuiton.validation>3.1</lib.version.nuiton.validation> <!--can't use 1.4.197 (date has changed + blob also)--> <lib.version.h2>1.4.196</lib.version.h2> @@ -176,7 +176,7 @@ <!--<lib.version.java4all.i18n>4.0-beta-3-SNAPSHOT</lib.version.java4all.i18n>--> <!--<lib.version.java4all.config>1.0.8-SNAPSHOT</lib.version.java4all.config>--> <!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>--> -<!-- <lib.version.java4all.topia>1.19-SNAPSHOT</lib.version.java4all.topia>--> +<!-- <lib.version.java4all.topia>1.20-SNAPSHOT</lib.version.java4all.topia>--> <!--<lib.version.java4all.http>1.0.17-SNAPSHOT</lib.version.java4all.http>--> <!-- license header configuration --> ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java ===================================== @@ -105,6 +105,13 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS return jdbcHelper.isOwner(); } + private static boolean isSuperUser(ObserveDataSourceConfigurationTopiaSupport dataSourceConfiguration, JdbcPostgresHelper jdbcHelper) { + if (dataSourceConfiguration.isH2Database()) { + return true; + } + return jdbcHelper.isSuperUser(); + } + @Override public ObserveDataSourceInformation checkCanConnectOrBeEmpty(ObserveDataSourceConfiguration dataSourceConfiguration) throws DatabaseNotFoundException, DatabaseConnexionNotAuthorizedException { ObserveDataSourceConfigurationTopiaSupport dataSourceConfigurationTopiaSupport = (ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration; @@ -630,6 +637,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS JdbcPostgresHelper jdbcHelper = new JdbcPostgresHelper(topiaConfiguration); boolean owner = isOwner(dataSourceConfiguration, jdbcHelper); + boolean superUser = isSuperUser(dataSourceConfiguration, jdbcHelper); try { version = TMSVersionHibernateDao.getVersion(jdbcHelper, "tms_version").map(TMSVersion::toVersion).orElse(Version.VZERO); @@ -643,7 +651,6 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS writeReferential = false; readData = true; writeData = true; - owner = true; } else { writeReferential = true; @@ -656,6 +663,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS readData, writeData, owner, + superUser, ObserveTopiaMigrationServiceAskUserToMigrate.getMinimumVersion(), null, null); @@ -712,6 +720,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS readData, writeData, owner, + superUser, ObserveTopiaMigrationServiceAskUserToMigrate.getMinimumVersion(), version, observeMigrationConfigurationProvider.getVersionsAfter(version)); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/cb0ab1b3c19b3d9b0211ff0ef6... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/cb0ab1b3c19b3d9b0211ff0ef6... You're receiving this email because of your account on gitlab.com.