From 4eeed0aa8e2f5aa3d8ecca96dec304b7db2b5a60 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Thu, 4 May 2023 17:21:50 +0200
Subject: [PATCH] Fixed

- Makefile now contains deps
- IEEE style with DOIs
- Toolbar foreign database
- Gateway in docker-compose
- DBRepo2 docker compose
---
 Makefile                                      | 58 +++++++------------
 .../main/resources/templates/cite_ieee.txt    |  2 +-
 .../resources/bibliography/style_ieee3.txt    |  2 +-
 dbrepo-ui/components/DBToolbar.vue            | 20 +++++--
 dbrepo-ui/components/identifier/Citation.vue  |  2 +-
 .../database/_database_id/info.vue            | 19 +++---
 .../database/_database_id/table/import.vue    |  1 -
 docker-compose.dbrepo2.yml                    |  5 +-
 docker-compose.yml                            |  1 +
 9 files changed, 55 insertions(+), 55 deletions(-)

diff --git a/Makefile b/Makefile
index 2b252e8475..a06cdf6069 100644
--- a/Makefile
+++ b/Makefile
@@ -46,25 +46,6 @@ build-docker:
 	docker compose build dbrepo-metadata-db
 	docker compose build --parallel
 
-build-docker-slow:
-	docker compose build dbrepo-analyse-service
-	docker compose build dbrepo-authentication-service
-	docker compose build dbrepo-broker-service
-	docker compose build dbrepo-metadata-db
-	docker compose build dbrepo-container-service
-	docker compose build dbrepo-database-service
-	docker compose build dbrepo-discovery-service
-	docker compose build dbrepo-gateway-service
-	docker compose build dbrepo-identifier-service
-	docker compose build dbrepo-metadata-service
-	docker compose build dbrepo-proxy
-	docker compose build dbrepo-query-service
-	docker compose build dbrepo-search-service
-	docker compose build dbrepo-semantics-service
-	docker compose build dbrepo-table-service
-	docker compose build dbrepo-ui
-	docker compose build dbrepo-user-service
-
 build-frontend:
 	yarn --cwd ./dbrepo-ui install --legacy-peer-deps
 	yarn --cwd ./dbrepo-ui run build
@@ -72,7 +53,7 @@ build-frontend:
 build-clients:
 	bash ./.gitlab/swagger/generate.sh
 
-tag: tag-identifier tag-search tag-container tag-database tag-discovery tag-gateway tag-query tag-table tag-analyse tag-authentication tag-metadata-db tag-ui tag-units tag-broker tag-metadata
+tag: tag-identifier tag-search tag-container tag-database tag-discovery tag-gateway tag-query tag-table tag-analyse tag-authentication tag-metadata-db tag-ui tag-units tag-broker tag-metadata tag-user
 
 tag-analyse:
 	docker tag dbrepo-analyse-service:latest "dbrepo/analyse-service:${TAG}"
@@ -122,54 +103,57 @@ tag-broker:
 tag-search:
 	docker tag dbrepo-search-service:latest "dbrepo/search-service:${TAG}"
 
-release: build-docker tag release-identifier release-search release-container release-database release-discovery release-gateway release-query release-table release-analyse release-authentication release-metadata-db release-ui release-units release-broker release-metadata
+tag-user:
+	docker tag dbrepo-user-service:latest "dbrepo/user-service:${TAG}"
+
+release: build-docker tag release-identifier release-search release-container release-database release-discovery release-gateway release-query release-table release-analyse release-authentication release-metadata-db release-ui release-units release-broker release-metadata release-user
 
-release-analyse:
+release-analyse: tag-analyse
 	docker push "dbrepo/analyse-service:${TAG}"
 
-release-authentication:
+release-authentication: tag-authentication
 	docker push "dbrepo/authentication-service:${TAG}"
 
-release-metadata-db: build-docker tag-metadata-db
+release-metadata-db: tag-metadata-db
 	docker push "dbrepo/metadata-db:${TAG}"
 
-release-ui:
+release-ui: tag-ui
 	docker push "dbrepo/ui:${TAG}"
 
-release-identifier:
+release-identifier: tag-identifier
 	docker push "dbrepo/identifier-service:${TAG}"
 
-release-container:
+release-container: tag-container
 	docker push "dbrepo/container-service:${TAG}"
 
-release-database:
+release-database: tag-database
 	docker push "dbrepo/database-service:${TAG}"
 
-release-discovery:
+release-discovery: tag-discovery
 	docker push "dbrepo/discovery-service:${TAG}"
 
-release-gateway:
+release-gateway: tag-gateway
 	docker push "dbrepo/gateway-service:${TAG}"
 
-release-query:
+release-query: tag-query
 	docker push "dbrepo/query-service:${TAG}"
 
-release-user:
+release-user: tag-user
 	docker push "dbrepo/user-service:${TAG}"
 
-release-table:
+release-table: tag-table
 	docker push "dbrepo/table-service:${TAG}"
 
-release-units:
+release-units: tag-units
 	docker push "dbrepo/semantics-service:${TAG}"
 
-release-broker:
+release-broker: tag-broker
 	docker push "dbrepo/broker-service:${TAG}"
 
-release-search:
+release-search: tag-search
 	docker push "dbrepo/search-service:${TAG}"
 
-release-metadata:
+release-metadata: tag-metadata
 	docker push "dbrepo/metadata-service:${TAG}"
 
 test-backend: test-container-service test-database-service test-discovery-service test-gateway-service test-query-service test-table-service test-identifier-service test-metadata-service test-semantics-service test-analyse-service test-user-service
diff --git a/dbrepo-identifier-service/rest-service/src/main/resources/templates/cite_ieee.txt b/dbrepo-identifier-service/rest-service/src/main/resources/templates/cite_ieee.txt
index 602b73deed..9bf56d5765 100644
--- a/dbrepo-identifier-service/rest-service/src/main/resources/templates/cite_ieee.txt
+++ b/dbrepo-identifier-service/rest-service/src/main/resources/templates/cite_ieee.txt
@@ -1 +1 @@
-[1] [# th:each="creator,idx: ${creators}"][# th:if="${idx.index} &gt; 0"] and [/][[${creator.firstname.substring(0,1)}]]. [[${creator.lastname}]][/][# th:if="${creators.size()} &gt; 0"], [/]“[[${title}]]“, [[${publisher}]], [[${publicationYear}]], [[${identifierType} == 'url' ? 'Available: ' : '']][[${identifier}]].
\ No newline at end of file
+[1] [# th:each="creator,idx: ${creators}"][# th:if="${idx.index} &gt; 0"] and [/][[${creator.firstname.substring(0,1)}]]. [[${creator.lastname}]][/][# th:if="${creators.size()} &gt; 0"], [/]“[[${title}]]“, [[${publisher}]], [[${publicationYear}]], [[${identifierType} == 'url' ? 'Available: ' : 'doi: ']][[${identifier}]].
\ No newline at end of file
diff --git a/dbrepo-identifier-service/rest-service/src/test/resources/bibliography/style_ieee3.txt b/dbrepo-identifier-service/rest-service/src/test/resources/bibliography/style_ieee3.txt
index 2576174cf6..286d4b8027 100644
--- a/dbrepo-identifier-service/rest-service/src/test/resources/bibliography/style_ieee3.txt
+++ b/dbrepo-identifier-service/rest-service/src/test/resources/bibliography/style_ieee3.txt
@@ -1 +1 @@
-[1] M. Mustermann, “Austrian weather data“, Austrian Government, 2022, 10.1000/183.
\ No newline at end of file
+[1] M. Mustermann, “Austrian weather data“, Austrian Government, 2022, doi: 10.1000/183.
\ No newline at end of file
diff --git a/dbrepo-ui/components/DBToolbar.vue b/dbrepo-ui/components/DBToolbar.vue
index e544e3f357..ecbc4fe11e 100644
--- a/dbrepo-ui/components/DBToolbar.vue
+++ b/dbrepo-ui/components/DBToolbar.vue
@@ -97,26 +97,38 @@ export default {
     roles () {
       return this.$store.state.roles
     },
+    hasWriteAccess () {
+      if (!this.access) {
+        return false
+      }
+      return this.access.type === 'write_all' || this.access.type === 'write_own'
+    },
+    hasReadAccess () {
+      if (!this.access) {
+        return false
+      }
+      return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own'
+    },
     canImportCsv () {
-      if (!this.user) {
+      if (!this.user || !this.hasWriteAccess) {
         return false
       }
       return this.roles.includes('insert-table-data')
     },
     canCreateSubset () {
-      if (!this.user) {
+      if (!this.user || !this.hasReadAccess) {
         return false
       }
       return this.roles.includes('execute-query')
     },
     canCreateView () {
-      if (!this.user) {
+      if (!this.user || !this.isOwner) {
         return false
       }
       return this.roles.includes('create-database-view')
     },
     canCreateTable () {
-      if (!this.user) {
+      if (!this.user || !this.hasWriteAccess) {
         return false
       }
       return this.roles.includes('create-table')
diff --git a/dbrepo-ui/components/identifier/Citation.vue b/dbrepo-ui/components/identifier/Citation.vue
index 479243cc45..741328e086 100644
--- a/dbrepo-ui/components/identifier/Citation.vue
+++ b/dbrepo-ui/components/identifier/Citation.vue
@@ -72,7 +72,7 @@ export default {
   },
   methods: {
     loadCitation (accept) {
-      if (!this.pid) {
+      if (!this.pid || !accept) {
         return
       }
       this.loading = true
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/info.vue b/dbrepo-ui/pages/container/_container_id/database/_database_id/info.vue
index 1940e0bc08..36e9bcea24 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/info.vue
+++ b/dbrepo-ui/pages/container/_container_id/database/_database_id/info.vue
@@ -340,19 +340,16 @@ export default {
       return this.canCreateIdentifier || this.hasIdentifier
     },
     canCreateIdentifier () {
-      if (!this.roles) {
+      if (!this.roles || this.hasIdentifier) {
         return false
       }
-      if (this.hasIdentifier) {
-        return false
+      if (this.roles.includes('create-foreign-identifier')) {
+        return true
       }
-      return this.roles.includes('create-identifier') || this.roles.includes('create-foreign-identifier')
+      return this.roles.includes('create-identifier') && this.isOwner
     },
     canEditIdentifier () {
-      if (!this.roles) {
-        return false
-      }
-      if (!this.hasIdentifier) {
+      if (!this.roles || !this.hasIdentifier) {
         return false
       }
       return this.roles.includes('modify-identifier-metadata')
@@ -407,6 +404,12 @@ export default {
         default:
           return { text: null, class: null }
       }
+    },
+    isOwner () {
+      if (!this.database || !this.user) {
+        return false
+      }
+      return this.database.owner.username === this.user.username
     }
   },
   methods: {
diff --git a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue b/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue
index a5c4f5949c..a915657c3c 100644
--- a/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue
+++ b/dbrepo-ui/pages/container/_container_id/database/_database_id/table/import.vue
@@ -120,7 +120,6 @@
               <v-btn
                 class="mb-1"
                 :disabled="!validStep2"
-                :loading="loading"
                 color="primary"
                 type="submit"
                 @click="step = 3">
diff --git a/docker-compose.dbrepo2.yml b/docker-compose.dbrepo2.yml
index b459e3a4ef..b45bc9514c 100644
--- a/docker-compose.dbrepo2.yml
+++ b/docker-compose.dbrepo2.yml
@@ -68,8 +68,7 @@ services:
     image: dbrepo/gateway-service:latest
     networks:
       core:
-    ports:
-      - "9095:9095"
+      public:
     env_file:
       - .env
     depends_on:
@@ -124,6 +123,8 @@ services:
     image: dbrepo/authentication-service:latest
     networks:
       core:
+    ports:
+      - "8443:8443"
     env_file:
       - .env
     volumes:
diff --git a/docker-compose.yml b/docker-compose.yml
index f4364d1bb4..5a3cd4022d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -72,6 +72,7 @@ services:
     image: dbrepo-gateway-service
     networks:
       core:
+      public:
     ports:
       - "9095:9095"
     env_file:
-- 
GitLab