1
0

resultWebAuth.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #ifndef NULLSOFT_AUTH_LOGINRESULT_WEBAUTH_HEADER
  2. #define NULLSOFT_AUTH_LOGINRESULT_WEBAUTH_HEADER
  3. #if defined(_MSC_VER) && (_MSC_VER >= 1020)
  4. #pragma once
  5. #endif
  6. #include "./loginResult.h"
  7. #include "./browserEvent.h"
  8. #include "../omBrowser/ifc_omservice.h"
  9. #include "../omBrowser/ifc_omservicecommand.h"
  10. #include "../../nu/dispatchTable.h"
  11. #include <bfc/multipatch.h>
  12. class LoginData;
  13. class LoginCredentials;
  14. class ExternalManager;
  15. class obj_ombrowser;
  16. #define MPIID_OMSVC 10
  17. #define MPIID_OMSVCCOMMAND 20
  18. class LoginResultWebAuth : public LoginResult,
  19. public IDispatch,
  20. public BrowserEvent,
  21. public MultiPatch<MPIID_OMSVC, ifc_omservice>,
  22. public MultiPatch<MPIID_OMSVCCOMMAND, ifc_omservicecommand>
  23. {
  24. public:
  25. typedef enum
  26. {
  27. DISPID_LOGINCOMPLETE = 700,
  28. DISPID_GETPAGERECT = 701,
  29. DISPID_GETBOXRECT = 702,
  30. DISPID_SETSTATUS = 703,
  31. DISPID_NAVIGATE = 704,
  32. DISPID_GETSTRING = 705,
  33. } DispatchCodes;
  34. protected:
  35. LoginResultWebAuth(obj_ombrowser *pManager, LPCWSTR pszTargetUrl, LoginData *pInput, Callback fnCallback, void *pUser);
  36. ~LoginResultWebAuth();
  37. public:
  38. static HRESULT CreateInstance(LPCWSTR targetUrl, LoginData *input, Callback callback, void *user, LoginResultWebAuth **instance);
  39. public:
  40. /* IUnknown */
  41. STDMETHOD(QueryInterface)(REFIID riid, PVOID *ppvObject);
  42. STDMETHOD_(ULONG, AddRef)(void);
  43. STDMETHOD_(ULONG, Release)(void);
  44. /* IDispatchable */
  45. DISPTABLE_INCLUDE();
  46. DISPHANDLER_REGISTER(OnLoginComplete);
  47. DISPHANDLER_REGISTER(OnGetPageRect);
  48. DISPHANDLER_REGISTER(OnGetBoxRect);
  49. DISPHANDLER_REGISTER(OnSetStatus);
  50. DISPHANDLER_REGISTER(OnNavigate);
  51. DISPHANDLER_REGISTER(OnGetString);
  52. /* LoignResult */
  53. HRESULT GetWaitHandle(HANDLE *handle);
  54. HRESULT GetUser(void **pUser);
  55. HRESULT RequestAbort(BOOL fDrop);
  56. HRESULT IsCompleted();
  57. HRESULT IsAborting();
  58. HRESULT GetLoginData(LoginData **loginData);
  59. /* BrowserEvent */
  60. STDMETHOD_(void, Event_BrowserReady)(HWND hBrowser);
  61. STDMETHOD_(void, Event_DocumentReady)(HWND hBrowser);
  62. STDMETHOD_(void, Event_BrowserClosing)(HWND hBrowser);
  63. STDMETHOD_(void, Event_InvokeApc)(HWND hBrowser, LPARAM param);
  64. protected:
  65. /* Dispatchable */
  66. size_t Wasabi_AddRef();
  67. size_t Wasabi_Release();
  68. int Wasabi_QueryInterface(GUID iid, void **object);
  69. /* ifc_omservice */
  70. unsigned int GetId();
  71. HRESULT GetName(wchar_t *pszBuffer, int cchBufferMax);
  72. HRESULT GetUrl(wchar_t *pszBuffer, int cchBufferMax);
  73. HRESULT GetExternal(IDispatch **ppDispatch);
  74. /* ifc_omservicecommand */
  75. HRESULT QueryState(HWND hBrowser, const GUID *commandGroup, UINT commandId);
  76. HRESULT Exec(HWND hBrowser, const GUID *commandGroup, UINT commandId, ULONG_PTR commandArg);
  77. public:
  78. HRESULT GetResult(INT *authCode, LoginCredentials **credentials);
  79. private:
  80. static HRESULT InitBrowserManager(obj_ombrowser **browserMngr);
  81. HRESULT Start();
  82. HRESULT Finish();
  83. void NotifyComplete();
  84. HRESULT DispParamsToCredentials(WORD wFlags, DISPPARAMS FAR *pdispparams, VARIANT FAR *pvarResult, UINT FAR *puArgErr, HRESULT *errorEx, LPWSTR *finishUrl);
  85. protected:
  86. ULONG ref;
  87. LoginData *input;
  88. Callback callback;
  89. void *user;
  90. LoginCredentials *credentials;
  91. INT authCode;
  92. obj_ombrowser *browserMngr;
  93. LPWSTR targetUrl;
  94. HWND hView;
  95. CRITICAL_SECTION lock;
  96. HANDLE completed;
  97. ExternalManager *external;
  98. DISPID dispId;
  99. BOOL connectionVerified;
  100. LPWSTR readyUrl;
  101. protected:
  102. RECVS_MULTIPATCH;
  103. };
  104. #endif //NULLSOFT_AUTH_LOGINRESULT_WEBAUTH_HEADER