From 4cecede13d74cc26f92aba50d415ff31d277ade5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=BCller?= Date: Wed, 2 Oct 2013 00:55:35 +0200 Subject: [PATCH] code cleanup - remove special case for webdav in handleApacheAuth() --- lib/base.php | 21 +++++++++++++++++---- lib/private/connector/sabre/auth.php | 3 ++- lib/private/user.php | 19 ++++--------------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/lib/base.php b/lib/base.php index f0a0b94a41..56061ba53b 100644 --- a/lib/base.php +++ b/lib/base.php @@ -756,14 +756,17 @@ class OC { protected static function handleLogin() { OC_App::loadApps(array('prelogin')); $error = array(); - if (OC::tryApacheAuth()) { + // auth possible via apache module? + if (OC::tryApacheAuth()) { + $error[] = 'apacheauthfailed'; } // remember was checked after last login elseif (OC::tryRememberLogin()) { $error[] = 'invalidcookie'; - // Someone wants to log in : - } elseif (OC::tryFormLogin()) { + } + // Someone wants to log in : + elseif (OC::tryFormLogin()) { $error[] = 'invalidpassword'; } @@ -782,7 +785,17 @@ class OC { } protected static function tryApacheAuth() { - return OC_User::handleApacheAuth(false); + $return = OC_User::handleApacheAuth(); + + // if return is true we are logged in -> redirect to the default page + if ($return === true) { + $_REQUEST['redirect_url'] = \OC_Request::requestUri(); + OC_Util::redirectToDefaultPage(); + exit; + } + + // in case $return is null apache based auth is not enabled + return is_null($return) ? false : true; } protected static function tryRememberLogin() { diff --git a/lib/private/connector/sabre/auth.php b/lib/private/connector/sabre/auth.php index 9b5663998f..d2fd74c44f 100644 --- a/lib/private/connector/sabre/auth.php +++ b/lib/private/connector/sabre/auth.php @@ -72,7 +72,8 @@ class OC_Connector_Sabre_Auth extends Sabre_DAV_Auth_Backend_AbstractBasic { * @return bool */ public function authenticate(Sabre_DAV_Server $server, $realm) { - if (OC_User::handleApacheAuth(true)) { + + if (OC_User::handleApacheAuth()) { return true; } diff --git a/lib/private/user.php b/lib/private/user.php index a4ad327814..90060cb33d 100644 --- a/lib/private/user.php +++ b/lib/private/user.php @@ -237,12 +237,10 @@ class OC_User { /** * @brief Verify with Apache whether user is authenticated. - * @note Currently supports only Shibboleth. * - * @param $isWebdav Is this request done using webdav. - * @return true: authenticated - false: not authenticated + * @return boolean|null true: authenticated - false: not authenticated */ - public static function handleApacheAuth($isWebdav = false) { + public static function handleApacheAuth() { foreach (self::$_usedBackends as $backend) { if ($backend instanceof OCP\ApacheBackend) { if ($backend->isSessionActive()) { @@ -252,21 +250,12 @@ class OC_User { self::setupBackends(); self::unsetMagicInCookie(); - if (self::loginWithApache($backend)) { - if (! $isWebdav) { - $_REQUEST['redirect_url'] = \OC_Request::requestUri(); - OC_Util::redirectToDefaultPage(); - return true; - } - else { - return true; - } - } + return self::loginWithApache($backend); } } } - return false; + return null; }