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