diff --git a/plugins/authentication/cookie/cookie.php b/plugins/authentication/cookie/cookie.php index 66a8927c2603f..c6ab65866ba7b 100644 --- a/plugins/authentication/cookie/cookie.php +++ b/plugins/authentication/cookie/cookie.php @@ -54,7 +54,7 @@ public function onUserAuthenticate($credentials, $options, &$response) } // Get cookie - $cookieName = JUserHelper::getShortHashedUserAgent(); + $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); $cookieValue = $this->app->input->cookie->get($cookieName); if (!$cookieValue) @@ -220,7 +220,7 @@ public function onUserAfterLogin($options) if (isset($options['responseType']) && $options['responseType'] == 'Cookie') { // Logged in using a cookie - $cookieName = JUserHelper::getShortHashedUserAgent(); + $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); // We need the old data to get the existing series $cookieValue = $this->app->input->cookie->get($cookieName); @@ -233,7 +233,7 @@ public function onUserAfterLogin($options) elseif (!empty($options['remember'])) { // Remember checkbox is set - $cookieName = JUserHelper::getShortHashedUserAgent(); + $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); // Create an unique series which will be used over the lifespan of the cookie $unique = false; @@ -346,7 +346,7 @@ public function onUserAfterLogout($options) return false; } - $cookieName = JUserHelper::getShortHashedUserAgent(); + $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); $cookieValue = $this->app->input->cookie->get($cookieName); // There are no cookies to delete. diff --git a/plugins/system/remember/remember.php b/plugins/system/remember/remember.php index c4c91e129449c..dc145bde661f2 100644 --- a/plugins/system/remember/remember.php +++ b/plugins/system/remember/remember.php @@ -51,7 +51,7 @@ public function onAfterInitialise() // Check for a cookie if user is not logged in if (JFactory::getUser()->get('guest')) { - $cookieName = JUserHelper::getShortHashedUserAgent(); + $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); // Check for the cookie if ($this->app->input->cookie->get($cookieName)) @@ -77,7 +77,7 @@ public function onUserLogout($user, $options) return true; } - $cookieName = JUserHelper::getShortHashedUserAgent(); + $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); // Check for the cookie if ($this->app->input->cookie->get($cookieName)) diff --git a/plugins/user/joomla/joomla.php b/plugins/user/joomla/joomla.php index 6314f6aa1291e..aa053b64a75c3 100644 --- a/plugins/user/joomla/joomla.php +++ b/plugins/user/joomla/joomla.php @@ -234,6 +234,16 @@ public function onUserLogin($user, $options = array()) // Hit the user last visit field $instance->setLastVisit(); + // Add "user state" cookie used for reverse caching proxies like Varnish, Nginx etc. + $conf = JFactory::getConfig(); + $cookie_domain = $conf->get('cookie_domain', ''); + $cookie_path = $conf->get('cookie_path', '/'); + + if ($this->app->isSite()) + { + $this->app->input->cookie->set("joomla_user_state", "logged_in", 0, $cookie_path, $cookie_domain, 0); + } + return true; } @@ -286,6 +296,17 @@ public function onUserLogout($user, $options = array()) return false; } } + + // Delete "user state" cookie used for reverse caching proxies like Varnish, Nginx etc. + $conf = JFactory::getConfig(); + $cookie_domain = $conf->get('cookie_domain', ''); + $cookie_path = $conf->get('cookie_path', '/'); + + if ($this->app->isSite()) + { + $this->app->input->cookie->set("joomla_user_state", "", time() - 86400, $cookie_path, $cookie_domain, 0); + } + return true; }