From edfefabcf8d3f5e03c8a305f027fa65e871192c2 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Sat, 8 Dec 2012 22:56:48 +0100 Subject: [PATCH] Use two step process to store credentials through config file. --- src/mirall/mirallconfigfile.cpp | 8 ++++++-- src/mirall/mirallconfigfile.h | 1 + src/mirall/owncloudsetupwizard.cpp | 15 ++++++++------- src/mirall/owncloudsetupwizard.h | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/mirall/mirallconfigfile.cpp b/src/mirall/mirallconfigfile.cpp index 4847977697..bf278fe8d1 100644 --- a/src/mirall/mirallconfigfile.cpp +++ b/src/mirall/mirallconfigfile.cpp @@ -162,8 +162,8 @@ void MirallConfigFile::writeOwncloudConfig( const QString& connection, // check the perms, only read-write for the owner. QFile::setPermissions( file, QFile::ReadOwner|QFile::WriteOwner ); - // inform the credential store about the password change. - CredentialStore::instance()->setCredentials( cloudsUrl, user, pwd, skipPwd ); + // Store credentials temporar until the config is finalized. + CredentialStore::instance()->setCredentials( cloudsUrl, user, passwd ); } @@ -451,6 +451,7 @@ void MirallConfigFile::acceptCustomConfig() } QString srcConfig = configFile(); // this considers the custom handle + _customHandle.clear(); QString targetConfig = configFile(); QString targetBak = targetConfig + QLatin1String(".bak"); @@ -471,6 +472,9 @@ void MirallConfigFile::acceptCustomConfig() } } QFile::remove( targetBak ); + + // inform the credential store about the password change. + CredentialStore::instance()->saveCredentials( ); } QVariant MirallConfigFile::customMedia( customMediaType type ) diff --git a/src/mirall/mirallconfigfile.h b/src/mirall/mirallconfigfile.h index 3dcafa1b8a..f3556aa6b8 100644 --- a/src/mirall/mirallconfigfile.h +++ b/src/mirall/mirallconfigfile.h @@ -116,6 +116,7 @@ private: static bool _askedUser; static QString _oCVersion; QString _customHandle; + }; } diff --git a/src/mirall/owncloudsetupwizard.cpp b/src/mirall/owncloudsetupwizard.cpp index 610f6fb21d..58740ac015 100644 --- a/src/mirall/owncloudsetupwizard.cpp +++ b/src/mirall/owncloudsetupwizard.cpp @@ -16,7 +16,6 @@ #include "mirall/mirallconfigfile.h" #include "mirall/owncloudinfo.h" #include "mirall/folderman.h" -#include "mirall/credentialstore.h" #include #include @@ -392,16 +391,18 @@ void OwncloudSetupWizard::setupLocalSyncFolder() if( localFolderOk ) { _remoteFolder = Theme::instance()->defaultServerFolder(); - CredentialStore::instance()->reset(); - connect( CredentialStore::instance(), SIGNAL(fetchCredentialsFinished(int)), - this, SLOT(slotCreateRemoteFolder(int))); - CredentialStore::instance()->fetchCredentials(); + slotCreateRemoteFolder(true); } } -void OwncloudSetupWizard::slotCreateRemoteFolder(int res) +void OwncloudSetupWizard::slotCreateRemoteFolder(bool credentialsOk ) { - disconnect(CredentialStore::instance(), SIGNAL(fetchCredentialsFinished(bool))); + if( ! credentialsOk ) { + // User pressed cancel while being asked for password. + _ocWizard->appendToResultWidget("User canceled password dialog. Can not connect."); + return; + } + if( createRemoteFolder( _remoteFolder ) ) { qDebug() << "Started remote folder creation ok"; } else { diff --git a/src/mirall/owncloudsetupwizard.h b/src/mirall/owncloudsetupwizard.h index 8714c98ad9..d50f9d68fb 100644 --- a/src/mirall/owncloudsetupwizard.h +++ b/src/mirall/owncloudsetupwizard.h @@ -80,7 +80,7 @@ protected slots: void slotConnectToOCUrl( const QString& ); void slotCreateOCLocalhost(); - void slotCreateRemoteFolder(int); + void slotCreateRemoteFolder(bool); private slots: void slotOwnCloudFound( const QString&, const QString&, const QString&, const QString& );