From 0cde6648303f8e6b6640ab60d27531070f08af32 Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel
Date: Thu, 11 Mar 2010 08:27:42 +0100 Subject: [PATCH] Adapt handling of invalid credentials and ensure that no IMAP connection is attempted if login failed. --- framework/Kolab_Session/lib/Horde/Kolab/Session/Base.php | 14 ++++++++++++-- .../Kolab_Session/lib/Horde/Kolab/Session/Exception.php | 2 +- .../test/Horde/Kolab/Session/Class/BaseTest.php | 5 +++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/framework/Kolab_Session/lib/Horde/Kolab/Session/Base.php b/framework/Kolab_Session/lib/Horde/Kolab/Session/Base.php index 3eb52ff74..c657108c7 100644 --- a/framework/Kolab_Session/lib/Horde/Kolab/Session/Base.php +++ b/framework/Kolab_Session/lib/Horde/Kolab/Session/Base.php @@ -104,6 +104,13 @@ class Horde_Kolab_Session_Base implements Horde_Kolab_Session_Interface private $_storage; /** + * Mark the session as connected. + * + * @var true + */ + private $_connected = false; + + /** * Constructor. * * @param string $user_id The session will be setup for the user @@ -144,9 +151,9 @@ class Horde_Kolab_Session_Base implements Horde_Kolab_Session_Interface $this->_server->connect($this->_user_id, $password); $user_object = $this->_server->objects->fetch(); } catch (Horde_Kolab_Server_Exception_Bindfailed $e) { - throw new Horde_Kolab_Session_Exception_Badlogin($e); + throw new Horde_Kolab_Session_Exception_Badlogin('Invalid credentials!', 0, $e); } catch (Horde_Kolab_Server_Exception $e) { - throw new Horde_Kolab_Session_Exception($e); + throw new Horde_Kolab_Session_Exception('Login failed!', 0, $e); } $this->_initMail($user_object); @@ -356,6 +363,9 @@ class Horde_Kolab_Session_Base implements Horde_Kolab_Session_Interface */ public function getStorage() { + if (!$this->_connected) { + return false; + } if (empty($this->_storage)) { //@todo: factory? $this->_storage = new Horde_Kolab_Storage( diff --git a/framework/Kolab_Session/lib/Horde/Kolab/Session/Exception.php b/framework/Kolab_Session/lib/Horde/Kolab/Session/Exception.php index 20a579371..90ea79477 100644 --- a/framework/Kolab_Session/lib/Horde/Kolab/Session/Exception.php +++ b/framework/Kolab_Session/lib/Horde/Kolab/Session/Exception.php @@ -25,6 +25,6 @@ * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Session */ -class Horde_Kolab_Session_Exception extends Horde_Exception_Prior +class Horde_Kolab_Session_Exception extends Horde_Exception { } \ No newline at end of file diff --git a/framework/Kolab_Session/test/Horde/Kolab/Session/Class/BaseTest.php b/framework/Kolab_Session/test/Horde/Kolab/Session/Class/BaseTest.php index 69064ab1b..0b0b7c703 100644 --- a/framework/Kolab_Session/test/Horde/Kolab/Session/Class/BaseTest.php +++ b/framework/Kolab_Session/test/Horde/Kolab/Session/Class/BaseTest.php @@ -174,7 +174,7 @@ class Horde_Kolab_Session_Class_BaseTest extends Horde_Kolab_Session_SessionTest try { $session->connect(array('password' => 'pass')); } catch (Horde_Kolab_Session_Exception $e) { - $this->assertEquals('Error', $e->getMessage()); + $this->assertEquals('Login failed!', $e->getMessage()); } } @@ -190,7 +190,7 @@ class Horde_Kolab_Session_Class_BaseTest extends Horde_Kolab_Session_SessionTest try { $session->connect(array('password' => 'pass')); } catch (Horde_Kolab_Session_Exception_Badlogin $e) { - $this->assertEquals('Error', $e->getMessage()); + $this->assertEquals('Invalid credentials!', $e->getMessage()); } } @@ -209,6 +209,7 @@ class Horde_Kolab_Session_Class_BaseTest extends Horde_Kolab_Session_SessionTest '_imap_server', '_freebusy_server', '_storage_params', + '_connected' ), $session->__sleep() ); } -- 2.11.0