diff --git a/sources/patches/add-http-auth_new_try.patch b/sources/patches/add-http-auth_new_try.patch deleted file mode 100644 index 9f52b39..0000000 --- a/sources/patches/add-http-auth_new_try.patch +++ /dev/null @@ -1,35 +0,0 @@ ---- a/web/src/Controller/Authentication.php -+++ b/web/src/Controller/Authentication.php -@@ -83,7 +83,7 @@ - * @param Application $app - * @return bool false if authentication failed, true otherwise - */ -- protected function processLogin($user, $password, Application $app) -+ public function processLogin($user, $password, Application $app) - { - $app['http.client']->setAuthentication($user, $password, $app['caldav.authmethod']); - ---- a/web/app/controllers.php -+++ b/web/app/controllers.php -@@ -7,6 +7,7 @@ - use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; - use Silex\Application; - -+use AgenDAV\Controller\Authentication; - use AgenDAV\DateHelper; - - // Authentication -@@ -68,6 +69,13 @@ - return; - } - -+ if ($request->headers->get('authorization') != null) { -+ $authController = new Authentication(); -+ if ($authController->processLogin($request->headers->get('PHP_AUTH_USER'), $request->headers->get('PHP_AUTH_PW'), $app)) { -+ return; -+ } -+ } -+ - if ($request->isXmlHttpRequest()) { - return new JsonResponse([], 401); - } else { diff --git a/sources/patches/app-00-add-http-auth.patch.old b/sources/patches/app-00-add-http-auth.patch similarity index 53% rename from sources/patches/app-00-add-http-auth.patch.old rename to sources/patches/app-00-add-http-auth.patch index 20a6304..abd4452 100644 --- a/sources/patches/app-00-add-http-auth.patch.old +++ b/sources/patches/app-00-add-http-auth.patch @@ -1,58 +1,53 @@ --- a/web/app/controllers.php +++ b/web/app/controllers.php -@@ -58,14 +58,20 @@ +@@ -58,14 +58,20 @@ $controllers->before(function(Request $request, Silex\Application $app) { // processing the request if ($app['session']->has('username')) { $username = $app['session']->get('username'); - $preferences = $app['preferences.repository']->userPreferences($username); - $app['user.preferences'] = $preferences; - $app['user.timezone'] = $preferences->get('timezone'); -+ // Clear user session if HTTP authentication changed -+ if (isset($_SERVER['PHP_AUTH_USER']) -+ && $username != $_SERVER['PHP_AUTH_USER']) { -+ $app['session']->clear(); -+ } else { -+ $preferences = $app['preferences.repository']->userPreferences($username); -+ $app['user.preferences'] = $preferences; -+ $app['user.timezone'] = $preferences->get('timezone'); - +- - // Set application language - $request->setLocale($preferences->get('language')); - $app['translator']->setLocale($preferences->get('language')); - return; ++ // Clear user session if HTTP authentication changed ++ if (isset($_SERVER['PHP_AUTH_USER']) ++ && $username != $_SERVER['PHP_AUTH_USER']) { ++ $app['session']->clear(); ++ } else { ++ $preferences = $app['preferences.repository']->userPreferences($username); ++ $app['user.preferences'] = $preferences; ++ $app['user.timezone'] = $preferences->get('timezone'); ++ + // Set application language + $request->setLocale($preferences->get('language')); + $app['translator']->setLocale($preferences->get('language')); + return; + } } - + if ($request->isXmlHttpRequest()) { +diff --git a/web/src/Controller/Authentication.php b/web/src/Controller/Authentication.php +index deebb751..134cc9a8 100644 --- a/web/src/Controller/Authentication.php +++ b/web/src/Controller/Authentication.php -@@ -34,7 +34,7 @@ +@@ -34,9 +34,14 @@ class Authentication $success = false; $template_vars = []; - + - if ($request->isMethod('POST')) { +- $user = $request->request->get('user'); +- $password = $request->request->get('password'); + if ($request->isMethod('POST') || isset($_SERVER['PHP_AUTH_USER'])) { - $user = $request->request->get('user'); - $password = $request->request->get('password'); - -@@ -93,8 +93,14 @@ - return false; - } - -- $app['session']->set('username', $user); -- $app['session']->set('password', $password); -+ if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { -+ $user = $_SERVER['PHP_AUTH_USER']; -+ $password = $_SERVER['PHP_AUTH_PW']; -+ } else { -+ $app['session']->set('username', $user); -+ $app['session']->set('password', $password); -+ } -+ - $principal_url = $caldav_client->getCurrentUserPrincipal(); - - $principals_repository = $app['principals.repository']; ++ if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { ++ $user = $_SERVER['PHP_AUTH_USER']; ++ $password = $_SERVER['PHP_AUTH_PW']; ++ } else { ++ $user = $request->request->get('user'); ++ $password = $request->request->get('password'); ++ } + + if (empty($user) || empty($password)) { + $template_vars['error'] = $app['translator']->trans('messages.error_empty_fields');