mirror of
https://github.com/overte-org/overte.git
synced 2025-04-19 15:43:50 +02: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 QUrl DEFAULT_NODE_AUTH_URL = QUrl("https://data.highfidelity.io");
|
||||
|
||||
DomainServer::DomainServer(int argc, char* argv[]) :
|
||||
QCoreApplication(argc, argv),
|
||||
_HTTPManager(DOMAIN_SERVER_HTTP_PORT, QString("%1/resources/web/").arg(QCoreApplication::applicationDirPath()), this),
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <QtCore/QUrlQuery>
|
||||
#include <QtNetwork/QNetworkRequest>
|
||||
|
||||
#include "NodeList.h"
|
||||
#include "PacketHeaders.h"
|
||||
|
||||
#include "AccountManager.h"
|
||||
|
@ -22,12 +23,16 @@ AccountManager& AccountManager::getInstance() {
|
|||
return sharedInstance;
|
||||
}
|
||||
|
||||
const QString DEFAULT_NODE_AUTH_OAUTH_CLIENT_ID = "12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c";
|
||||
|
||||
AccountManager::AccountManager() :
|
||||
_username(),
|
||||
_accessTokens(),
|
||||
_clientIDs(),
|
||||
_networkAccessManager(NULL)
|
||||
{
|
||||
|
||||
_clientIDs.insert(DEFAULT_NODE_AUTH_URL, DEFAULT_NODE_AUTH_OAUTH_CLIENT_ID);
|
||||
}
|
||||
|
||||
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) {
|
||||
if (_networkAccessManager) {
|
||||
QNetworkRequest request;
|
||||
|
||||
QUrl grantURL = rootURL;
|
||||
grantURL.setPath("/oauth/token");
|
||||
|
||||
QByteArray postData;
|
||||
postData.append("client_id=12b7b18e7b8c118707b84ff0735e57a4473b5b0577c2af44734f02e08d02829c &");
|
||||
postData.append("grant_type=password&");
|
||||
postData.append("username=" + username + "&");
|
||||
postData.append("password=" + password);
|
||||
|
||||
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);
|
||||
connect(requestReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError)));
|
||||
if (_clientIDs.contains(rootURL)) {
|
||||
QNetworkRequest request;
|
||||
|
||||
QUrl grantURL = rootURL;
|
||||
grantURL.setPath("/oauth/token");
|
||||
|
||||
QByteArray postData;
|
||||
postData.append("client_id=" + _clientIDs.value(rootURL) + "&");
|
||||
postData.append("grant_type=password&");
|
||||
postData.append("username=" + username + "&");
|
||||
postData.append("password=" + password);
|
||||
|
||||
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);
|
||||
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;
|
||||
QMap<QUrl, OAuthAccessToken> _accessTokens;
|
||||
QMap<QUrl, QString> _clientIDs;
|
||||
QNetworkAccessManager* _networkAccessManager;
|
||||
};
|
||||
|
||||
|
|
|
@ -29,6 +29,8 @@ const char SOLO_NODE_TYPES[2] = {
|
|||
NodeType::AudioMixer
|
||||
};
|
||||
|
||||
const QUrl DEFAULT_NODE_AUTH_URL = QUrl("https://data.highfidelity.io");
|
||||
|
||||
NodeList* NodeList::_sharedInstance = NULL;
|
||||
|
||||
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 QString DEFAULT_DOMAIN_HOSTNAME;
|
||||
extern const unsigned short DEFAULT_DOMAIN_SERVER_PORT;
|
||||
extern const QUrl DEFAULT_NODE_AUTH_URL;
|
||||
|
||||
const char DEFAULT_ASSIGNMENT_SERVER_HOSTNAME[] = "localhost";
|
||||
|
||||
|
|
Loading…
Reference in a new issue