Mercurial > hg > orthanc-authorization
annotate Plugin/PermissionParser.h @ 202:3c56c3f0059a default tip
Fix forbidden access when the PatientID and StudyInstanceUID are identical
author | Alain Mazy <am@orthanc.team> |
---|---|
date | Mon, 23 Sep 2024 12:43:33 +0200 |
parents | 2f1e872e8eaa |
children |
rev | line source |
---|---|
71 | 1 /** |
2 * Advanced authorization plugin for Orthanc | |
3 * Copyright (C) 2017-2023 Osimis S.A., Belgium | |
150 | 4 * Copyright (C) 2024-2024 Orthanc Team SRL, Belgium |
188
c4b908970ae4
updated copyright, as Orthanc Team now replaces Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
150
diff
changeset
|
5 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
71 | 6 * |
7 * This program is free software: you can redistribute it and/or | |
8 * modify it under the terms of the GNU Affero General Public License | |
9 * as published by the Free Software Foundation, either version 3 of | |
10 * the License, or (at your option) any later version. | |
11 * | |
12 * This program is distributed in the hope that it will be useful, but | |
13 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Affero General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU Affero General Public License | |
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 **/ | |
20 | |
21 #pragma once | |
22 | |
23 #include "AuthorizationParserBase.h" | |
24 | |
25 #include <boost/regex.hpp> | |
26 #include <boost/thread/mutex.hpp> | |
27 | |
28 namespace OrthancPlugins | |
29 { | |
191 | 30 class PermissionPattern : public boost::noncopyable |
71 | 31 { |
191 | 32 private: |
33 OrthancPluginHttpMethod method_; | |
34 boost::regex pattern_; | |
35 std::set<std::string> permissions_; | |
36 | |
37 public: | |
38 PermissionPattern(const OrthancPluginHttpMethod& method, | |
39 const std::string& patternRegex, | |
40 const std::string& permissions); | |
71 | 41 |
191 | 42 OrthancPluginHttpMethod GetMethod() const |
43 { | |
44 return method_; | |
45 } | |
46 | |
47 const boost::regex& GetPattern() const | |
48 { | |
49 return pattern_; | |
50 } | |
51 | |
52 const std::set<std::string>& GetPermissions() const | |
53 { | |
54 return permissions_; | |
55 } | |
71 | 56 }; |
57 | |
191 | 58 class PermissionParser : public boost::noncopyable |
71 | 59 { |
60 private: | |
61 mutable boost::mutex mutex_; | |
191 | 62 std::list<PermissionPattern*> permissionsPattern_; |
194
85859ec3aa7e
added support for roles/permissions edition
Alain Mazy <am@orthanc.team>
parents:
188
diff
changeset
|
63 std::set<std::string> permissionsList_; |
71 | 64 std::string dicomWebRoot_; |
65 std::string oe2Root_; | |
66 | |
67 public: | |
68 PermissionParser(const std::string& dicomWebRoot, | |
69 const std::string& oe2Root); | |
70 | |
191 | 71 ~PermissionParser(); |
72 | |
71 | 73 void Add(const std::string& method, |
74 const std::string& patternRegex, | |
75 const std::string& permission); | |
76 | |
149
423531fb1200
SINGLE_RESOURCE_PATTERNS to facilitate api-key support
Alain Mazy <am@osimis.io>
parents:
71
diff
changeset
|
77 void Add(const Json::Value& configuration, const IAuthorizationParser* authorizationParser); |
71 | 78 |
79 bool Parse(std::set<std::string>& permissions, | |
80 std::string& matchedPattern, | |
81 const OrthancPluginHttpMethod& method, | |
82 const std::string& uri) const; | |
194
85859ec3aa7e
added support for roles/permissions edition
Alain Mazy <am@orthanc.team>
parents:
188
diff
changeset
|
83 |
85859ec3aa7e
added support for roles/permissions edition
Alain Mazy <am@orthanc.team>
parents:
188
diff
changeset
|
84 const std::set<std::string>& GetPermissionsList() const |
85859ec3aa7e
added support for roles/permissions edition
Alain Mazy <am@orthanc.team>
parents:
188
diff
changeset
|
85 { |
85859ec3aa7e
added support for roles/permissions edition
Alain Mazy <am@orthanc.team>
parents:
188
diff
changeset
|
86 return permissionsList_; |
85859ec3aa7e
added support for roles/permissions edition
Alain Mazy <am@orthanc.team>
parents:
188
diff
changeset
|
87 } |
71 | 88 }; |
89 } |