Mercurial > hg > orthanc-authorization
comparison Plugin/AccessedResource.cpp @ 109:7381a7674b36
wip: adding labels
author | Alain Mazy <am@osimis.io> |
---|---|
date | Fri, 18 Aug 2023 12:08:49 +0200 |
parents | 1a13c4fbc9a1 |
children | ba9d72ecdbc4 |
comparison
equal
deleted
inserted
replaced
108:68ce6fd8b22a | 109:7381a7674b36 |
---|---|
22 | 22 |
23 namespace OrthancPlugins | 23 namespace OrthancPlugins |
24 { | 24 { |
25 AccessedResource::AccessedResource(AccessLevel level, | 25 AccessedResource::AccessedResource(AccessLevel level, |
26 const std::string& orthancId, | 26 const std::string& orthancId, |
27 const std::string& dicomUid) : | 27 const std::string& dicomUid, |
28 const std::set<std::string>& labels) : | |
28 level_(level), | 29 level_(level), |
29 orthancId_(orthancId), | 30 orthancId_(orthancId), |
30 dicomUid_(dicomUid) | 31 dicomUid_(dicomUid), |
32 labels_(labels) | |
31 { | 33 { |
32 if (level_ == AccessLevel_System && | 34 if (level_ == AccessLevel_System && |
33 !dicomUid.empty()) | 35 (!dicomUid.empty() || !labels.empty())) |
34 { | 36 { |
35 // The "DICOM UID" makes no sense for custom Orthanc URIs | 37 // The "DICOM UID" and labels make no sense for custom Orthanc URIs |
36 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | 38 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
37 } | 39 } |
38 } | 40 } |
39 | 41 |
40 | 42 |
41 AccessedResource::AccessedResource(Orthanc::ResourceType level, | 43 AccessedResource::AccessedResource(Orthanc::ResourceType level, |
42 const std::string& orthancId, | 44 const std::string& orthancId, |
43 const std::string& dicomUid) : | 45 const std::string& dicomUid, |
46 const std::set<std::string>& labels) : | |
44 orthancId_(orthancId), | 47 orthancId_(orthancId), |
45 dicomUid_(dicomUid) | 48 dicomUid_(dicomUid), |
49 labels_(labels) | |
46 { | 50 { |
47 switch (level) | 51 switch (level) |
48 { | 52 { |
49 case Orthanc::ResourceType_Patient: | 53 case Orthanc::ResourceType_Patient: |
50 level_ = AccessLevel_Patient; | 54 level_ = AccessLevel_Patient; |
77 else | 81 else |
78 { | 82 { |
79 return dicomUid_; | 83 return dicomUid_; |
80 } | 84 } |
81 } | 85 } |
86 | |
87 const std::set<std::string>& AccessedResource::GetLabels() const | |
88 { | |
89 if (level_ == AccessLevel_System) | |
90 { | |
91 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); | |
92 } | |
93 else | |
94 { | |
95 return labels_; | |
96 } | |
97 } | |
98 | |
82 } | 99 } |