diff Plugin/PermissionParser.cpp @ 195:2f1e872e8eaa

merge
author Alain Mazy <am@orthanc.team>
date Fri, 14 Jun 2024 16:31:58 +0200
parents 85859ec3aa7e 55435a4dd2c6
children
line wrap: on
line diff
--- a/Plugin/PermissionParser.cpp	Fri Jun 14 16:26:53 2024 +0200
+++ b/Plugin/PermissionParser.cpp	Fri Jun 14 16:31:58 2024 +0200
@@ -26,9 +26,11 @@
 
 namespace OrthancPlugins
 {
-  PermissionPattern::PermissionPattern(const OrthancPluginHttpMethod& method, const std::string& patternRegex, const std::string& permissions) :
-    method(method),
-    pattern(patternRegex)
+  PermissionPattern::PermissionPattern(const OrthancPluginHttpMethod& method,
+                                       const std::string& patternRegex,
+                                       const std::string& permissions) :
+    method_(method),
+    pattern_(patternRegex)
   {
     if (!permissions.empty())
     {
@@ -37,7 +39,7 @@
 
       for (size_t i = 0; i < permissionsVector.size(); ++i)
       {
-        this->permissions.insert(permissionsVector[i]);
+        permissions_.insert(permissionsVector[i]);
       }
     }
   }
@@ -72,6 +74,16 @@
   {
   }
 
+  PermissionParser::~PermissionParser()
+  {
+    for (std::list<PermissionPattern*>::iterator it = permissionsPattern_.begin();
+         it != permissionsPattern_.begin(); ++it)
+    {
+      assert(*it != NULL);
+      delete *it;
+    }
+  }
+
   void PermissionParser::Add(const Json::Value& configuration, const IAuthorizationParser* authorizationParser)
   {
     if (configuration.type() != Json::arrayValue)
@@ -150,7 +162,7 @@
 
     LOG(WARNING) << "Authorization plugin: adding a new permission pattern: " << lowerCaseMethod << " " << regex << " - " << permission;
 
-    permissionsPattern_.push_back(PermissionPattern(parsedMethod, regex, permission));
+    permissionsPattern_.push_back(new PermissionPattern(parsedMethod, regex, permission));
     
     { // extract individual permissions
       std::set<std::string> permissions;
@@ -177,16 +189,16 @@
     boost::mutex::scoped_lock lock(mutex_);
 
 
-    for (std::list<PermissionPattern>::const_iterator it = permissionsPattern_.begin();
-      it != permissionsPattern_.end(); ++it)
+    for (std::list<PermissionPattern*>::const_iterator it = permissionsPattern_.begin();
+         it != permissionsPattern_.end(); ++it)
     {
-      if (method == it->method)
+      if (method == (*it)->GetMethod())
       {
         boost::smatch what;
-        if (boost::regex_match(uri, what, it->pattern))
+        if (boost::regex_match(uri, what, (*it)->GetPattern()))
         {
-          matchedPattern = it->pattern.expression();
-          permissions = it->permissions;
+          matchedPattern = (*it)->GetPattern().expression();
+          permissions = (*it)->GetPermissions();
           return true;
         }
       }