// SecurityManager.h : Declaration of the CSecurityManager #ifndef __SECURITYMANAGER_H_ #define __SECURITYMANAGER_H_ #include "resource.h" // main symbols #include "AppObject.h" #include "Advisers.h" #include "CloneObjectImpl.h" #include "SecurityItemImpl.h" ///////////////////////////////////////////////////////////////////////////// // CSecurityManager class ATL_NO_VTABLE CSecurityManager : public CComObjectRootEx, public CComCoClass, public CAppObjectRoot, public ISecurityManager, public ISecurityGroup, public ISecurityItemImpl, public IStructureLevelImpl, public ISpecifyPropertyPagesImpl, public CLogHelper, public ICloneObjectImpl, public _IApplicationStateEvents, protected CAdviseManager { public: CSecurityManager() : CAppObjectRoot( CLSID_SecurityManager ), IStructureLevelImpl( CLSID_SecurityManager ), ISecurityItemImpl (this), CLogHelper (this) { } STDMETHOD(FinalConstruct)(); STDMETHOD(FinalRelease)(); DECLARE_APP_OBJECT_SUPPORT() DECLARE_OBJECT_LOCKS_FUNCTIONS() DECLARE_ADVISE_MANAGER_SUPPORT() DECLARE_REGISTRY_RESOURCEID(IDR_SECURITYMANAGER) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CSecurityManager) COM_INTERFACE_ENTRY(IAppObject) COM_INTERFACE_ENTRY(ICloneObject) COM_INTERFACE_ENTRY(ISecurityItem) COM_INTERFACE_ENTRY(ISecurityGroup) COM_INTERFACE_ENTRY(ISecurityManager) COM_INTERFACE_ENTRY(ISpecifyPropertyPages) COM_INTERFACE_ENTRY(_IApplicationStateEvents) ISTRUCTURELEVELIMPL_ENTRIES END_COM_MAP() BEGIN_PROP_MAP(CSecurityManager) PROP_PAGE(CLSID_SecurityManagerPropPage) PROP_PAGE(CLSID_SecurityItemPropPage) END_PROP_MAP() DECLARE_SECURITYPROPSUPPORT BEGIN_SECURITYPROP_MAP SECURITY_PROPENTRY (0,100,1,1,0) SECURITY_PROPENTRY (1,101,1,0,0) END_SECURITYPROP_MAP // ICloneObject public: STDMETHOD(Assign)(IUnknown* pSourseObj); STDMETHOD(AssignPart)(REFIID riid, IUnknown *pSource); // ISecurityManager public: STDMETHOD(CheckPermission)(IUnknown* pObj, long nPropID, BOOL *bPermit); STDMETHOD(get_LoggedUser)(ISecurityUser* *pVal); STDMETHOD(UILogin)(HWND hWndParent); STDMETHOD(Login)(BSTR bsName, BSTR bsPass); // ISecurityGroup public: STDMETHOD(DeleteUser)(ISecurityUser* pUser); STDMETHOD(AddUser)(ISecurityUser* pUser); STDMETHOD(get_Users)(IEnumSecurityUsers* *pVal); STDMETHOD(get_UserCount)(long *pVal); STDMETHOD(GetUser)(BSTR bsSecurityID, ISecurityUser* *ppUser); // IStructureItem public: STDMETHOD(Init)(); STDMETHOD(PostInit)(); STDMETHOD_(void,PreClose)(); STDMETHOD_(void,Close)(); STDMETHOD(LoadItem)( IStorage* pIParentStorage, BOOL bGlobalWorkspace ); STDMETHOD(SaveItem)( IStorage* pIParentStorage, BOOL bGlobalWorkspace ); STDMETHOD(get_SIName)(BSTR * pVal) { if (pVal == NULL) return E_POINTER; return LoadString( 1, pVal ); } // _IApplicationStateEvents public: STDMETHOD(OnInitComplete)() { return S_OK; } STDMETHOD(OnAppLoadComplete)(); STDMETHOD_(VOID, OnShowAppWindow)() {} STDMETHOD(OnGUIReady)() { return S_OK; } private: HRESULT AssignISecurityGroup(IUnknown *pSrc); HRESULT LoadSecurityData(IStorage *pStg); HRESULT SaveSecurityData(IStorage *pStg); std::vector < CComPtr < ISecurityUser > > m_vecUsers; // registered users (groups are also users) CComPtr m_oLoggedUser; }; #endif //__SECURITYMANAGER_H_