Adapt handling of invalid credentials and ensure that no IMAP connection is attempted...
authorGunnar Wrobel <p@rdus.de>
Thu, 11 Mar 2010 07:27:42 +0000 (08:27 +0100)
committerGunnar Wrobel <p@rdus.de>
Thu, 11 Mar 2010 07:27:42 +0000 (08:27 +0100)
framework/Kolab_Session/lib/Horde/Kolab/Session/Base.php
framework/Kolab_Session/lib/Horde/Kolab/Session/Exception.php
framework/Kolab_Session/test/Horde/Kolab/Session/Class/BaseTest.php

index 3eb52ff..c657108 100644 (file)
@@ -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(
index 20a5793..90ea794 100644 (file)
@@ -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
index 69064ab..0b0b7c7 100644 (file)
@@ -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()
         );
     }