Example #1
0
        public IDoxSession CreateAuthenticatedSession(string defaultUserEmail)
        {
            var outlookWindow = new NativeWindow();
            try
            {
                outlookWindow.AssignHandle(FindWindowEx(IntPtr.Zero, IntPtr.Zero, "rctrl_renwnd32", null));
                _loginUi.NativeWindow = outlookWindow;
                _loginUi.LoginFieldEnabled = true;
                _loginUi.RegisterTabVisible = true;

                IAuthenticator authenticator = new Authenticator(_loginUi);
                authenticator.Api = new DoxApi(OptionApi.GetString("SendLinkServiceUrl"));
                string username = OptionApi.GetString("SendLinkCloudStorageLoginName");
                username = string.IsNullOrEmpty(username) ? defaultUserEmail : username;

                string deviceToken = OptionApi.GetEncrypted("SendLinkDeviceToken", _entropy);
                bool cancelled;
                var session = authenticator.Authenticate(username, deviceToken, out cancelled);
                if (cancelled)
                {
                    throw new AbortSendLinkException("User cancelled Sendlink", false);
                }
                return session;
            }
            finally
            {
                if (outlookWindow != null)
                {
                    // TFS 6777: Outlook 2010 + Interwoven EMM: On cancel, Mail Inspector "Send" button inoperable, outlook remains in memory.
                    outlookWindow.ReleaseHandle();
                }
            }
        }