[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/pim/googledata
From:       Adenilson Cavalcanti Da Silva <cavalcantii () gmail ! com>
Date:       2010-09-01 3:29:59
Message-ID: 20100901032959.8068EAC857 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1170478 by adasilva:

This patch changes the way that the passwords are stored in KWallet. It will
use as key a combination of resource type plus username.

The practival results of this small change:
a) If the user has 1 resource type (e.g. contact) configured and adds another
resource type (e.g. calendar), it will ask again for the user + pass instead
of trying to read from kwallet. This was triggering a failure in authentication
logic and sync failed at startup.

b) The user can add N_accounts * resources of same time and each one will
happily sync without stepping in each others toes. Previosly it would fail,
since the last added resource would overwrite the user credentials in kwallet.



 M  +3 -2      calendar/gcalresource.cpp  
 M  +3 -2      contacts/googledataresource.cpp  
 M  +6 -6      shared/googledata.cpp  
 M  +4 -2      shared/googledata.h  


--- trunk/extragear/pim/googledata/calendar/gcalresource.cpp #1170477:1170478
@@ -234,7 +234,8 @@
 	WId window = winIdForDialogs();
 
 	if (online)
-		if (!retrieveFromWallet(user, password, window))
+		if (!retrieveFromWallet(user, password, window,
+                                        QString("gcal")))
 			if (!(result = authenticate(user, password))) {
 				authenticated = true;
 				ResourceBase::doSetOnline(online);
@@ -427,7 +428,7 @@
 
 	const int walletRes = saveToWallet(dlgConf->eAccount->text(),
 				     dlgConf->ePass->text(),
-				     windowId);
+                                           windowId, QString("gcal"));
 	if (walletRes)
 		kError() << "Cannot save user info: is user using kwallet?.";
 
--- trunk/extragear/pim/googledata/contacts/googledataresource.cpp #1170477:1170478
@@ -453,7 +453,8 @@
 	WId window = winIdForDialogs();
 
 	if (online)
-		if (!retrieveFromWallet(user, password, window))
+		if (!retrieveFromWallet(user, password, window,
+                                        QString("gcont")))
 			if (!(result = authenticate(user, password))) {
 				ResourceBase::doSetOnline(online);
 				synchronize();
@@ -749,7 +750,7 @@
 
 	int walletRes = saveToWallet(dlgConf->eAccount->text(),
 				     dlgConf->ePass->text(),
-				     windowId);
+				     windowId, QString("gcont"));
 	if (walletRes)
 		kError() << "Cannot save user info: is user using kwallet?.";
 
--- trunk/extragear/pim/googledata/shared/googledata.cpp #1170477:1170478
@@ -45,10 +45,10 @@
 
 int GoogleData::saveToWallet(const QString &user, const QString &pass,
 			     const WId &window, const QString &folder,
-			     const QString &awallet)
+			     const QString &awallet,
+                             const QString &keyname)
 {
 	int result = -1;
-	const QString gaccount("googleAccount");
 	if (wallet == 0)
 		wallet = Wallet::openWallet(awallet, window);
 
@@ -62,7 +62,7 @@
 		QMap<QString, QString> data;
 		data["login"] = user;
 		data["password"] = pass;
-		wallet->writeMap(gaccount, data);
+		wallet->writeMap(keyname + user, data);
 		wallet->sync();
 		result = 0;
 	}
@@ -73,10 +73,10 @@
 int GoogleData::retrieveFromWallet(QString &user,
 				   QString &pass,
 				   const WId &window,
-				   const QString &folder)
+				   const QString &folder,
+				   const QString &keyname)
 {
 	int result = -1;
-	const QString gaccount("googleAccount");
 	if (wallet == 0)
 		wallet = Wallet::openWallet(Wallet::NetworkWallet(), window);
 
@@ -88,7 +88,7 @@
 			return result;
 		wallet->setFolder(folder);
 		QMap<QString, QString> data;
-		if (!wallet->readMap(gaccount, data)) {
+		if (!wallet->readMap(keyname + user, data)) {
 			user = data["login"];
 			pass = data["password"];
 			result = 0;
--- trunk/extragear/pim/googledata/shared/googledata.h #1170477:1170478
@@ -43,12 +43,14 @@
 	int saveToWallet(const QString &user, const QString &pass,
 			 const WId &window,
 			 const QString &folder = "akonadigoogle",
-			 const QString &awallet = "kdewallet");
+			 const QString &awallet = "kdewallet",
+			 const QString &keyname = "googleAccount");
 
 
 	int retrieveFromWallet(QString &user, QString &pass,
 			       const WId &window,
-			       const QString &folder = "akonadigoogle");
+			       const QString &folder = "akonadigoogle",
+			       const QString &keyname = "googleAccount");
 
 	int authenticate(const QString &user, const QString &password);
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic