Skip to content

Instantly share code, notes, and snippets.

@sakicnet
Created May 5, 2017 01:57
Show Gist options
  • Save sakicnet/f2b8e2486011093d08e544423d8e5124 to your computer and use it in GitHub Desktop.
Save sakicnet/f2b8e2486011093d08e544423d8e5124 to your computer and use it in GitHub Desktop.
403 error fix
<?php
/**
* @package Joomla.Plugin
* @subpackage System.remember
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Joomla! System Remember Me Plugin
*
* @since 1.5
*/
class PlgSystemRemember extends JPlugin
{
/**
* Application object.
*
* @var JApplicationCms
* @since 3.2
*/
protected $app;
/**
* Remember me method to run onAfterInitialise
* Only purpose is to initialise the login authentication process if a cookie is present
*
* @return void
*
* @since 1.5
* @throws InvalidArgumentException
*/
public function onAfterInitialise()
{
// Get the application if not done by JPlugin. This may happen during upgrades from Joomla 2.5.
if (!$this->app)
{
$this->app = JFactory::getApplication();
}
// No remember me for admin.
if ($this->app->isClient('administrator'))
{
return;
}
// Check for a cookie if user is not logged in
if (JFactory::getUser()->get('guest'))
{
$cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();
// Try with old cookieName (pre 3.6.0) if not found
if (!$this->app->input->cookie->get($cookieName))
{
$cookieName = JUserHelper::getShortHashedUserAgent();
}
// Check for the cookie
if ($this->app->input->cookie->get($cookieName))
{
$this->app->login(array('username' => ''), array('silent' => true));
$this->app->getMenu()->__construct();
}
}
}
/**
* Imports the authentication plugin on user logout to make sure that the cookie is destroyed.
*
* @param array $user Holds the user data.
* @param array $options Array holding options (remember, autoregister, group).
*
* @return boolean
*/
public function onUserLogout($user, $options)
{
// No remember me for admin
if ($this->app->isClient('administrator'))
{
return true;
}
$cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();
// Check for the cookie
if ($this->app->input->cookie->get($cookieName))
{
// Make sure authentication group is loaded to process onUserAfterLogout event
JPluginHelper::importPlugin('authentication');
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment