Mercurial > hg > orthanc-authorization
comparison Plugin/CachedAuthorizationService.h @ 71:30fb3ce960d9
configurable user permissions
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 22 Feb 2023 13:13:38 +0100 |
parents | af44dce56328 |
children | e381ba725669 |
comparison
equal
deleted
inserted
replaced
70:786b202ef24e | 71:30fb3ce960d9 |
---|---|
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. | 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 **/ | 17 **/ |
18 | 18 |
19 #pragma once | 19 #pragma once |
20 | 20 |
21 #include "IAuthorizationService.h" | 21 #include "BaseAuthorizationService.h" |
22 #include "ICacheFactory.h" | 22 #include "ICacheFactory.h" |
23 | 23 |
24 #include <Compatibility.h> // For std::unique_ptr<> | 24 #include <Compatibility.h> // For std::unique_ptr<> |
25 | 25 |
26 #include <memory> | 26 #include <memory> |
28 namespace OrthancPlugins | 28 namespace OrthancPlugins |
29 { | 29 { |
30 /** | 30 /** |
31 * Decorator design pattern to add a cache around an IAuthorizationService | 31 * Decorator design pattern to add a cache around an IAuthorizationService |
32 **/ | 32 **/ |
33 class CachedAuthorizationService : public IAuthorizationService | 33 class CachedAuthorizationService : public BaseAuthorizationService |
34 { | 34 { |
35 private: | 35 private: |
36 std::unique_ptr<IAuthorizationService> decorated_; | 36 std::unique_ptr<BaseAuthorizationService> decorated_; |
37 std::unique_ptr<ICache> cache_; | 37 std::unique_ptr<ICache> cache_; |
38 | 38 |
39 std::string ComputeKey(OrthancPluginHttpMethod method, | 39 std::string ComputeKey(OrthancPluginHttpMethod method, |
40 const AccessedResource& access, | 40 const AccessedResource& access, |
41 const Token& token, | 41 const Token& token, |
42 const std::string& tokenValue) const; | 42 const std::string& tokenValue) const; |
43 | |
44 std::string ComputeKey(const std::string& permission, | |
45 const Token& token, | |
46 const std::string& tokenValue) const; | |
47 | |
48 virtual bool IsGrantedInternal(unsigned int& validity, | |
49 OrthancPluginHttpMethod method, | |
50 const AccessedResource& access, | |
51 const Token* token, | |
52 const std::string& tokenValue) ORTHANC_OVERRIDE; | |
43 | 53 |
54 virtual bool GetUserProfileInternal(unsigned int& validity, | |
55 Json::Value& profile /* out */, | |
56 const Token* token, | |
57 const std::string& tokenValue) ORTHANC_OVERRIDE; | |
58 | |
59 virtual bool HasUserPermissionInternal(unsigned int& validity, | |
60 const std::string& permission, | |
61 const Token* token, | |
62 const std::string& tokenValue) ORTHANC_OVERRIDE; | |
63 | |
64 | |
44 public: | 65 public: |
45 CachedAuthorizationService(IAuthorizationService* decorated /* takes ownership */, | 66 CachedAuthorizationService(BaseAuthorizationService* decorated /* takes ownership */, |
46 ICacheFactory& factory); | 67 ICacheFactory& factory); |
47 | 68 |
48 virtual bool IsGranted(unsigned int& validity, | |
49 OrthancPluginHttpMethod method, | |
50 const AccessedResource& access, | |
51 const Token& token, | |
52 const std::string& tokenValue) ORTHANC_OVERRIDE; | |
53 | |
54 virtual bool IsGranted(unsigned int& validity, | |
55 OrthancPluginHttpMethod method, | |
56 const AccessedResource& access) ORTHANC_OVERRIDE; | |
57 | |
58 virtual bool GetUserProfile(Json::Value& profile /* out */, | |
59 const Token& token, | |
60 const std::string& tokenValue); | |
61 }; | 69 }; |
62 } | 70 } |