From c40d5a532007b3437e9587c2844b51677d209f4f Mon Sep 17 00:00:00 2001
From: Sonia Zorba <sonia.zorba@inaf.it>
Date: Thu, 11 Nov 2021 17:40:24 +0100
Subject: [PATCH] Added support for administrator group (can access all nodes)

---
 .../it/inaf/oats/vospace/datamodel/NodeUtils.java  |  4 ++++
 .../inaf/oats/vospace/datamodel/NodeUtilsTest.java | 14 ++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java b/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java
index 4354703..0bcf0f1 100644
--- a/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java
+++ b/src/main/java/it/inaf/oats/vospace/datamodel/NodeUtils.java
@@ -165,6 +165,10 @@ public class NodeUtils {
                 return false;
             }
 
+            if (userGroups.contains("VOSpace.ADMIN")) {
+                return true;
+            }
+
             List<String> groupAccessPropValues
                     = NodeProperties.getNodePropertyAsListByURI(myNode,
                             accessPropertyName);
diff --git a/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java b/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java
index 1d6a93f..d68b991 100644
--- a/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java
+++ b/src/test/java/it/inaf/oats/vospace/datamodel/NodeUtilsTest.java
@@ -248,6 +248,20 @@ public class NodeUtilsTest {
         assertFalse(NodeUtils.checkIfWritable(node, "user2", List.of()));
     }
 
+    @Test
+    public void testCheckWritableNoProperty() {
+
+        Node node = new DataNode();
+        assertFalse(NodeUtils.checkIfWritable(node, "user2", List.of("group1")));
+    }
+
+    @Test
+    public void testCheckAdminCanAlwaysAccess() {
+
+        Node node = new DataNode();
+        assertTrue(NodeUtils.checkIfWritable(node, "user2", List.of("VOSpace.ADMIN")));
+    }
+
     @Test
     public void testGetVosPath() {
 
-- 
GitLab