Allow HTTP authentication without password.

This makes it the plugin useful for any form of webserver-based
authentication (CAS, SAML, etc.); of course, other plugins will
have to be installed to handle connections to the IMAP/SMTP
servers, but at least they don't need to duplicate the basic
HTTP authentication functionality.
pull/141/head
Giovanni Bajo 11 years ago
parent d29f781080
commit 35533c3622

@ -29,7 +29,7 @@ class http_authentication extends rcube_plugin
function startup($args) function startup($args)
{ {
if (!empty($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_PW'])) { if (!empty($_SERVER['PHP_AUTH_USER'])) {
$rcmail = rcmail::get_instance(); $rcmail = rcmail::get_instance();
$rcmail->add_shutdown_function(array('http_authentication', 'shutdown')); $rcmail->add_shutdown_function(array('http_authentication', 'shutdown'));
@ -38,7 +38,8 @@ class http_authentication extends rcube_plugin
$args['action'] = 'login'; $args['action'] = 'login';
} }
// Set user password in session (see shutdown() method for more info) // Set user password in session (see shutdown() method for more info)
else if (!empty($_SESSION['user_id']) && empty($_SESSION['password'])) { else if (!empty($_SESSION['user_id']) && empty($_SESSION['password'])
&& !empty($_SERVER['PHP_AUTH_PW'])) {
$_SESSION['password'] = $rcmail->encrypt($_SERVER['PHP_AUTH_PW']); $_SESSION['password'] = $rcmail->encrypt($_SERVER['PHP_AUTH_PW']);
} }
} }
@ -61,8 +62,9 @@ class http_authentication extends rcube_plugin
return $args; return $args;
} }
if (!empty($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_PW'])) { if (!empty($_SERVER['PHP_AUTH_USER'])) {
$args['user'] = $_SERVER['PHP_AUTH_USER']; $args['user'] = $_SERVER['PHP_AUTH_USER'];
if (!empty($_SERVER['PHP_AUTH_PW']))
$args['pass'] = $_SERVER['PHP_AUTH_PW']; $args['pass'] = $_SERVER['PHP_AUTH_PW'];
} }

Loading…
Cancel
Save