You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
984 B
PHTML
52 lines
984 B
PHTML
12 years ago
|
<?php
|
||
|
/* Requires php-imap
|
||
|
Put the following options in config.php:
|
||
|
|
||
|
define('IMAP_AUTH_SERVER', 'your.imap.server:port');
|
||
|
define('IMAP_AUTH_OPTIONS', '/tls/novalidate-cert/norsh');
|
||
|
// More about options: http://php.net/manual/ru/function.imap-open.php
|
||
|
|
||
12 years ago
|
*/
|
||
|
class Auth_Imap extends Plugin implements IAuthModule {
|
||
|
|
||
|
private $link;
|
||
|
private $host;
|
||
|
private $base;
|
||
|
|
||
|
function about() {
|
||
|
return array(1.0,
|
||
|
"Authenticates against an IMAP server (configured in config.php)",
|
||
|
"fox",
|
||
|
true);
|
||
|
}
|
||
|
|
||
|
function init($host) {
|
||
|
$this->link = $host->get_link();
|
||
|
$this->host = $host;
|
||
|
$this->base = new Auth_Base($this->link);
|
||
12 years ago
|
|
||
12 years ago
|
$host->add_hook($host::HOOK_AUTH_USER, $this);
|
||
|
}
|
||
12 years ago
|
|
||
|
function authenticate($login, $password) {
|
||
|
|
||
|
if ($login && $password) {
|
||
|
$imap = imap_open(
|
||
|
"{".IMAP_AUTH_SERVER.IMAP_AUTH_OPTIONS."}INBOX",
|
||
|
$login,
|
||
|
$password);
|
||
|
|
||
|
if ($imap) {
|
||
|
imap_close($imap);
|
||
|
|
||
12 years ago
|
return $this->base->auto_create_user($login);
|
||
12 years ago
|
}
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
}
|
||
12 years ago
|
|
||
12 years ago
|
?>
|