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"); 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(); qDebug() << "JsonRpc: confirm pairing" << pairingTransactionId.toString();
QVariantMap params; QVariantMap params;
params.insert("pairingTransactionId", pairingTransactionId.toString()); params.insert("pairingTransactionId", pairingTransactionId.toString());
params.insert("secret", secret); params.insert("secret", secret);
params.insert("username", username);
m_jsonClient->sendCommand("Devices.ConfirmPairing", params, this, "confirmPairingResponse"); 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 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 QUuid &deviceDescriptorId, const QString &name);
Q_INVOKABLE void pairDevice(const QUuid &deviceClassId, const QString &name, const QVariantList &deviceParams); 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 removeDevice(const QUuid &deviceId, RemovePolicy policy = RemovePolicyNone);
Q_INVOKABLE void editDevice(const QUuid &deviceId, const QString &name); Q_INVOKABLE void editDevice(const QUuid &deviceId, const QString &name);
Q_INVOKABLE void setDeviceSettings(const QUuid &deviceId, const QVariantList &settings); 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; return DeviceClass::SetupMethodPushButton;
} else if (setupMethodString == "SetupMethodOAuth") { } else if (setupMethodString == "SetupMethodOAuth") {
return DeviceClass::SetupMethodOAuth; return DeviceClass::SetupMethodOAuth;
} else if (setupMethodString == "SetupMethodUserAndPassword") {
return DeviceClass::SetupMethodUserAndPassword;
} }
return DeviceClass::SetupMethodJustAdd; return DeviceClass::SetupMethodJustAdd;
} }

View File

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

View File

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