Skip to content
Snippets Groups Projects
Commit 57fb3715 authored by Robin Appelman's avatar Robin Appelman
Browse files

imap user backend

parent 33b8de91
Branches
No related tags found
No related merge requests found
<?php
OC::$CLASSPATH['OC_User_IMAP']='apps/user_external/lib/imap.php';
<?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>
0.1
\ No newline at end of file
<?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;
}
}
<?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',
),
);
<?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'));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment