public LoginResultData ContinueLogin(LoginResultData loginResultData, string twofacode) { var host = loginResultData.Host; var keychainAdapter = keychain.Connect(host); if (keychainAdapter.Credential == null) { return(new LoginResultData(LoginResultCodes.Failed, Localization.LoginFailed, host)); } var username = keychainAdapter.Credential.Username; var password = keychainAdapter.Credential.Token; try { loginResultData = TryLogin(host, username, password, twofacode); if (loginResultData.Code == LoginResultCodes.Success) { if (string.IsNullOrEmpty(loginResultData.Token)) { throw new InvalidOperationException("Returned token is null or empty"); } keychainAdapter.Update(loginResultData.Token, username); username = RetrieveUsername(loginResultData.Token, host); keychainAdapter.Update(loginResultData.Token, username); keychain.SaveToSystem(host); return(loginResultData); } return(loginResultData); } catch (Exception e) { logger.Warning(e, "Login Exception"); keychain.Clear(host, false); return(new LoginResultData(LoginResultCodes.Failed, Localization.LoginFailed, host)); } }
internal LoginResult(LoginResultData data, Action <bool, string> callback, Action <LoginResult> twofaCallback) { this.Data = data; this.Callback = callback; this.TwoFACallback = twofaCallback; }