From b5b5316ce6134b3b2a25f292e9f0c1adc520f1a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20G=C3=B6bel?= <dgoebel@techfak.uni-bielefeld.de>
Date: Wed, 31 Aug 2022 14:06:53 +0200
Subject: [PATCH] Disable buttons for S3 manipulation for unauthorized users

#15
---
 src/components/BucketView.vue | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/components/BucketView.vue b/src/components/BucketView.vue
index c78336c..b827765 100644
--- a/src/components/BucketView.vue
+++ b/src/components/BucketView.vue
@@ -222,6 +222,10 @@ const errorLoadingObjects: ComputedRef<boolean> = computed(
   () => objectState.bucketPermissionError || objectState.bucketNotFoundError
 );
 
+const writeS3Permission: ComputedRef<boolean> = computed(
+  () => props.permission == undefined || props.permission.permission == "READWRITE"
+);
+
 // Lifecycle Hooks
 // -----------------------------------------------------------------------------
 onMounted(() => {
@@ -466,7 +470,7 @@ watch(
       <button
         type="button"
         class="btn btn-secondary me-2 tooltip-container"
-        :disabled="errorLoadingObjects"
+        :disabled="errorLoadingObjects || !writeS3Permission"
         data-bs-toggle="modal"
         data-bs-title="Upload Object"
         data-bs-target="#upload-object-modal"
@@ -486,7 +490,7 @@ watch(
       <button
         type="button"
         class="btn btn-secondary m-2 tooltip-container"
-        :disabled="errorLoadingObjects"
+        :disabled="errorLoadingObjects || !writeS3Permission"
         data-bs-toggle="modal"
         data-bs-title="Create Folder"
         data-bs-target="#create-folder-modal"
@@ -666,16 +670,17 @@ watch(
                     <button class="dropdown-item" type="button">Details</button>
                   </li>
                   <li>
-                    <button class="dropdown-item" type="button">Edit</button>
+                    <button class="dropdown-item" type="button" :disabled="!writeS3Permission">Edit</button>
                   </li>
                   <li>
-                    <button class="dropdown-item" type="button">Copy</button>
+                    <button class="dropdown-item" type="button" :disabled="!writeS3Permission">Copy</button>
                   </li>
                   <li>
                     <button
                       class="dropdown-item text-danger align-middle"
                       type="button"
                       @click="deleteObject(obj.key)"
+                      :disabled="!writeS3Permission"
                     >
                       <bootstrap-icon
                         icon="trash-fill"
@@ -694,6 +699,7 @@ watch(
                 <button
                   type="button"
                   class="btn btn-danger btn-sm align-middle"
+                  :disabled="!writeS3Permission"
                   @click="
                     deleteFolder(
                       obj.parentFolder.join('/') + '/' + obj.name + '/'
-- 
GitLab