Redirected to component/users/profile.html?Itemid=xxx
shteevy opened this issue · comments
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
You can now precise the login url for each CAS server.
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.
Unfortunatély, I cannot fix this issue for now. You are welcome to propose a Pull Request
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 ?
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)
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