mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
require that client ID for authentication server be known to AccountManager
This commit is contained in:
parent
b57a5cea6a
commit
ce3cc7e5c9
5 changed files with 30 additions and 23 deletions
|
@ -33,8 +33,6 @@ const char* METAVOXEL_SERVER_CONFIG = "metavoxelServerConfig";
|
||||||
|
|
||||||
const quint16 DOMAIN_SERVER_HTTP_PORT = 8080;
|
const quint16 DOMAIN_SERVER_HTTP_PORT = 8080;
|
||||||
|
|
||||||
const QUrl DEFAULT_NODE_AUTH_URL = QUrl("https://data.highfidelity.io");
|
|
||||||
|
|
||||||
DomainServer::DomainServer(int argc, char* argv[]) :
|
DomainServer::DomainServer(int argc, char* argv[]) :
|
||||||
QCoreApplication(argc, argv),
|
QCoreApplication(argc, argv),
|
||||||
_HTTPManager(DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this),
|
_HTTPManager(DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this),
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <QtCore/QUrlQuery>
|
#include <QtCore/QUrlQuery>
|
||||||
#include <QtNetwork/QNetworkRequest>
|
#include <QtNetwork/QNetworkRequest>
|
||||||
|
|
||||||
|
#include "NodeList.h"
|
||||||
#include "PacketHeaders.h"
|
#include "PacketHeaders.h"
|
||||||
|
|
||||||
#include "AccountManager.h"
|
#include "AccountManager.h"
|
||||||
|
@ -22,12 +23,16 @@ AccountManager& AccountManager::getInstance() {
|
||||||
return sharedInstance;
|
return sharedInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QString DEFAULT_NODE_AUTH_OAUTH_CLIENT_ID = "12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c";
|
||||||
|
|
||||||
AccountManager::AccountManager() :
|
AccountManager::AccountManager() :
|
||||||
_username(),
|
_username(),
|
||||||
_accessTokens(),
|
_accessTokens(),
|
||||||
|
_clientIDs(),
|
||||||
_networkAccessManager(NULL)
|
_networkAccessManager(NULL)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
_clientIDs.insert(DEFAULT_NODE_AUTH_URL, DEFAULT_NODE_AUTH_OAUTH_CLIENT_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AccountManager::hasValidAccessTokenForRootURL(const QUrl &rootURL) {
|
bool AccountManager::hasValidAccessTokenForRootURL(const QUrl &rootURL) {
|
||||||
|
@ -43,27 +48,29 @@ bool AccountManager::hasValidAccessTokenForRootURL(const QUrl &rootURL) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString OAUTH_CLIENT_ID_FOR_DEFAULT_ROOT_URL = "12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c";
|
|
||||||
|
|
||||||
void AccountManager::requestAccessToken(const QUrl& rootURL, const QString& username, const QString& password) {
|
void AccountManager::requestAccessToken(const QUrl& rootURL, const QString& username, const QString& password) {
|
||||||
if (_networkAccessManager) {
|
if (_networkAccessManager) {
|
||||||
QNetworkRequest request;
|
if (_clientIDs.contains(rootURL)) {
|
||||||
|
QNetworkRequest request;
|
||||||
QUrl grantURL = rootURL;
|
|
||||||
grantURL.setPath("/oauth/token");
|
QUrl grantURL = rootURL;
|
||||||
|
grantURL.setPath("/oauth/token");
|
||||||
QByteArray postData;
|
|
||||||
postData.append("client_id=12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c &");
|
QByteArray postData;
|
||||||
postData.append("grant_type=password&");
|
postData.append("client_id=" + _clientIDs.value(rootURL) + "&");
|
||||||
postData.append("username=" + username + "&");
|
postData.append("grant_type=password&");
|
||||||
postData.append("password=" + password);
|
postData.append("username=" + username + "&");
|
||||||
|
postData.append("password=" + password);
|
||||||
request.setUrl(grantURL);
|
|
||||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
request.setUrl(grantURL);
|
||||||
|
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
|
||||||
QNetworkReply* requestReply = _networkAccessManager->post(request, postData);
|
|
||||||
connect(requestReply, &QNetworkReply::finished, this, &AccountManager::requestFinished);
|
QNetworkReply* requestReply = _networkAccessManager->post(request, postData);
|
||||||
connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError)));
|
connect(requestReply, &QNetworkReply::finished, this, &AccountManager::requestFinished);
|
||||||
|
connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError)));
|
||||||
|
} else {
|
||||||
|
qDebug() << "Client ID for OAuth authorization at" << rootURL.toString() << "is unknown. Cannot authenticate.";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ private:
|
||||||
|
|
||||||
QString _username;
|
QString _username;
|
||||||
QMap<QUrl, OAuthAccessToken> _accessTokens;
|
QMap<QUrl, OAuthAccessToken> _accessTokens;
|
||||||
|
QMap<QUrl, QString> _clientIDs;
|
||||||
QNetworkAccessManager* _networkAccessManager;
|
QNetworkAccessManager* _networkAccessManager;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,8 @@ const char SOLO_NODE_TYPES[2] = {
|
||||||
NodeType::AudioMixer
|
NodeType::AudioMixer
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const QUrl DEFAULT_NODE_AUTH_URL = QUrl("https://data.highfidelity.io");
|
||||||
|
|
||||||
NodeList* NodeList::_sharedInstance = NULL;
|
NodeList* NodeList::_sharedInstance = NULL;
|
||||||
|
|
||||||
NodeList* NodeList::createInstance(char ownerType, unsigned short int socketListenPort) {
|
NodeList* NodeList::createInstance(char ownerType, unsigned short int socketListenPort) {
|
||||||
|
|
|
@ -37,8 +37,7 @@ const quint64 PING_INACTIVE_NODE_INTERVAL_USECS = 1 * 1000 * 1000;
|
||||||
|
|
||||||
extern const char SOLO_NODE_TYPES[2];
|
extern const char SOLO_NODE_TYPES[2];
|
||||||
|
|
||||||
extern const QString DEFAULT_DOMAIN_HOSTNAME;
|
extern const QUrl DEFAULT_NODE_AUTH_URL;
|
||||||
extern const unsigned short DEFAULT_DOMAIN_SERVER_PORT;
|
|
||||||
|
|
||||||
const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost";
|
const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost";
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue