chdemko / joomla-external-login

The External Login project allows Joomla! to manage external Authentication Servers
GNU General Public License v2.0
30 stars 19 forks source link

Redirected to component/users/profile.html?Itemid=xxx #55

Closed shteevy closed 6 years ago

shteevy commented 6 years ago

Hello,

Since the update of Joomla to version 3.8.10, our users are redirected after a good login to https://our-domain.tld/component/users/profile.html?Itemid=xxx

We did not change anything in the External login and CAS config before the update of Joomla.

We are using the last version of plugin 3.1.2.0 and the problem is still present on our 3 websites.

Thank you for your help, Steve

chdemko commented 6 years ago

You can now precise the login url for each CAS server.

shteevy commented 6 years ago

Hello Christophe, this answer is not helping :( Even if a page is choosed, we are redirected to the profile page. I experience it again on a fresh install of Joomla. I think something has changed in the routing method in Joomla 3.8.9 release.

Steve.

chdemko commented 6 years ago

Unfortunatély, I cannot fix this issue for now. You are welcome to propose a Pull Request

shteevy commented 6 years ago

Thank you Christophe. I'm not a coder but i have some friends that are good but not familiar with Joomla Framework. We search for two days without result. Do you have an advise or some explanation for them ?

chdemko commented 6 years ago

The issue is starting https://github.com/chdemko/joomla-external-login/blob/master/src/plg_system_caslogin/caslogin.php#L436

Bad information are sent to the com_users component. See https://github.com/joomla/joomla-cms/blob/staging/components/com_users/controllers/user.php (the login task)

shteevy commented 6 years ago

Hello,

We fix this using this code : ..\plugins\system\caslogin\caslogin.php (line 447)

Replace :

$input->set('option', 'com_users');
$input->set('task', 'user.login');
$input->set('Itemid', 0);
$input->post->set(JSession::getFormToken(), 1);

// We are forced to encode the url in base64 as com_users uses this encoding

$input->post->set('return', base64_encode($return));

By :

$input->set('option', 'com_users');
$input->set('task', 'user.login');
$fix = JFactory::getApplication()
->input
->getInputForRequestMethod();
$fix->set('Itemid', 0);
$input->post->set(JSession::getFormToken(), 1);

// We are forced to encode the url in base64 as com_users uses this encoding
$fix->set('return', base64_encode($return));

Is it correct for you ?

Steve