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 }