Mercurial > hg > orthanc-authorization
annotate Plugin/Enumerations.cpp @ 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 | c4b908970ae4 |
children |
rev | line source |
---|---|
1 | 1 /** |
2 * Advanced authorization plugin for Orthanc | |
68 | 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 |
1 | 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 | |
22 #include "Enumerations.h" | |
23 | |
32 | 24 #include <OrthancException.h> |
25 #include <Toolbox.h> | |
1 | 26 |
27 namespace OrthancPlugins | |
28 { | |
29 std::string EnumerationToString(AccessLevel level) | |
30 { | |
31 switch (level) | |
32 { | |
33 case AccessLevel_Patient: | |
34 return "patient"; | |
35 | |
36 case AccessLevel_Study: | |
37 return "study"; | |
38 | |
39 case AccessLevel_Series: | |
40 return "series"; | |
41 | |
42 case AccessLevel_Instance: | |
43 return "instance"; | |
44 | |
45 case AccessLevel_System: | |
46 return "system"; | |
47 | |
48 default: | |
49 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | |
50 } | |
51 } | |
52 | |
53 | |
54 AccessLevel StringToAccessLevel(const std::string& level) | |
55 { | |
56 std::string tmp; | |
57 Orthanc::Toolbox::ToLowerCase(tmp, level); | |
58 | |
59 if (tmp == "patient" || | |
60 tmp == "patients") | |
61 { | |
62 return AccessLevel_Patient; | |
63 } | |
64 else if (tmp == "study" || | |
65 tmp == "studies") | |
66 { | |
67 return AccessLevel_Study; | |
68 } | |
69 else if (tmp == "series") | |
70 { | |
71 return AccessLevel_Series; | |
72 } | |
73 else if (tmp == "instance" || | |
74 tmp == "instances") | |
75 { | |
76 return AccessLevel_Instance; | |
77 } | |
78 else if (tmp == "system") | |
79 { | |
80 return AccessLevel_System; | |
81 } | |
82 else | |
83 { | |
71 | 84 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange, std::string("Invalid access level: ") + tmp); |
1 | 85 } |
86 } | |
87 } |