Mercurial > hg > orthanc-authorization
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; } }