From 9fe2f6126dc7b9396d188b57ccb097f0035f57b7 Mon Sep 17 00:00:00 2001 From: Silarn Date: Mon, 20 Aug 2018 18:34:31 -0500 Subject: Initial Nexus API changes: - Switch to SSO with WebSocket - Update endpoints (all but version checking) --- src/settings.cpp | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) (limited to 'src/settings.cpp') diff --git a/src/settings.cpp b/src/settings.cpp index 0ce647fd..7a1d6737 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -332,15 +332,12 @@ QString Settings::getNMMVersion() const return result; } -bool Settings::getNexusLogin(QString &username, QString &password) const +bool Settings::getNexusApiKey(QString &apiKey) const { - if (m_Settings.value("Settings/nexus_login", false).toBool()) { - username = m_Settings.value("Settings/nexus_username", "").toString(); - password = deObfuscate(m_Settings.value("Settings/nexus_password", "").toString()); - return true; - } else { + if (m_Settings.value("Settings/nexus_api_key", "").toString().isEmpty()) return false; - } + apiKey = deObfuscate(m_Settings.value("Settings/nexus_api_key", "").toString()); + return true; } bool Settings::getSteamLogin(QString &username, QString &password) const @@ -431,11 +428,9 @@ QString Settings::executablesBlacklist() const ).toString(); } -void Settings::setNexusLogin(QString username, QString password) +void Settings::setNexusApiKey(QString apiKey) { - m_Settings.setValue("Settings/nexus_login", true); - m_Settings.setValue("Settings/nexus_username", username); - m_Settings.setValue("Settings/nexus_password", obfuscate(password)); + m_Settings.setValue("Settings/nexus_api_key", obfuscate(apiKey)); } void Settings::setSteamLogin(QString username, QString password) @@ -674,11 +669,29 @@ void Settings::resetDialogs() QuestionBoxMemory::resetDialogs(); } +void Settings::processApiKey(const QString &apiKey) +{ + m_Settings.setValue("Settings/nexus_api_key", obfuscate(apiKey)); +} + +void Settings::checkApiKey(QPushButton *nexusButton) +{ + if (m_Settings.value("Settings/nexus_api_key", "").toString().isEmpty()) { + nexusButton->setEnabled(true); + nexusButton->setText("Connect to Nexus"); + QMessageBox::warning(qApp->activeWindow(), tr("Error"), + tr("Failed to retrieve a Nexus API key! Please try again." + "A browser window should open asking you to authorize.")); + } +} + void Settings::query(PluginContainer *pluginContainer, QWidget *parent) { SettingsDialog dialog(pluginContainer, parent); connect(&dialog, SIGNAL(resetDialogs()), this, SLOT(resetDialogs())); + connect(&dialog, SIGNAL(processApiKey(const QString &)), this, SLOT(processApiKey(const QString &))); + connect(&dialog, SIGNAL(closeApiConnection(QPushButton *)), this, SLOT(checkApiKey(QPushButton *))); std::vector> tabs; @@ -960,9 +973,7 @@ void Settings::DiagnosticsTab::update() Settings::NexusTab::NexusTab(Settings *parent, SettingsDialog &dialog) : Settings::SettingsTab(parent, dialog) - , m_loginCheckBox(dialog.findChild("loginCheckBox")) - , m_usernameEdit(dialog.findChild("usernameEdit")) - , m_passwordEdit(dialog.findChild("passwordEdit")) + , m_nexusConnect(dialog.findChild("nexusConnect")) , m_offlineBox(dialog.findChild("offlineBox")) , m_proxyBox(dialog.findChild("proxyBox")) , m_knownServersList(dialog.findChild("knownServersList")) @@ -970,10 +981,9 @@ Settings::NexusTab::NexusTab(Settings *parent, SettingsDialog &dialog) dialog.findChild("preferredServersList")) , m_endorsementBox(dialog.findChild("endorsementBox")) { - if (parent->automaticLoginEnabled()) { - m_loginCheckBox->setChecked(true); - m_usernameEdit->setText(m_Settings.value("Settings/nexus_username", "").toString()); - m_passwordEdit->setText(deObfuscate(m_Settings.value("Settings/nexus_password", "").toString())); + if (!m_Settings.value("Settings/nexus_api_key", "").toString().isEmpty()) { + m_nexusConnect->setText("Nexus API Key Stored"); + m_nexusConnect->setDisabled(true); } m_offlineBox->setChecked(parent->offlineMode()); @@ -1009,6 +1019,7 @@ Settings::NexusTab::NexusTab(Settings *parent, SettingsDialog &dialog) void Settings::NexusTab::update() { + /* if (m_loginCheckBox->isChecked()) { m_Settings.setValue("Settings/nexus_login", true); m_Settings.setValue("Settings/nexus_username", m_usernameEdit->text()); @@ -1018,6 +1029,7 @@ void Settings::NexusTab::update() m_Settings.remove("Settings/nexus_username"); m_Settings.remove("Settings/nexus_password"); } + */ m_Settings.setValue("Settings/offline_mode", m_offlineBox->isChecked()); m_Settings.setValue("Settings/use_proxy", m_proxyBox->isChecked()); m_Settings.setValue("Settings/endorsement_integration", m_endorsementBox->isChecked()); -- cgit v1.3.1