imap user backend
This commit is contained in:
2
appinfo/app.php
Normal file
2
appinfo/app.php
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
<?php
|
||||||
|
OC::$CLASSPATH['OC_User_IMAP']='apps/user_external/lib/imap.php';
|
||||||
13
appinfo/info.xml
Normal file
13
appinfo/info.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<info>
|
||||||
|
<id>user_external</id>
|
||||||
|
<name>External user support</name>
|
||||||
|
<description>Use external user authentication methods</description>
|
||||||
|
<licence>AGPL</licence>
|
||||||
|
<author>Robin Appelman</author>
|
||||||
|
<require>4</require>
|
||||||
|
<shipped>true</shipped>
|
||||||
|
<types>
|
||||||
|
<authentication/>
|
||||||
|
</types>
|
||||||
|
</info>
|
||||||
1
appinfo/version
Normal file
1
appinfo/version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
0.1
|
||||||
40
lib/imap.php
Normal file
40
lib/imap.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
16
tests/config.php
Normal file
16
tests/config.php
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
|
||||||
|
* 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',
|
||||||
|
),
|
||||||
|
);
|
||||||
34
tests/imap.php
Normal file
34
tests/imap.php
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
|
||||||
|
* 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'));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user