mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-23 13:35:58 +03:00
Enforce fetching of user id
With the change of commit 3e61bdc431
and
the relase of v3.3.0 users that had their email address used as login
are not able to login anymore. The dav_user should be empty if users
tried to create a account in the meantime. Therefore we fetch the user
id in the case dav_user (and then Account::_davUser) is empty. We then
store the user id in dav_user.
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
This commit is contained in:
parent
b4d1d98868
commit
f9daa27a5d
2 changed files with 22 additions and 2 deletions
|
@ -317,7 +317,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings)
|
||||||
qCInfo(lcAccountManager) << "Account for" << acc->url() << "using auth type" << authType;
|
qCInfo(lcAccountManager) << "Account for" << acc->url() << "using auth type" << authType;
|
||||||
|
|
||||||
acc->_serverVersion = settings.value(QLatin1String(serverVersionC)).toString();
|
acc->_serverVersion = settings.value(QLatin1String(serverVersionC)).toString();
|
||||||
acc->_davUser = settings.value(QLatin1String(davUserC)).toString();
|
acc->_davUser = settings.value(QLatin1String(davUserC), "").toString();
|
||||||
|
|
||||||
// We want to only restore settings for that auth type and the user value
|
// We want to only restore settings for that auth type and the user value
|
||||||
acc->_settingsMap.insert(QLatin1String(userC), settings.value(userC));
|
acc->_settingsMap.insert(QLatin1String(userC), settings.value(userC));
|
||||||
|
|
|
@ -488,7 +488,27 @@ void Account::slotHandleSslErrors(QNetworkReply *reply, QList<QSslError> errors)
|
||||||
|
|
||||||
void Account::slotCredentialsFetched()
|
void Account::slotCredentialsFetched()
|
||||||
{
|
{
|
||||||
emit credentialsFetched(_credentials.data());
|
if (_davUser.isEmpty()) {
|
||||||
|
qCDebug(lcAccount) << "User id not set. Fetch it.";
|
||||||
|
const auto fetchUserNameJob = new JsonApiJob(sharedFromThis(), QStringLiteral("/ocs/v1.php/cloud/user"));
|
||||||
|
connect(fetchUserNameJob, &JsonApiJob::jsonReceived, this, [this, fetchUserNameJob](const QJsonDocument &json, int statusCode) {
|
||||||
|
fetchUserNameJob->deleteLater();
|
||||||
|
if (statusCode != 100) {
|
||||||
|
qCWarning(lcAccount) << "Could not fetch user id. Login will probably not work.";
|
||||||
|
emit credentialsFetched(_credentials.data());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto objData = json.object().value("ocs").toObject().value("data").toObject();
|
||||||
|
const auto userId = objData.value("id").toString("");
|
||||||
|
setDavUser(userId);
|
||||||
|
emit credentialsFetched(_credentials.data());
|
||||||
|
});
|
||||||
|
fetchUserNameJob->start();
|
||||||
|
} else {
|
||||||
|
qCDebug(lcAccount) << "User id already fetched.";
|
||||||
|
emit credentialsFetched(_credentials.data());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Account::slotCredentialsAsked()
|
void Account::slotCredentialsAsked()
|
||||||
|
|
Loading…
Reference in a new issue