added authentication failure handling
parent
11c978191f
commit
33aec78f57
|
|
@ -113,7 +113,6 @@ void DevicePluginDoorbird::confirmPairing(DevicePairingInfo *info, const QString
|
|||
connect(doorbird, &Doorbird::requestSent, this, &DevicePluginDoorbird::onDoorBirdRequestSent);
|
||||
connect(doorbird, &Doorbird::sessionIdReceived, this, &DevicePluginDoorbird::onSessionIdReceived);
|
||||
doorbird->initConnection(username, password);
|
||||
doorbird->connectToEventMonitor();
|
||||
m_doorbirdConnections.insert(info->deviceId(), doorbird);
|
||||
m_pendingPairings.insert(doorbird, info);
|
||||
doorbird->getSession();
|
||||
|
|
@ -159,7 +158,6 @@ void DevicePluginDoorbird::setupDevice(DeviceSetupInfo *info)
|
|||
connect(doorbird, &Doorbird::requestSent, this, &DevicePluginDoorbird::onDoorBirdRequestSent);
|
||||
connect(doorbird, &Doorbird::sessionIdReceived, this, &DevicePluginDoorbird::onSessionIdReceived);
|
||||
doorbird->initConnection(username, password);
|
||||
doorbird->connectToEventMonitor();
|
||||
m_doorbirdConnections.insert(device->id(), doorbird);
|
||||
m_pendingDeviceSetups.insert(doorbird, info);
|
||||
doorbird->getSession();
|
||||
|
|
@ -183,6 +181,7 @@ void DevicePluginDoorbird::postSetupDevice(Device *device)
|
|||
if (device->deviceClassId() == doorBirdDeviceClassId) {
|
||||
device->setStateValue(doorBirdConnectedStateTypeId, true); //since we checked the connection in the deviceSetup
|
||||
Doorbird *doorbird = m_doorbirdConnections.value(device->id());
|
||||
doorbird->connectToEventMonitor();
|
||||
doorbird->infoRequest();
|
||||
doorbird->listFavorites();
|
||||
doorbird->listSchedules();
|
||||
|
|
@ -269,17 +268,23 @@ void DevicePluginDoorbird::onDoorBirdEvent(Doorbird::EventType eventType, bool s
|
|||
void DevicePluginDoorbird::onDoorBirdRequestSent(QUuid requestId, bool success)
|
||||
{
|
||||
Doorbird *doorbird = static_cast<Doorbird *>(sender());
|
||||
Device *device = myDevices().findById(m_doorbirdConnections.key(doorbird));
|
||||
if (!device)
|
||||
return;
|
||||
|
||||
if (!m_asyncActions.contains(requestId))
|
||||
return;
|
||||
|
||||
if (m_asyncActions.contains(requestId)) {
|
||||
DeviceActionInfo* actionInfo = m_asyncActions.take(requestId);
|
||||
actionInfo->finish(success ? Device::DeviceErrorNoError : Device::DeviceErrorInvalidParameter);
|
||||
}
|
||||
|
||||
if (m_pendingPairings.contains(doorbird) && !success) {
|
||||
DevicePairingInfo *info = m_pendingPairings.take(doorbird);
|
||||
info->finish(Device::DeviceErrorAuthenticationFailure, tr("Wrong username or password"));
|
||||
}
|
||||
|
||||
if (m_pendingDeviceSetups.contains(doorbird) && !success) {
|
||||
DeviceSetupInfo *info = m_pendingDeviceSetups.take(doorbird);
|
||||
info->finish(Device::DeviceErrorAuthenticationFailure, tr("Wrong username or password"));
|
||||
}
|
||||
}
|
||||
|
||||
void DevicePluginDoorbird::onSessionIdReceived(const QString &sessionId)
|
||||
{
|
||||
Q_UNUSED(sessionId);
|
||||
|
|
|
|||
|
|
@ -62,9 +62,16 @@ void Doorbird::initConnection(const QString &username, const QString &password)
|
|||
{
|
||||
m_networkAccessManager = new QNetworkAccessManager(this);
|
||||
connect(m_networkAccessManager, &QNetworkAccessManager::authenticationRequired, this, [username, password, this] (QNetworkReply *reply, QAuthenticator *authenticator) {
|
||||
Q_UNUSED(reply);
|
||||
|
||||
qCWarning(dcDoorBird()) << "Authenticator" << reply->errorString() << reply->error();
|
||||
if (m_pendingAuthentications.contains(reply)) {
|
||||
m_pendingAuthentications.removeOne(reply);
|
||||
reply->abort();
|
||||
} else {
|
||||
authenticator->setUser(username);
|
||||
authenticator->setPassword(password);
|
||||
m_pendingAuthentications.append(reply);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -79,7 +86,7 @@ QUuid Doorbird::getSession()
|
|||
reply->deleteLater();
|
||||
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcDoorBird) << "Error DoorBird device";
|
||||
qCWarning(dcDoorBird) << "Error DoorBird device:" << reply->errorString();
|
||||
emit requestSent(requestId, false);
|
||||
return;
|
||||
}
|
||||
|
|
@ -98,6 +105,7 @@ QUuid Doorbird::getSession()
|
|||
emit sessionIdReceived(sessionId);
|
||||
}
|
||||
});
|
||||
|
||||
return requestId;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -93,6 +93,8 @@ private:
|
|||
QHostAddress m_address;
|
||||
QList<QNetworkReply *> m_networkRequests;
|
||||
|
||||
QList<QNetworkReply *> m_pendingAuthentications;
|
||||
|
||||
//QByteArray sessionId;
|
||||
|
||||
signals:
|
||||
|
|
|
|||
Loading…
Reference in New Issue