mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 06:57:37 +02:00
adding proper checking for saved username/login
This commit is contained in:
parent
6bcf6eaae7
commit
ee516fd79f
2 changed files with 42 additions and 54 deletions
|
@ -161,6 +161,10 @@ Item {
|
||||||
onFocusChanged: {
|
onFocusChanged: {
|
||||||
root.text = "";
|
root.text = "";
|
||||||
}
|
}
|
||||||
|
Component.onCompleted: {
|
||||||
|
var savedUsername = Settings.getValue("wallet/savedUsername", "");
|
||||||
|
usernameField.text = savedUsername === "Unknown user" ? "" : savedUsername;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
TextField {
|
||||||
|
@ -256,18 +260,18 @@ Item {
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: autoLogoutCheckbox;
|
id: autoLogoutCheckbox
|
||||||
checked: Settings.getValue("wallet/autoLogout", true);
|
checked: !Settings.getValue("wallet/autoLogout", true)
|
||||||
text: "Keep me signed in"
|
text: "Keep me signed in"
|
||||||
boxSize: 20;
|
boxSize: 20;
|
||||||
labelFontSize: 15;
|
labelFontSize: 15
|
||||||
color: hifi.colors.black;
|
color: hifi.colors.black
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
Settings.setValue("wallet/autoLogout", !checked);
|
Settings.setValue("wallet/autoLogout", !checked);
|
||||||
if (checked) {
|
if (checked) {
|
||||||
Settings.setValue("wallet/savedUsername", "");
|
|
||||||
} else {
|
|
||||||
Settings.setValue("wallet/savedUsername", Account.username);
|
Settings.setValue("wallet/savedUsername", Account.username);
|
||||||
|
} else {
|
||||||
|
Settings.setValue("wallet/savedUsername", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Component.onDestruction: {
|
Component.onDestruction: {
|
||||||
|
|
|
@ -32,20 +32,17 @@
|
||||||
HIFI_QML_DEF(LoginDialog)
|
HIFI_QML_DEF(LoginDialog)
|
||||||
Q_LOGGING_CATEGORY(login_dialog, "hifi.login.dialog")
|
Q_LOGGING_CATEGORY(login_dialog, "hifi.login.dialog")
|
||||||
|
|
||||||
LoginDialog::LoginDialog(QQuickItem *parent) : OffscreenQmlDialog(parent) {
|
LoginDialog::LoginDialog(QQuickItem* parent) : OffscreenQmlDialog(parent) {
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
#if !defined(Q_OS_ANDROID)
|
#if !defined(Q_OS_ANDROID)
|
||||||
connect(accountManager.data(), &AccountManager::loginComplete,
|
connect(accountManager.data(), &AccountManager::loginComplete, this, &LoginDialog::handleLoginCompleted);
|
||||||
this, &LoginDialog::handleLoginCompleted);
|
connect(accountManager.data(), &AccountManager::loginFailed, this, &LoginDialog::handleLoginFailed);
|
||||||
connect(accountManager.data(), &AccountManager::loginFailed,
|
|
||||||
this, &LoginDialog::handleLoginFailed);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
LoginDialog::~LoginDialog() {
|
LoginDialog::~LoginDialog() {
|
||||||
Setting::Handle<bool> loginDialogPoppedUp{ "loginDialogPoppedUp", false };
|
Setting::Handle<bool> loginDialogPoppedUp{ "loginDialogPoppedUp", false };
|
||||||
auto poppedUp = loginDialogPoppedUp.get();
|
if (loginDialogPoppedUp.get()) {
|
||||||
if (poppedUp) {
|
|
||||||
QJsonObject data;
|
QJsonObject data;
|
||||||
data["action"] = "user opted out";
|
data["action"] = "user opted out";
|
||||||
UserActivityLogger::getInstance().logAction("encourageLoginDialog", data);
|
UserActivityLogger::getInstance().logAction("encourageLoginDialog", data);
|
||||||
|
@ -53,8 +50,7 @@ LoginDialog::~LoginDialog() {
|
||||||
loginDialogPoppedUp.set(false);
|
loginDialogPoppedUp.set(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoginDialog::showWithSelection()
|
void LoginDialog::showWithSelection() {
|
||||||
{
|
|
||||||
auto tabletScriptingInterface = DependencyManager::get<TabletScriptingInterface>();
|
auto tabletScriptingInterface = DependencyManager::get<TabletScriptingInterface>();
|
||||||
auto tablet = dynamic_cast<TabletProxy*>(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system"));
|
auto tablet = dynamic_cast<TabletProxy*>(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system"));
|
||||||
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
||||||
|
@ -86,9 +82,7 @@ void LoginDialog::toggleAction() {
|
||||||
} else {
|
} else {
|
||||||
// change the menu item to login
|
// change the menu item to login
|
||||||
loginAction->setText("Login / Sign Up");
|
loginAction->setText("Login / Sign Up");
|
||||||
connection = connect(loginAction, &QAction::triggered, [] {
|
connection = connect(loginAction, &QAction::triggered, [] { LoginDialog::showWithSelection(); });
|
||||||
LoginDialog::showWithSelection();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,9 +130,8 @@ void LoginDialog::linkSteam() {
|
||||||
payload.insert("steam_auth_ticket", QJsonValue::fromVariant(QVariant(ticket)));
|
payload.insert("steam_auth_ticket", QJsonValue::fromVariant(QVariant(ticket)));
|
||||||
|
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
accountManager->sendRequest(LINK_STEAM_PATH, AccountManagerAuth::Required,
|
accountManager->sendRequest(LINK_STEAM_PATH, AccountManagerAuth::Required, QNetworkAccessManager::PostOperation,
|
||||||
QNetworkAccessManager::PostOperation, callbackParams,
|
callbackParams, QJsonDocument(payload).toJson());
|
||||||
QJsonDocument(payload).toJson());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,28 +160,24 @@ void LoginDialog::createAccountFromStream(QString username) {
|
||||||
|
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
accountManager->sendRequest(CREATE_ACCOUNT_FROM_STEAM_PATH, AccountManagerAuth::None,
|
accountManager->sendRequest(CREATE_ACCOUNT_FROM_STEAM_PATH, AccountManagerAuth::None,
|
||||||
QNetworkAccessManager::PostOperation, callbackParams,
|
QNetworkAccessManager::PostOperation, callbackParams, QJsonDocument(payload).toJson());
|
||||||
QJsonDocument(payload).toJson());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoginDialog::openUrl(const QString& url) const {
|
void LoginDialog::openUrl(const QString& url) const {
|
||||||
auto tablet = dynamic_cast<TabletProxy*>(DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system"));
|
auto tablet = dynamic_cast<TabletProxy*>(
|
||||||
|
DependencyManager::get<TabletScriptingInterface>()->getTablet("com.highfidelity.interface.tablet.system"));
|
||||||
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
auto hmd = DependencyManager::get<HMDScriptingInterface>();
|
||||||
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
||||||
|
|
||||||
if (tablet->getToolbarMode()) {
|
if (tablet->getToolbarMode()) {
|
||||||
offscreenUi->load("Browser.qml", [=](QQmlContext* context, QObject* newObject) {
|
offscreenUi->load("Browser.qml", [=](QQmlContext* context, QObject* newObject) { newObject->setProperty("url", url); });
|
||||||
newObject->setProperty("url", url);
|
|
||||||
});
|
|
||||||
LoginDialog::hide();
|
LoginDialog::hide();
|
||||||
} else {
|
} else {
|
||||||
if (!hmd->getShouldShowTablet() && !qApp->isHMDMode()) {
|
if (!hmd->getShouldShowTablet() && !qApp->isHMDMode()) {
|
||||||
offscreenUi->load("Browser.qml", [=](QQmlContext* context, QObject* newObject) {
|
offscreenUi->load("Browser.qml",
|
||||||
newObject->setProperty("url", url);
|
[=](QQmlContext* context, QObject* newObject) { newObject->setProperty("url", url); });
|
||||||
});
|
|
||||||
LoginDialog::hide();
|
LoginDialog::hide();
|
||||||
} else {
|
} else {
|
||||||
tablet->gotoWebScreen(url);
|
tablet->gotoWebScreen(url);
|
||||||
|
@ -213,28 +202,26 @@ void LoginDialog::createFailed(QNetworkReply* reply) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoginDialog::signup(const QString& email, const QString& username, const QString& password) {
|
void LoginDialog::signup(const QString& email, const QString& username, const QString& password) {
|
||||||
|
|
||||||
JSONCallbackParameters callbackParams;
|
JSONCallbackParameters callbackParams;
|
||||||
callbackParams.callbackReceiver = this;
|
callbackParams.callbackReceiver = this;
|
||||||
callbackParams.jsonCallbackMethod = "signupCompleted";
|
callbackParams.jsonCallbackMethod = "signupCompleted";
|
||||||
callbackParams.errorCallbackMethod = "signupFailed";
|
callbackParams.errorCallbackMethod = "signupFailed";
|
||||||
|
|
||||||
QJsonObject payload;
|
QJsonObject payload;
|
||||||
|
|
||||||
QJsonObject userObject;
|
QJsonObject userObject;
|
||||||
userObject.insert("email", email);
|
userObject.insert("email", email);
|
||||||
userObject.insert("username", username);
|
userObject.insert("username", username);
|
||||||
userObject.insert("password", password);
|
userObject.insert("password", password);
|
||||||
|
|
||||||
payload.insert("user", userObject);
|
payload.insert("user", userObject);
|
||||||
|
|
||||||
static const QString API_SIGNUP_PATH = "api/v1/users";
|
static const QString API_SIGNUP_PATH = "api/v1/users";
|
||||||
|
|
||||||
qDebug() << "Sending a request to create an account for" << username;
|
qDebug() << "Sending a request to create an account for" << username;
|
||||||
|
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
accountManager->sendRequest(API_SIGNUP_PATH, AccountManagerAuth::None,
|
accountManager->sendRequest(API_SIGNUP_PATH, AccountManagerAuth::None, QNetworkAccessManager::PostOperation, callbackParams,
|
||||||
QNetworkAccessManager::PostOperation, callbackParams,
|
|
||||||
QJsonDocument(payload).toJson());
|
QJsonDocument(payload).toJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,41 +240,38 @@ QString errorStringFromAPIObject(const QJsonValue& apiObject) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoginDialog::signupFailed(QNetworkReply* reply) {
|
void LoginDialog::signupFailed(QNetworkReply* reply) {
|
||||||
|
|
||||||
// parse the returned JSON to see what the problem was
|
// parse the returned JSON to see what the problem was
|
||||||
auto jsonResponse = QJsonDocument::fromJson(reply->readAll());
|
auto jsonResponse = QJsonDocument::fromJson(reply->readAll());
|
||||||
|
|
||||||
static const QString RESPONSE_DATA_KEY = "data";
|
static const QString RESPONSE_DATA_KEY = "data";
|
||||||
|
|
||||||
auto dataJsonValue = jsonResponse.object()[RESPONSE_DATA_KEY];
|
auto dataJsonValue = jsonResponse.object()[RESPONSE_DATA_KEY];
|
||||||
|
|
||||||
if (dataJsonValue.isObject()) {
|
if (dataJsonValue.isObject()) {
|
||||||
auto dataObject = dataJsonValue.toObject();
|
auto dataObject = dataJsonValue.toObject();
|
||||||
|
|
||||||
static const QString EMAIL_DATA_KEY = "email";
|
static const QString EMAIL_DATA_KEY = "email";
|
||||||
static const QString USERNAME_DATA_KEY = "username";
|
static const QString USERNAME_DATA_KEY = "username";
|
||||||
static const QString PASSWORD_DATA_KEY = "password";
|
static const QString PASSWORD_DATA_KEY = "password";
|
||||||
|
|
||||||
QStringList errorStringList;
|
QStringList errorStringList;
|
||||||
|
|
||||||
if (dataObject.contains(EMAIL_DATA_KEY)) {
|
if (dataObject.contains(EMAIL_DATA_KEY)) {
|
||||||
errorStringList.append(QString("Email %1.").arg(errorStringFromAPIObject(dataObject[EMAIL_DATA_KEY])));
|
errorStringList.append(QString("Email %1.").arg(errorStringFromAPIObject(dataObject[EMAIL_DATA_KEY])));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dataObject.contains(USERNAME_DATA_KEY)) {
|
if (dataObject.contains(USERNAME_DATA_KEY)) {
|
||||||
errorStringList.append(QString("Username %1.").arg(errorStringFromAPIObject(dataObject[USERNAME_DATA_KEY])));
|
errorStringList.append(QString("Username %1.").arg(errorStringFromAPIObject(dataObject[USERNAME_DATA_KEY])));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dataObject.contains(PASSWORD_DATA_KEY)) {
|
if (dataObject.contains(PASSWORD_DATA_KEY)) {
|
||||||
errorStringList.append(QString("Password %1.").arg(errorStringFromAPIObject(dataObject[PASSWORD_DATA_KEY])));
|
errorStringList.append(QString("Password %1.").arg(errorStringFromAPIObject(dataObject[PASSWORD_DATA_KEY])));
|
||||||
}
|
}
|
||||||
|
|
||||||
emit handleSignupFailed(errorStringList.join('\n'));
|
emit handleSignupFailed(errorStringList.join('\n'));
|
||||||
} else {
|
} else {
|
||||||
static const QString DEFAULT_SIGN_UP_FAILURE_MESSAGE = "There was an unknown error while creating your account. Please try again later.";
|
static const QString DEFAULT_SIGN_UP_FAILURE_MESSAGE =
|
||||||
|
"There was an unknown error while creating your account. Please try again later.";
|
||||||
emit handleSignupFailed(DEFAULT_SIGN_UP_FAILURE_MESSAGE);
|
emit handleSignupFailed(DEFAULT_SIGN_UP_FAILURE_MESSAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue