commit dc4d907a3f9758730d249cb430ebc52c9d54a075 Author: Robin Appelman Date: Thu Jul 19 22:42:18 2012 +0200 imap user backend diff --git a/appinfo/app.php b/appinfo/app.php new file mode 100644 index 0000000..e53b839 --- /dev/null +++ b/appinfo/app.php @@ -0,0 +1,2 @@ + + + user_external + External user support + Use external user authentication methods + AGPL + Robin Appelman + 4 + true + + + + diff --git a/appinfo/version b/appinfo/version new file mode 100644 index 0000000..ceab6e1 --- /dev/null +++ b/appinfo/version @@ -0,0 +1 @@ +0.1 \ No newline at end of file diff --git a/lib/imap.php b/lib/imap.php new file mode 100644 index 0000000..584e980 --- /dev/null +++ b/lib/imap.php @@ -0,0 +1,40 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class OC_User_IMAP extends OC_User_Backend{ + private $mailbox; + + public function __construct($mailbox){ + $this->mailbox=$mailbox; + } + + /** + * @brief Check if the password is correct + * @param $uid The username + * @param $password The password + * @returns true/false + * + * Check if the password is correct without logging in the user + */ + public function checkPassword($uid, $password){ + $mbox = @imap_open($this->mailbox, $uid, $password); + imap_errors(); + imap_alerts(); + if($mbox){ + imap_close($mbox); + return $uid; + }else{ + return false; + } + } + + public function userExists($uid){ + return true; + } +} + diff --git a/tests/config.php b/tests/config.php new file mode 100644 index 0000000..a32ad5d --- /dev/null +++ b/tests/config.php @@ -0,0 +1,16 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +return array( + 'imap'=>array( + 'run'=>false, + 'mailbox'=>'{imap.gmail.com:993/imap/ssl}INBOX', //see http://php.net/manual/en/function.imap-open.php + 'user'=>'foo',//valid username/password combination + 'password'=>'bar', + ), +); diff --git a/tests/imap.php b/tests/imap.php new file mode 100644 index 0000000..c703b32 --- /dev/null +++ b/tests/imap.php @@ -0,0 +1,34 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class Test_User_Imap extends UnitTestCase{ + /** + * @var OC_User_IMAP $instance + */ + private $instance; + + private function getConfig(){ + return include(__DIR__.'/config.php'); + } + + function skip(){ + $config=$this->getConfig(); + $this->skipUnless($config['imap']['run']); + } + + function setUp(){ + $config=$this->getConfig(); + $this->instance=new OC_User_IMAP($config['imap']['mailbox']); + } + + function testLogin(){ + $config=$this->getConfig(); + $this->assertEqual($config['imap']['user'],$this->instance->checkPassword($config['imap']['user'],$config['imap']['password'])); + $this->assertFalse($this->instance->checkPassword($config['imap']['user'],$config['imap']['password'].'foo')); + } +}