1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-20 19:57:45 +00:00

Add autologin and default-profile options

This commit is contained in:
redstrate 2021-11-23 16:02:02 -05:00
parent eaacd3303a
commit 80306d65fb
2 changed files with 63 additions and 2 deletions

View file

@ -42,7 +42,7 @@ struct ProfileSettings {
}; };
struct LoginInformation { struct LoginInformation {
ProfileSettings* settings = nullptr; const ProfileSettings* settings = nullptr;
QString username, password, oneTimePassword; QString username, password, oneTimePassword;
}; };

View file

@ -3,6 +3,10 @@
#include <QApplication> #include <QApplication>
#include <QCommandLineParser> #include <QCommandLineParser>
#include <keychain.h>
#include "sapphirelauncher.h"
#include "squareboot.h"
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
QApplication app(argc, argv); QApplication app(argc, argv);
@ -26,10 +30,67 @@ int main(int argc, char* argv[]) {
QCommandLineOption noguiOption("nogui", "Don't open a main window."); QCommandLineOption noguiOption("nogui", "Don't open a main window.");
parser.addOption(noguiOption); parser.addOption(noguiOption);
QCommandLineOption autologinOption("autologin", "Auto-login with the default profile. This requires the profile to have remember username/password enabled!");
parser.addOption(autologinOption);
QCommandLineOption profileOption("default-profile", "Profile to use for default profile and autologin.", "profile");
parser.addOption(profileOption);
parser.process(app); parser.process(app);
if(!parser.isSet(noguiOption)) { if(parser.isSet(profileOption)) {
c.defaultProfileIndex = c.getProfileIndex(parser.value(profileOption));
if(c.defaultProfileIndex == -1) {
qInfo() << "The profile \"" << parser.value(profileOption) << "\" does not exist!";
return 0;
}
}
if(parser.isSet(autologinOption)) {
const auto profile = c.getProfile(c.defaultProfileIndex);
if(!profile.rememberUsername || !profile.rememberPassword) {
qInfo() << "Profile does not have a username and/or password saved, autologin disabled.";
return 0;
}
auto loop = new QEventLoop();
QString username, password;
auto usernameJob = new QKeychain::ReadPasswordJob("LauncherWindow");
usernameJob->setKey(profile.name + "-username");
usernameJob->start();
c.connect(usernameJob, &QKeychain::ReadPasswordJob::finished, [loop, usernameJob, &username](QKeychain::Job* j) {
username = usernameJob->textData();
loop->quit();
});
loop->exec();
auto passwordJob = new QKeychain::ReadPasswordJob("LauncherWindow");
passwordJob->setKey(profile.name + "-password");
passwordJob->start();
c.connect(passwordJob, &QKeychain::ReadPasswordJob::finished, [loop, passwordJob, &password](QKeychain::Job* j) {
password = passwordJob->textData();
loop->quit();
});
loop->exec();
auto info = LoginInformation{&profile, username, password, ""};
if(profile.isSapphire) {
c.sapphireLauncher->login(profile.lobbyURL, info);
} else {
c.squareBoot->bootCheck(info);
}
}
LauncherWindow w(c); LauncherWindow w(c);
if(!parser.isSet(noguiOption)) {
w.show(); w.show();
} }