mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-26 23:28:14 +03:00
Merge pull request #6261 from SUNET/master
GUI/LIBSYNC: force login flow V2 with config setting
This commit is contained in:
commit
97ac36e614
9 changed files with 61 additions and 5 deletions
|
@ -41,6 +41,8 @@ Some interesting values that can be set on the configuration file are:
|
|||
| ``chunkSize`` | ``10000000`` (10 MB) | Specifies the chunk size of uploaded files in bytes. |
|
||||
| | | The client will dynamically adjust this size within the maximum and minimum bounds (see below). |
|
||||
+----------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------+
|
||||
| ``forceLoginV2`` | ``false`` | If the client should force the new login flow, eventhough some circumstances might need the old flow. |
|
||||
+----------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------+
|
||||
| ``minChunkSize`` | ``1000000`` (1 MB) | Specifies the minimum chunk size of uploaded files in bytes. |
|
||||
+----------------------------------+--------------------------+--------------------------------------------------------------------------------------------------------+
|
||||
| ``maxChunkSize`` | ``1000000000`` (1000 MB) | Specifies the maximum chunk size of uploaded files in bytes. |
|
||||
|
|
|
@ -213,6 +213,9 @@ int OwncloudSetupPage::nextId() const
|
|||
return WizardCommon::Page_Flow2AuthCreds;
|
||||
#ifdef WITH_WEBENGINE
|
||||
case DetermineAuthTypeJob::WebViewFlow:
|
||||
if (this->useFlow2) {
|
||||
return WizardCommon::Page_Flow2AuthCreds;
|
||||
}
|
||||
return WizardCommon::Page_WebView;
|
||||
#endif // WITH_WEBENGINE
|
||||
case DetermineAuthTypeJob::NoAuthType:
|
||||
|
|
|
@ -89,6 +89,9 @@ private:
|
|||
QProgressIndicator *_progressIndi;
|
||||
OwncloudWizard *_ocWizard;
|
||||
AddCertificateDialog *addCertDial = nullptr;
|
||||
|
||||
// Grab the forceLoginV2-setting from the wizard
|
||||
bool useFlow2 = _ocWizard->useFlow2();
|
||||
};
|
||||
|
||||
} // namespace OCC
|
||||
|
|
|
@ -65,7 +65,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
|
|||
setPage(WizardCommon::Page_Flow2AuthCreds, _flow2CredsPage);
|
||||
setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage);
|
||||
#ifdef WITH_WEBENGINE
|
||||
setPage(WizardCommon::Page_WebView, _webViewPage);
|
||||
if (!useFlow2()) {
|
||||
setPage(WizardCommon::Page_WebView, _webViewPage);
|
||||
}
|
||||
#endif // WITH_WEBENGINE
|
||||
|
||||
connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished);
|
||||
|
@ -78,7 +80,9 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
|
|||
connect(_httpCredsPage, &OwncloudHttpCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
|
||||
connect(_flow2CredsPage, &Flow2AuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
|
||||
#ifdef WITH_WEBENGINE
|
||||
connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
|
||||
if (!useFlow2()) {
|
||||
connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
|
||||
}
|
||||
#endif // WITH_WEBENGINE
|
||||
connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders,
|
||||
this, &OwncloudWizard::createLocalAndRemoteFolders);
|
||||
|
@ -189,6 +193,11 @@ QStringList OwncloudWizard::selectiveSyncBlacklist() const
|
|||
return _advancedSetupPage->selectiveSyncBlacklist();
|
||||
}
|
||||
|
||||
bool OwncloudWizard::useFlow2() const
|
||||
{
|
||||
return _useFlow2;
|
||||
}
|
||||
|
||||
bool OwncloudWizard::useVirtualFileSync() const
|
||||
{
|
||||
return _advancedSetupPage->useVirtualFileSync();
|
||||
|
@ -235,7 +244,9 @@ void OwncloudWizard::successfulStep()
|
|||
|
||||
#ifdef WITH_WEBENGINE
|
||||
case WizardCommon::Page_WebView:
|
||||
_webViewPage->setConnected();
|
||||
if (!this->useFlow2()) {
|
||||
_webViewPage->setConnected();
|
||||
}
|
||||
break;
|
||||
#endif // WITH_WEBENGINE
|
||||
|
||||
|
@ -276,7 +287,11 @@ void OwncloudWizard::setAuthType(DetermineAuthTypeJob::AuthType type)
|
|||
_credentialsPage = _flow2CredsPage;
|
||||
#ifdef WITH_WEBENGINE
|
||||
} else if (type == DetermineAuthTypeJob::WebViewFlow) {
|
||||
_credentialsPage = _webViewPage;
|
||||
if(this->useFlow2()) {
|
||||
_credentialsPage = _flow2CredsPage;
|
||||
} else {
|
||||
_credentialsPage = _webViewPage;
|
||||
}
|
||||
#endif // WITH_WEBENGINE
|
||||
} else { // try Basic auth even for "Unknown"
|
||||
_credentialsPage = _httpCredsPage;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <QSslKey>
|
||||
#include <QSslCertificate>
|
||||
|
||||
#include "libsync/configfile.h"
|
||||
#include "networkjobs.h"
|
||||
#include "wizard/owncloudwizardcommon.h"
|
||||
#include "accountfwd.h"
|
||||
|
@ -64,6 +65,7 @@ public:
|
|||
[[nodiscard]] QString ocUrl() const;
|
||||
[[nodiscard]] QString localFolder() const;
|
||||
[[nodiscard]] QStringList selectiveSyncBlacklist() const;
|
||||
[[nodiscard]] bool useFlow2() const;
|
||||
[[nodiscard]] bool useVirtualFileSync() const;
|
||||
[[nodiscard]] bool isConfirmBigFolderChecked() const;
|
||||
|
||||
|
@ -131,6 +133,8 @@ private:
|
|||
|
||||
bool _registration = false;
|
||||
|
||||
bool _useFlow2 = ConfigFile().forceLoginV2();
|
||||
|
||||
friend class OwncloudSetupWizard;
|
||||
};
|
||||
|
||||
|
|
|
@ -104,6 +104,8 @@ static constexpr char stopSyncingExistingFoldersOverLimitC[] = "stopSyncingExist
|
|||
static constexpr char confirmExternalStorageC[] = "confirmExternalStorage";
|
||||
static constexpr char moveToTrashC[] = "moveToTrash";
|
||||
|
||||
static constexpr char forceLoginV2C[] = "forceLoginV2";
|
||||
|
||||
static constexpr char certPath[] = "http_certificatePath";
|
||||
static constexpr char certPasswd[] = "http_certificatePasswd";
|
||||
|
||||
|
@ -991,6 +993,16 @@ void ConfigFile::setMoveToTrash(bool isChecked)
|
|||
setValue(moveToTrashC, isChecked);
|
||||
}
|
||||
|
||||
bool ConfigFile::forceLoginV2() const
|
||||
{
|
||||
return getValue(forceLoginV2C, QString(), false).toBool();
|
||||
}
|
||||
|
||||
void ConfigFile::setForceLoginV2(bool isChecked)
|
||||
{
|
||||
setValue(forceLoginV2C, isChecked);
|
||||
}
|
||||
|
||||
bool ConfigFile::showMainDialogAsNormalWindow() const {
|
||||
return getValue(showMainDialogAsNormalWindowC, {}, false).toBool();
|
||||
}
|
||||
|
|
|
@ -153,6 +153,10 @@ public:
|
|||
[[nodiscard]] bool moveToTrash() const;
|
||||
void setMoveToTrash(bool);
|
||||
|
||||
/** If we should force loginflow v2 */
|
||||
[[nodiscard]] bool forceLoginV2() const;
|
||||
void setForceLoginV2(bool);
|
||||
|
||||
[[nodiscard]] bool showMainDialogAsNormalWindow() const;
|
||||
|
||||
static bool setConfDir(const QString &value);
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
|
||||
#include "creds/abstractcredentials.h"
|
||||
#include "creds/httpcredentials.h"
|
||||
#include "configfile.h"
|
||||
|
||||
namespace OCC {
|
||||
|
||||
|
@ -1012,6 +1013,7 @@ DetermineAuthTypeJob::DetermineAuthTypeJob(AccountPtr account, QObject *parent)
|
|||
: QObject(parent)
|
||||
, _account(account)
|
||||
{
|
||||
useFlow2 = ConfigFile().forceLoginV2();
|
||||
}
|
||||
|
||||
void DetermineAuthTypeJob::start()
|
||||
|
@ -1077,7 +1079,11 @@ void DetermineAuthTypeJob::start()
|
|||
if (flow != QJsonValue::Undefined) {
|
||||
if (flow.toInt() == 1) {
|
||||
#ifdef WITH_WEBENGINE
|
||||
_resultOldFlow = WebViewFlow;
|
||||
if(!this->useFlow2) {
|
||||
_resultOldFlow = WebViewFlow;
|
||||
} else {
|
||||
qCWarning(lcDetermineAuthTypeJob) << "Server only supports flow1, but this client was configured to only use flow2";
|
||||
}
|
||||
#else // WITH_WEBENGINE
|
||||
qCWarning(lcDetermineAuthTypeJob) << "Server does only support flow1, but this client was compiled without support for flow1";
|
||||
#endif // WITH_WEBENGINE
|
||||
|
@ -1111,6 +1117,9 @@ void DetermineAuthTypeJob::checkAllDone()
|
|||
// WebViewFlow > Basic
|
||||
if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) {
|
||||
result = WebViewFlow;
|
||||
if (useFlow2) {
|
||||
result = LoginFlowV2;
|
||||
}
|
||||
}
|
||||
#endif // WITH_WEBENGINE
|
||||
|
||||
|
@ -1123,6 +1132,9 @@ void DetermineAuthTypeJob::checkAllDone()
|
|||
// If we determined that we need the webview flow (GS for example) then we switch to that
|
||||
if (_resultOldFlow == WebViewFlow) {
|
||||
result = WebViewFlow;
|
||||
if (useFlow2) {
|
||||
result = LoginFlowV2;
|
||||
}
|
||||
}
|
||||
#endif // WITH_WEBENGINE
|
||||
|
||||
|
|
|
@ -549,6 +549,7 @@ private:
|
|||
bool _getDone = false;
|
||||
bool _propfindDone = false;
|
||||
bool _oldFlowDone = false;
|
||||
bool useFlow2 = false;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue