diff Plugin/PermissionParser.cpp @ 149:423531fb1200

SINGLE_RESOURCE_PATTERNS to facilitate api-key support
author Alain Mazy <am@osimis.io>
date Thu, 15 Feb 2024 16:30:21 +0100
parents aa73b10c2db9
children 9be1ee2b8fe1
line wrap: on
line diff
--- a/Plugin/PermissionParser.cpp	Thu Feb 15 12:04:28 2024 +0100
+++ b/Plugin/PermissionParser.cpp	Thu Feb 15 16:30:21 2024 +0100
@@ -70,7 +70,7 @@
   {
   }
 
-  void PermissionParser::Add(const Json::Value& configuration)
+  void PermissionParser::Add(const Json::Value& configuration, const IAuthorizationParser* authorizationParser)
   {
     if (configuration.type() != Json::arrayValue)
     {
@@ -85,11 +85,28 @@
         throw Orthanc::OrthancException(Orthanc::ErrorCode_BadParameterType, "Permissions elements should be an array of min size 3.");
       }
 
-      Add(permission[0].asString(),    // 0 = HTTP method
-          permission[1].asString(),    // 1 = pattern
-          permission[2].asString()     // 2 = list of | separated permissions (no space)
-                                       // 3 = optional comment
-      );
+      if (permission[1].asString() == "SINGLE_RESOURCE_PATTERNS")
+      {
+        std::vector<boost::regex> singleResourcePatterns;
+        authorizationParser->GetSingleResourcePatterns(singleResourcePatterns);
+
+        for (std::vector<boost::regex>::const_iterator it = singleResourcePatterns.begin(); it != singleResourcePatterns.end(); ++it)
+        {
+          Add(permission[0].asString(),    // 0 = HTTP method
+              it->str(),                   // 1 = pattern
+              permission[2].asString()     // 2 = list of | separated permissions (no space)
+                                           // 3 = optional comment
+          );
+        }
+      }
+      else
+      {
+        Add(permission[0].asString(),    // 0 = HTTP method
+            permission[1].asString(),    // 1 = pattern
+            permission[2].asString()     // 2 = list of | separated permissions (no space)
+                                         // 3 = optional comment
+        );
+      }
     }
 
   }