diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index f6cf096499a014d5ebdb132ddb195c292da7747b..2c467ed63b48861da03bb1ec0298b8724a63d7e4 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -65,8 +65,6 @@ public class AccessServiceImpl implements AccessService { public DatabaseAccess create(Database database, User user, AccessTypeDto type) throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { - /* create in data database */ - dataServiceGateway.createAccess(database.getId(), user.getId(), type); /* create in metadata database */ final DatabaseAccess access = DatabaseAccess.builder() .hdbid(database.getId()) @@ -78,6 +76,8 @@ public class AccessServiceImpl implements AccessService { database.getAccesses() .add(access); database = databaseRepository.save(database); + /* create in data database */ + dataServiceGateway.createAccess(database.getId(), user.getId(), type); /* create in search service */ searchServiceGateway.update(database); log.info("Created access to database with id {}", database.getId()); @@ -89,23 +89,25 @@ public class AccessServiceImpl implements AccessService { public void update(Database database, User user, AccessTypeDto access) throws DataServiceException, DataServiceConnectionException, AccessNotFoundException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { - /* update in data database */ - dataServiceGateway.updateAccess(database.getId(), user.getId(), access); /* update in metadata database */ - final DatabaseAccess entity = DatabaseAccess.builder() + final int idx = database.getAccesses().indexOf(DatabaseAccess.builder() .hdbid(database.getId()) .database(database) .huserid(user.getId()) .user(user) .type(metadataMapper.accessTypeDtoToAccessType(access)) - .build(); - final int idx = database.getAccesses().indexOf(entity); + .build()); if (idx == -1) { log.error("Failed to update access"); throw new AccessNotFoundException("Failed to find update access"); } + final DatabaseAccess entity = database.getAccesses() + .get(idx); + entity.setType(metadataMapper.accessTypeDtoToAccessType(access)); database.getAccesses().set(idx, entity); database = databaseRepository.save(database); + /* update in data database */ + dataServiceGateway.updateAccess(database.getId(), user.getId(), access); /* update in search service */ searchServiceGateway.update(database); log.info("Updated access to database with id {}", database.getId()); @@ -116,11 +118,11 @@ public class AccessServiceImpl implements AccessService { public void delete(Database database, User user) throws AccessNotFoundException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { - /* delete in data database */ - dataServiceGateway.deleteAccess(database.getId(), user.getId()); /* delete in metadata database */ database.getAccesses().remove(find(database, user)); databaseRepository.save(database); + /* delete in data database */ + dataServiceGateway.deleteAccess(database.getId(), user.getId()); /* update in search service */ searchServiceGateway.update(databaseService.findById(database.getId())); log.info("Deleted access to database with id {}", database.getId()); diff --git a/dbrepo-ui/components/dialogs/EditAccess.vue b/dbrepo-ui/components/dialogs/EditAccess.vue index 97f5dff00329699a5bb1aa1888356d9e72bb2bae..fc3054e1ca41c2697e91c038338b018482ccd135 100644 --- a/dbrepo-ui/components/dialogs/EditAccess.vue +++ b/dbrepo-ui/components/dialogs/EditAccess.vue @@ -160,12 +160,12 @@ export default { this.loading = true if (this.isModification) { if (this.modify.type === 'revoke') { - await this.revokeAccess() + this.revokeAccess() } else { - await this.modifyAccess() + this.modifyAccess() } } else { - await this.giveAccess() + this.giveAccess() } }, revokeAccess () { @@ -190,7 +190,7 @@ export default { }, modifyAccess () { const accessService = useAccessService() - accessService.modify(this.$route.params.database_id, this.localUserId, this.modify) + accessService.update(this.$route.params.database_id, this.localUserId, this.modify) .then(() => { const toast = useToastInstance() toast.success(this.$t('success.access.modified'))