00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00035 #ifndef OW_AUTHORIZERMANAGER_HPP_INCLUDE_GUARD_
00036 #define OW_AUTHORIZERMANAGER_HPP_INCLUDE_GUARD_
00037 
00038 #include "OW_config.h"
00039 #include "OW_ServiceIFC.hpp"
00040 #include "OW_Authorizer2IFC.hpp"
00041 #include "OW_CimomCommonFwd.hpp"
00042 
00043 namespace OW_NAMESPACE
00044 {
00045 
00046 class OW_CIMOMCOMMON_API AuthorizerManager : public ServiceIFC
00047 {
00048 public:
00049 
00050    AuthorizerManager();
00051    AuthorizerManager(const Authorizer2IFCRef& authorizerRef);
00052    
00053    ~AuthorizerManager();
00054 
00055    virtual String getName() const;
00056 
00057    void setAuthorizer(const Authorizer2IFCRef& authorizerRef)
00058    {
00059       m_authorizer = authorizerRef;
00060    }
00061 
00062    void turnOff(OperationContext& context);
00063    void turnOn(OperationContext& context);
00064    bool isOn(OperationContext& context);
00065 
00089    bool allowReadInstance(
00090       const ServiceEnvironmentIFCRef& env,
00091         const String& ns,
00092       const String& className,
00093       const StringArray* clientPropertyList,
00094       StringArray& authorizedPropertyList,
00095       OperationContext& context);
00096 
00097 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00098 
00109    bool allowWriteInstance(
00110       const ServiceEnvironmentIFCRef& env,
00111       const String& ns,
00112       const CIMObjectPath& op,
00113       Authorizer2IFC::EDynamicFlag dynamic,
00114       Authorizer2IFC::EWriteFlag flag,
00115       OperationContext& context);
00116 #endif
00117 
00124    bool allowReadSchema(
00125       const ServiceEnvironmentIFCRef& env,
00126       const String& ns,
00127       OperationContext& context);
00128 
00129 #if !defined(OW_DISABLE_SCHEMA_MANIPULATION) || !defined(OW_DISABLE_QUALIFIER_DECLARATION)
00130 
00137    bool allowWriteSchema(
00138       const ServiceEnvironmentIFCRef& env,
00139       const String& ns,
00140       Authorizer2IFC::EWriteFlag flag,
00141       OperationContext& context);
00142 #endif
00143 
00150    bool allowAccessToNameSpace(
00151       const ServiceEnvironmentIFCRef& env,
00152       const String& ns,
00153       Authorizer2IFC::EAccessType accessType,
00154       OperationContext& context);
00155 
00156 #if !defined(OW_DISABLE_INSTANCE_MANIPULATION) && !defined(OW_DISABLE_NAMESPACE_MANIPULATION)
00157 
00163    bool allowCreateNameSpace(
00164       const ServiceEnvironmentIFCRef& env,
00165       const String& ns,
00166       OperationContext& context);
00167 
00174    bool allowDeleteNameSpace(
00175       const ServiceEnvironmentIFCRef& env,
00176       const String& ns,
00177       OperationContext& context);
00178 #endif
00179 
00185    bool allowEnumNameSpace(
00186       const ServiceEnvironmentIFCRef& env,
00187       OperationContext& context);
00188 
00198    bool allowMethodInvocation(
00199       const ServiceEnvironmentIFCRef& env,
00200       const String& ns,
00201       const CIMObjectPath& path,
00202       const String& methodName,
00203       OperationContext& context);
00204 
00209    virtual void init(const ServiceEnvironmentIFCRef& env);
00210    virtual void shutdown();
00211 
00212 private:
00213 
00214    Authorizer2IFCRef m_authorizer;
00215    bool m_initialized;
00216 };
00217 
00218 }
00219 
00220 
00221 #endif
00222 
00223