Merge pull request #161 from Scrumplex/custom-clientid

Add MSA-Client-ID override in UI
This commit is contained in:
LennyMcLennington 2022-02-13 14:06:27 +00:00 committed by GitHub
commit a5b06514c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 102 additions and 28 deletions

View File

@ -14,7 +14,7 @@
#include "ui/pages/global/ProxyPage.h"
#include "ui/pages/global/ExternalToolsPage.h"
#include "ui/pages/global/AccountListPage.h"
#include "ui/pages/global/PastePage.h"
#include "ui/pages/global/APIPage.h"
#include "ui/pages/global/CustomCommandsPage.h"
#include "ui/themes/ITheme.h"
@ -719,6 +719,9 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
m_settings->registerSetting("CloseAfterLaunch", false);
// Custom MSA credentials
m_settings->registerSetting("MSAClientIDOverride", "");
// Init page provider
{
m_globalSettingsProvider = std::make_shared<GenericPageProvider>(tr("Settings"));
@ -730,7 +733,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
m_globalSettingsProvider->addPage<ProxyPage>();
m_globalSettingsProvider->addPage<ExternalToolsPage>();
m_globalSettingsProvider->addPage<AccountListPage>();
m_globalSettingsProvider->addPage<PastePage>();
m_globalSettingsProvider->addPage<APIPage>();
}
qDebug() << "<> Settings loaded.";
}
@ -1516,3 +1519,13 @@ QString Application::getJarsPath()
}
return m_jarsPath;
}
QString Application::getMSAClientID()
{
QString clientIDOverride = m_settings->get("MSAClientIDOverride").toString();
if (!clientIDOverride.isEmpty()) {
return clientIDOverride;
}
return BuildConfig.MSA_CLIENT_ID;
}

View File

@ -117,6 +117,8 @@ public:
QString getJarsPath();
QString getMSAClientID();
/// this is the root of the 'installation'. Used for automatic updates
const QString &root() {
return m_rootPath;

View File

@ -723,8 +723,8 @@ SET(LAUNCHER_SOURCES
ui/pages/global/LauncherPage.h
ui/pages/global/ProxyPage.cpp
ui/pages/global/ProxyPage.h
ui/pages/global/PastePage.cpp
ui/pages/global/PastePage.h
ui/pages/global/APIPage.cpp
ui/pages/global/APIPage.h
# GUI - platform pages
ui/pages/modplatform/VanillaPage.cpp
@ -871,7 +871,7 @@ qt5_wrap_ui(LAUNCHER_UI
ui/pages/global/AccountListPage.ui
ui/pages/global/JavaPage.ui
ui/pages/global/LauncherPage.ui
ui/pages/global/PastePage.ui
ui/pages/global/APIPage.ui
ui/pages/global/ProxyPage.ui
ui/pages/global/MinecraftPage.ui
ui/pages/global/ExternalToolsPage.ui

View File

@ -14,7 +14,7 @@ using Activity = Katabasis::Activity;
MSAStep::MSAStep(AccountData* data, Action action) : AuthStep(data), m_action(action) {
OAuth2::Options opts;
opts.scope = "XboxLive.signin offline_access";
opts.clientIdentifier = BuildConfig.MSA_CLIENT_ID;
opts.clientIdentifier = APPLICATION->getMSAClientID();
opts.authorizationUrl = "https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode";
opts.accessTokenUrl = "https://login.microsoftonline.com/consumers/oauth2/v2.0/token";

View File

@ -13,8 +13,8 @@
* limitations under the License.
*/
#include "PastePage.h"
#include "ui_PastePage.h"
#include "APIPage.h"
#include "ui_APIPage.h"
#include <QMessageBox>
#include <QFileDialog>
@ -26,9 +26,9 @@
#include "tools/BaseProfiler.h"
#include "Application.h"
PastePage::PastePage(QWidget *parent) :
APIPage::APIPage(QWidget *parent) :
QWidget(parent),
ui(new Ui::PastePage)
ui(new Ui::APIPage)
{
static QRegularExpression validUrlRegExp("https?://.+");
ui->setupUi(this);
@ -37,26 +37,30 @@ PastePage::PastePage(QWidget *parent) :
loadSettings();
}
PastePage::~PastePage()
APIPage::~APIPage()
{
delete ui;
}
void PastePage::loadSettings()
void APIPage::loadSettings()
{
auto s = APPLICATION->settings();
QString pastebinURL = s->get("PastebinURL").toString();
ui->urlChoices->setCurrentText(pastebinURL);
QString msaClientID = s->get("MSAClientIDOverride").toString();
ui->msaClientID->setText(msaClientID);
}
void PastePage::applySettings()
void APIPage::applySettings()
{
auto s = APPLICATION->settings();
QString pastebinURL = ui->urlChoices->currentText();
s->set("PastebinURL", pastebinURL);
QString msaClientID = ui->msaClientID->text();
s->set("MSAClientIDOverride", msaClientID);
}
bool PastePage::apply()
bool APIPage::apply()
{
applySettings();
return true;

View File

@ -21,32 +21,32 @@
#include <Application.h>
namespace Ui {
class PastePage;
class APIPage;
}
class PastePage : public QWidget, public BasePage
class APIPage : public QWidget, public BasePage
{
Q_OBJECT
public:
explicit PastePage(QWidget *parent = 0);
~PastePage();
explicit APIPage(QWidget *parent = 0);
~APIPage();
QString displayName() const override
{
return tr("Log Upload");
return tr("APIs");
}
QIcon icon() const override
{
return APPLICATION->getThemedIcon("log");
return APPLICATION->getThemedIcon("worlds");
}
QString id() const override
{
return "log-upload";
return "apis";
}
QString helpPage() const override
{
return "Log-Upload";
return "APIs";
}
virtual bool apply() override;
@ -55,6 +55,6 @@ private:
void applySettings();
private:
Ui::PastePage *ui;
Ui::APIPage *ui;
};

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>PastePage</class>
<widget class="QWidget" name="PastePage">
<class>APIPage</class>
<widget class="QWidget" name="APIPage">
<property name="geometry">
<rect>
<x>0</x>
@ -34,7 +34,7 @@
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox_2">
<widget class="QGroupBox" name="groupBox_paste">
<property name="title">
<string>Pastebin URL</string>
</property>
@ -100,6 +100,58 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_msa">
<property name="title">
<string>Microsoft Authentication</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Note: you probably don't need to set this if logging in via Microsoft Authentication already works.</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="msaClientID">
<property name="placeholderText">
<string>(Default)</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>Enter a custom client ID for Microsoft Authentication here. </string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
@ -108,7 +160,7 @@
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>216</height>
<height>40</height>
</size>
</property>
</spacer>

View File

@ -73,7 +73,10 @@ AccountListPage::AccountListPage(QWidget *parent)
updateButtonStates();
// Xbox authentication won't work without a client identifier, so disable the button if it is missing
ui->actionAddMicrosoft->setVisible(BuildConfig.MSA_CLIENT_ID.size() != 0);
if (APPLICATION->getMSAClientID().isEmpty()) {
ui->actionAddMicrosoft->setVisible(false);
ui->actionAddMicrosoft->setToolTip(tr("No Microsoft Authentication client ID was set."));
}
}
AccountListPage::~AccountListPage()