mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-10 01:14:01 +02:00
Stub out basics for displaying the domain login dialog
This commit is contained in:
parent
111afc8c69
commit
9bb913983d
7 changed files with 117 additions and 2 deletions
|
@ -65,6 +65,7 @@
|
|||
#include <Trace.h>
|
||||
#include <ResourceScriptingInterface.h>
|
||||
#include <AccountManager.h>
|
||||
#include <DomainAccountManager.h>
|
||||
#include <AddressManager.h>
|
||||
#include <AnimDebugDraw.h>
|
||||
#include <BuildInfo.h>
|
||||
|
@ -852,6 +853,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) {
|
|||
#else
|
||||
DependencyManager::set<AccountManager>(true, std::bind(&Application::getUserAgent, qApp));
|
||||
#endif
|
||||
DependencyManager::set<DomainAccountManager>();
|
||||
DependencyManager::set<StatTracker>();
|
||||
DependencyManager::set<ScriptEngines>(ScriptEngine::CLIENT_SCRIPT, defaultScriptsOverrideOption);
|
||||
DependencyManager::set<Preferences>();
|
||||
|
@ -1348,6 +1350,14 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
|||
#endif
|
||||
connect(accountManager.data(), &AccountManager::usernameChanged, this, &Application::updateWindowTitle);
|
||||
|
||||
|
||||
auto domainAccountManager = DependencyManager::get<DomainAccountManager>();
|
||||
connect(domainAccountManager.data(), &DomainAccountManager::authRequired, dialogsManager.data(),
|
||||
&DialogsManager::showDomainLoginDialog);
|
||||
|
||||
// ####### TODO
|
||||
|
||||
|
||||
// use our MyAvatar position and quat for address manager path
|
||||
addressManager->setPositionGetter([] {
|
||||
auto avatarManager = DependencyManager::get<AvatarManager>();
|
||||
|
@ -2801,6 +2811,7 @@ void Application::cleanupBeforeQuit() {
|
|||
if (!keepMeLoggedIn) {
|
||||
DependencyManager::get<AccountManager>()->removeAccountFromFile();
|
||||
}
|
||||
// ####### TODO
|
||||
|
||||
_displayPlugin.reset();
|
||||
PluginManager::getInstance()->shutdown();
|
||||
|
@ -3150,6 +3161,7 @@ extern void setupPreferences();
|
|||
static void addDisplayPluginToMenu(const DisplayPluginPointer& displayPlugin, int index, bool active = false);
|
||||
#endif
|
||||
|
||||
// ####### TODO
|
||||
void Application::showLoginScreen() {
|
||||
#if !defined(DISABLE_QML)
|
||||
auto accountManager = DependencyManager::get<AccountManager>();
|
||||
|
@ -7072,6 +7084,7 @@ void Application::updateWindowTitle() const {
|
|||
+ (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build"))
|
||||
+ " " + applicationVersion();
|
||||
|
||||
// ####### TODO
|
||||
QString loginStatus = accountManager->isLoggedIn() ? "" : " (NOT LOGGED IN)";
|
||||
|
||||
QString connectionStatus = isInErrorState ? " (ERROR CONNECTING)" :
|
||||
|
@ -9430,6 +9443,7 @@ void Application::forceDisplayName(const QString& displayName) {
|
|||
getMyAvatar()->setDisplayName(displayName);
|
||||
}
|
||||
void Application::forceLoginWithTokens(const QString& tokens) {
|
||||
// ####### TODO
|
||||
DependencyManager::get<AccountManager>()->setAccessTokens(tokens);
|
||||
Setting::Handle<bool>(KEEP_ME_LOGGED_IN_SETTING_NAME, true).set(true);
|
||||
}
|
||||
|
|
|
@ -121,10 +121,23 @@ void DialogsManager::hideLoginDialog() {
|
|||
LoginDialog::hide();
|
||||
}
|
||||
|
||||
|
||||
void DialogsManager::showDomainLoginDialog() {
|
||||
|
||||
// #######: TODO
|
||||
|
||||
qDebug() << "#######: showDomainLoginDialog()";
|
||||
|
||||
}
|
||||
|
||||
// #######: TODO
|
||||
|
||||
|
||||
void DialogsManager::showUpdateDialog() {
|
||||
UpdateDialog::show();
|
||||
}
|
||||
|
||||
|
||||
void DialogsManager::octreeStatsDetails() {
|
||||
if (!_octreeStatsDialog) {
|
||||
_octreeStatsDialog = new OctreeStatsDialog(qApp->getWindow(), qApp->getOcteeSceneStats());
|
||||
|
|
|
@ -49,6 +49,7 @@ public slots:
|
|||
void toggleLoginDialog();
|
||||
void showLoginDialog();
|
||||
void hideLoginDialog();
|
||||
void showDomainLoginDialog();
|
||||
void octreeStatsDetails();
|
||||
void lodTools();
|
||||
void hmdTools(bool showTools);
|
||||
|
|
35
libraries/networking/src/DomainAccountManager.cpp
Normal file
35
libraries/networking/src/DomainAccountManager.cpp
Normal file
|
@ -0,0 +1,35 @@
|
|||
//
|
||||
// DomainAccountManager.cpp
|
||||
// libraries/networking/src
|
||||
//
|
||||
// Created by David Rowe on 23 Jul 2020.
|
||||
// Copyright 2020 Vircadia contributors.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#include "DomainAccountManager.h"
|
||||
|
||||
|
||||
DomainAccountManager::DomainAccountManager() {
|
||||
|
||||
}
|
||||
|
||||
bool DomainAccountManager::hasValidAccessToken() {
|
||||
|
||||
// #######: TODO
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DomainAccountManager::checkAndSignalForAccessToken() {
|
||||
bool hasToken = hasValidAccessToken();
|
||||
|
||||
if (!hasToken) {
|
||||
// Emit a signal so somebody can call back to us and request an access token given a user name and password.
|
||||
emit authRequired();
|
||||
}
|
||||
|
||||
return hasToken;
|
||||
}
|
39
libraries/networking/src/DomainAccountManager.h
Normal file
39
libraries/networking/src/DomainAccountManager.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
//
|
||||
// DomainAccountManager.h
|
||||
// libraries/networking/src
|
||||
//
|
||||
// Created by David Rowe on 23 Jul 2020.
|
||||
// Copyright 2020 Vircadia contributors.
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0.
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
|
||||
#ifndef hifi_DomainAccountManager_h
|
||||
#define hifi_DomainAccountManager_h
|
||||
|
||||
#include <QtCore/QObject>
|
||||
|
||||
#include <DependencyManager.h>
|
||||
|
||||
|
||||
class DomainAccountManager : public QObject, public Dependency {
|
||||
Q_OBJECT
|
||||
public:
|
||||
DomainAccountManager();
|
||||
|
||||
Q_INVOKABLE bool checkAndSignalForAccessToken();
|
||||
|
||||
public slots:
|
||||
|
||||
signals:
|
||||
void authRequired();
|
||||
|
||||
private slots:
|
||||
|
||||
private:
|
||||
bool hasValidAccessToken();
|
||||
|
||||
};
|
||||
|
||||
#endif // hifi_DomainAccountManager_h
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include "AddressManager.h"
|
||||
#include "Assignment.h"
|
||||
#include "DomainAccountManager.h"
|
||||
#include "HifiSockAddr.h"
|
||||
#include "NodeList.h"
|
||||
#include "udt/Packet.h"
|
||||
|
@ -500,6 +501,7 @@ bool DomainHandler::reasonSuggestsMetaverseLogin(ConnectionRefusedReason reasonC
|
|||
case ConnectionRefusedReason::Unknown:
|
||||
case ConnectionRefusedReason::ProtocolMismatch:
|
||||
case ConnectionRefusedReason::TooManyUsers:
|
||||
case ConnectionRefusedReason::NotAuthorizedDomain:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
@ -515,6 +517,7 @@ bool DomainHandler::reasonSuggestsDomainLogin(ConnectionRefusedReason reasonCode
|
|||
case ConnectionRefusedReason::Unknown:
|
||||
case ConnectionRefusedReason::ProtocolMismatch:
|
||||
case ConnectionRefusedReason::TooManyUsers:
|
||||
case ConnectionRefusedReason::NotAuthorizedMetaverse:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
@ -557,12 +560,13 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer<Rec
|
|||
#endif
|
||||
}
|
||||
|
||||
auto accountManager = DependencyManager::get<AccountManager>();
|
||||
|
||||
// Some connection refusal reasons imply that a login is required. If so, suggest a new login.
|
||||
if (reasonSuggestsMetaverseLogin(reasonCode)) {
|
||||
qCWarning(networking) << "Make sure you are logged in to the metaverse.";
|
||||
|
||||
auto accountManager = DependencyManager::get<AccountManager>();
|
||||
|
||||
if (!_hasCheckedForAccessToken) {
|
||||
accountManager->checkAndSignalForAccessToken();
|
||||
_hasCheckedForAccessToken = true;
|
||||
|
@ -578,7 +582,15 @@ void DomainHandler::processDomainServerConnectionDeniedPacket(QSharedPointer<Rec
|
|||
} else if (reasonSuggestsDomainLogin(reasonCode)) {
|
||||
qCWarning(networking) << "Make sure you are logged in to the domain.";
|
||||
|
||||
|
||||
auto accountManager = DependencyManager::get<DomainAccountManager>();
|
||||
|
||||
if (!_hasCheckedForDomainAccessToken) {
|
||||
accountManager->checkAndSignalForAccessToken();
|
||||
_hasCheckedForDomainAccessToken = true;
|
||||
}
|
||||
|
||||
// ####### TODO: regenerate key-pair after several failed connection attempts, similar to metaverse login code?
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -291,6 +291,7 @@ private:
|
|||
|
||||
QSet<QString> _domainConnectionRefusals;
|
||||
bool _hasCheckedForAccessToken { false };
|
||||
bool _hasCheckedForDomainAccessToken { false };
|
||||
int _connectionDenialsSinceKeypairRegen { 0 };
|
||||
int _checkInPacketsSinceLastReply { 0 };
|
||||
|
||||
|
|
Loading…
Reference in a new issue