more work on oauth

This commit is contained in:
Michael Zanetti 2019-08-09 19:27:09 +02:00
parent 5c2e288999
commit 42e8f455b2
5 changed files with 19 additions and 9 deletions

View File

@ -373,12 +373,13 @@ void DeviceManager::pairDevice(const QUuid &deviceClassId, const QString &name,
m_jsonClient->sendCommand("Devices.PairDevice", params, this, "pairDeviceResponse");
}
void DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QString &secret)
void DeviceManager::confirmPairing(const QUuid &pairingTransactionId, const QString &secret, const QString &username)
{
qDebug() << "JsonRpc: confirm pairing" << pairingTransactionId.toString();
QVariantMap params;
params.insert("pairingTransactionId", pairingTransactionId.toString());
params.insert("secret", secret);
params.insert("username", username);
m_jsonClient->sendCommand("Devices.ConfirmPairing", params, this, "confirmPairingResponse");
}

View File

@ -70,7 +70,7 @@ public:
Q_INVOKABLE void addDiscoveredDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name, const QVariantList &deviceParams);
Q_INVOKABLE void pairDevice(const QUuid &deviceClassId, const QUuid &deviceDescriptorId, const QString &name);
Q_INVOKABLE void pairDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams);
Q_INVOKABLE void confirmPairing(const QUuid &pairingTransactionId, const QString &secret = QString());
Q_INVOKABLE void confirmPairing(const QUuid &pairingTransactionId, const QString &secret = QString(), const QString &username = QString());
Q_INVOKABLE void removeDevice(const QUuid &deviceId, RemovePolicy policy = RemovePolicyNone);
Q_INVOKABLE void editDevice(const QUuid &deviceId, const QString &name);
Q_INVOKABLE void setDeviceSettings(const QUuid &deviceId, const QVariantList &settings);

View File

@ -494,6 +494,8 @@ DeviceClass::SetupMethod JsonTypes::stringToSetupMethod(const QString &setupMeth
return DeviceClass::SetupMethodPushButton;
} else if (setupMethodString == "SetupMethodOAuth") {
return DeviceClass::SetupMethodOAuth;
} else if (setupMethodString == "SetupMethodUserAndPassword") {
return DeviceClass::SetupMethodUserAndPassword;
}
return DeviceClass::SetupMethodJustAdd;
}

View File

@ -63,6 +63,7 @@ public:
SetupMethodEnterPin,
SetupMethodPushButton,
SetupMethodOAuth,
SetupMethodUserAndPassword,
};
Q_ENUM(SetupMethod)

View File

@ -73,14 +73,11 @@ Page {
switch (params["setupMethod"]) {
case "SetupMethodPushButton":
print("response", params["displayMessage"], d.pairingTransactionId)
internalPageStack.push(pairingPageComponent, {text: params["displayMessage"]})
break;
case "SetupMethodDisplayPin":
case "SetupMethodUserAndPassword":
internalPageStack.push(pairingPageComponent, {text: params["displayMessage"], setupMethod: params["setupMethod"]})
break;
case "SetupMethodOAuth":
print("OAuth URL:", params["oAuthUrl"]);
internalPageStack.push(oAuthPageComponent, {oAuthUrl: params["oAuthUrl"]})
break;
default:
@ -378,13 +375,14 @@ Page {
case 2:
case 3:
case 4:
case 5:
if (root.device) {
// if (d.deviceDescriptor) {
// engine.deviceManager.pairDevice(root.deviceClass.id, d.deviceDescriptor.id, nameTextField.text);
// } else {
// engine.deviceManager.pairDevice(root.deviceClass.id, nameTextField.text, params);
// }
console.warn("Unhandle setupMethod!")
console.warn("Unhandled setupMethod!")
return;
} else {
if (d.deviceDescriptor) {
@ -434,17 +432,25 @@ Page {
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
}
TextField {
id: usernameTextField
Layout.fillWidth: true
visible: pairingPage.setupMethod === "SetupMethodUserAndPassword"
}
TextField {
id: pinTextField
Layout.fillWidth: true
visible: pairingPage.setupMethod === "SetupMethodDisplayPin"
visible: pairingPage.setupMethod === "SetupMethodDisplayPin" || pairingPage.setupMethod === "SetupMethodUserAndPassword"
}
Button {
Layout.fillWidth: true
text: "OK"
onClicked: {
engine.deviceManager.confirmPairing(d.pairingTransactionId, pinTextField.displayText);
engine.deviceManager.confirmPairing(d.pairingTransactionId, pinTextField.displayText, usernameTextField.displayText);
}
}
}