Switch to demo server with authentication
This commit is contained in:
parent
2c96671886
commit
b04ca3efe0
@ -172,6 +172,14 @@ bool JsonRpcClient::tokenExists(const QString &serverUuid) const
|
|||||||
return settings.contains(QUuid(serverUuid).toString());
|
return settings.contains(QUuid(serverUuid).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JsonRpcClient::addToken(const QString &serverUuid, const QByteArray &token)
|
||||||
|
{
|
||||||
|
QSettings settings;
|
||||||
|
settings.beginGroup("jsonTokens");
|
||||||
|
settings.setValue(QUuid(serverUuid).toString(), token);
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
void JsonRpcClient::setNotificationsEnabledResponse(int commandId, const QVariantMap ¶ms)
|
void JsonRpcClient::setNotificationsEnabledResponse(int commandId, const QVariantMap ¶ms)
|
||||||
{
|
{
|
||||||
qCDebug(dcJsonRpc()) << "Notification configuration response:" << commandId << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
qCDebug(dcJsonRpc()) << "Notification configuration response:" << commandId << qUtf8Printable(QJsonDocument::fromVariant(params).toJson());
|
||||||
@ -381,7 +389,7 @@ bool JsonRpcClient::ensureServerVersion(const QString &jsonRpcVersion)
|
|||||||
void JsonRpcClient::processAuthenticate(int /*commandId*/, const QVariantMap &data)
|
void JsonRpcClient::processAuthenticate(int /*commandId*/, const QVariantMap &data)
|
||||||
{
|
{
|
||||||
if (data.value("success").toBool()) {
|
if (data.value("success").toBool()) {
|
||||||
qDebug() << "authentication successful";
|
qCInfo(dcJsonRpc()) << "authentication successful";
|
||||||
m_token = data.value("token").toByteArray();
|
m_token = data.value("token").toByteArray();
|
||||||
m_username = data.value("username").toString();
|
m_username = data.value("username").toString();
|
||||||
if (m_jsonRpcVersion.majorVersion() >= 6) {
|
if (m_jsonRpcVersion.majorVersion() >= 6) {
|
||||||
@ -401,7 +409,7 @@ void JsonRpcClient::processAuthenticate(int /*commandId*/, const QVariantMap &da
|
|||||||
|
|
||||||
setNotificationsEnabled();
|
setNotificationsEnabled();
|
||||||
} else {
|
} else {
|
||||||
qWarning() << "Authentication failed" << data;
|
qCWarning(dcJsonRpc()) << "Authentication failed" << data;
|
||||||
emit authenticationFailed();
|
emit authenticationFailed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -433,7 +441,7 @@ JsonRpcReply *JsonRpcClient::createReply(const QString &method, const QVariantMa
|
|||||||
{
|
{
|
||||||
QStringList callParts = method.split('.');
|
QStringList callParts = method.split('.');
|
||||||
if (callParts.count() != 2) {
|
if (callParts.count() != 2) {
|
||||||
qWarning() << "Invalid method. Must be Namespace.Method";
|
qCWarning(dcJsonRpc()) << "Invalid method. Must be Namespace.Method";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
m_id++;
|
m_id++;
|
||||||
@ -669,6 +677,11 @@ void JsonRpcClient::helloReply(int /*commandId*/, const QVariantMap ¶ms)
|
|||||||
if (m_connection->currentHost()->uuid().isNull()) {
|
if (m_connection->currentHost()->uuid().isNull()) {
|
||||||
qCDebug(dcJsonRpc()) << "Updating Server UUID in connection:" << m_connection->currentHost()->uuid().toString() << "->" << serverUuid;
|
qCDebug(dcJsonRpc()) << "Updating Server UUID in connection:" << m_connection->currentHost()->uuid().toString() << "->" << serverUuid;
|
||||||
m_connection->currentHost()->setUuid(serverUuid);
|
m_connection->currentHost()->setUuid(serverUuid);
|
||||||
|
// Now that we know the server uuid, if we have a token for this host, let's try again.
|
||||||
|
if (tokenExists(serverUuid.toString())){
|
||||||
|
onInterfaceConnectedChanged(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else if (m_connection->currentHost()->uuid() != serverUuid) {
|
} else if (m_connection->currentHost()->uuid() != serverUuid) {
|
||||||
qCWarning(dcJsonRpc()) << "Unexpected server UUID" << serverUuid.toString() << "expected:" << m_connection->currentHost()->uuid();
|
qCWarning(dcJsonRpc()) << "Unexpected server UUID" << serverUuid.toString() << "expected:" << m_connection->currentHost()->uuid();
|
||||||
emit invalidServerUuid(serverUuid);
|
emit invalidServerUuid(serverUuid);
|
||||||
|
|||||||
@ -102,6 +102,7 @@ public:
|
|||||||
Q_INVOKABLE void disconnectFromHost();
|
Q_INVOKABLE void disconnectFromHost();
|
||||||
Q_INVOKABLE void acceptCertificate(const QString &serverUuid, const QByteArray &pem);
|
Q_INVOKABLE void acceptCertificate(const QString &serverUuid, const QByteArray &pem);
|
||||||
Q_INVOKABLE bool tokenExists(const QString &serverUuid) const;
|
Q_INVOKABLE bool tokenExists(const QString &serverUuid) const;
|
||||||
|
Q_INVOKABLE void addToken(const QString &serverUuid, const QByteArray &token);
|
||||||
|
|
||||||
Q_INVOKABLE bool ensureServerVersion(const QString &jsonRpcVersion);
|
Q_INVOKABLE bool ensureServerVersion(const QString &jsonRpcVersion);
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,8 @@ WizardPageBase {
|
|||||||
pageStack.push(connectionSelectionComponent)
|
pageStack.push(connectionSelectionComponent)
|
||||||
}
|
}
|
||||||
onExtraButtonPressed: {
|
onExtraButtonPressed: {
|
||||||
var host = nymeaDiscovery.nymeaHosts.createWanHost("Demo server", "nymea://nymea.nymea.io:2222")
|
var host = nymeaDiscovery.nymeaHosts.createWanHost("Demo server", "nymea://nymea.nymea.io:2223")
|
||||||
|
engine.jsonRpcClient.addToken("{6c047fec-78da-46af-990a-8f687216ae1b}", "demousertoken");
|
||||||
engine.jsonRpcClient.connectToHost(host)
|
engine.jsonRpcClient.connectToHost(host)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user