diff Plugin/AuthorizationWebService.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
line wrap: on
line diff
--- a/Plugin/AuthorizationWebService.h	Tue Feb 21 09:23:47 2023 +0100
+++ b/Plugin/AuthorizationWebService.h	Wed Feb 22 13:13:38 2023 +0100
@@ -18,11 +18,12 @@
 
 #pragma once
 
-#include "IAuthorizationService.h"
+#include "BaseAuthorizationService.h"
+#include <Compatibility.h>
 
 namespace OrthancPlugins
 {
-  class AuthorizationWebService : public IAuthorizationService
+  class AuthorizationWebService : public BaseAuthorizationService
   {
   private:
     std::string url_;
@@ -31,12 +32,23 @@
     std::string identifier_;
     std::string userProfileUrl_;
 
-    bool IsGrantedInternal(unsigned int& validity,
+  protected:
+    virtual bool IsGrantedInternal(unsigned int& validity,
                            OrthancPluginHttpMethod method,
                            const AccessedResource& access,
                            const Token* token,
-                           const std::string& tokenValue);
+                           const std::string& tokenValue) ORTHANC_OVERRIDE;
     
+    virtual bool GetUserProfileInternal(unsigned int& validity,
+                                Json::Value& profile /* out */,
+                                const Token* token,
+                                const std::string& tokenValue) ORTHANC_OVERRIDE;
+
+    virtual bool HasUserPermissionInternal(unsigned int& validity,
+                                   const std::string& permission,
+                                   const Token* token,
+                                   const std::string& tokenValue) ORTHANC_OVERRIDE;
+  
   public:
     AuthorizationWebService(const std::string& url) :
       url_(url)
@@ -49,26 +61,5 @@
     void SetIdentifier(const std::string& webServiceIdentifier);
 
     void SetUserProfileUrl(const std::string& url);
-
-    virtual bool IsGranted(unsigned int& validity,
-                           OrthancPluginHttpMethod method,
-                           const AccessedResource& access,
-                           const Token& token,
-                           const std::string& tokenValue)
-    {
-      return IsGrantedInternal(validity, method, access, &token, tokenValue);
-    }
-    
-    virtual bool IsGranted(unsigned int& validity,
-                           OrthancPluginHttpMethod method,
-                           const AccessedResource& access)
-    {
-      return IsGrantedInternal(validity, method, access, NULL, "");
-    }
-
-    virtual bool GetUserProfile(Json::Value& profile /* out */,
-                                const Token& token,
-                                const std::string& tokenValue);
-
   };
 }