Actions

How do you redirect users after a successful login?

From Joomla! Documentation

Revision as of 22:06, 16 July 2013 by Tom Hutchison (Talk | contribs)

Screencapture-Login-module-redirect-dropdown.png

To redirect users after a successful login with the 'login module' you must choose a menu item under the 'Options' tab, 'Basic Options' Section.

From the screenshots you can see the choices of redirection pages are paired to the established menu items under each menu. For example, the top menu has the menu items, Home, Sample Sites and Joomla.org as choices. The menus items are grouped by the menu type(alias), Top is called top, User Menu is usermenu and so on.

Screencapture-control-panel-menus-dropdown.png

To redirect a user after a successful log in, select the redirection page from the list of menu links offered. Make sure that the menu item selected is a published menu item.

Note: The same procedure is used for redirecting users on successful logout except you enter the page where you want to redirect successful logouts to where it says "Logout Redirection URL." Choose the Logout Redirection page the same way you would choose the Login Redirection page using the drop down choice of menu item.

Overriding

If you would like to override the default login specified in your Administration back end from your custom code you can do so with the following:

  • Take the url that you would like to redirect the user to after they have successfully logged in and apply the 'base64_encode' function to it. For example,
$redirectUrl = urlencode(base64_encode($redirectUrl));  
// a base64_encode of index.php?option=com_pizzapie' yeilds: 'aW5kZXgucGhwP29wdGlvbj1jb21fcGl6emFwaWU='
  • Prepend the '&return=' query string to your newly encoded $redirectUrl. For example,
 $redirectUrl = '&return='.$redirectUrl;
  • Append that $redirectUrl to the Joomla Login Url. For example,
              $joomlaLoginUrl = 'index.php?option=com_user&view=login';
              $finalUrl = $joomlaLoginUrl . $redirectUrl;

When you display that $finalUrl, it should look something like this: 'index.php?option=com_user&view=login&return=aW5kZXgucGhwP29wdGlvbj1jb21fcGl6emFwaWU='

The controller.php file in the com_user checks the contents of the 'return' in the JRequest object (the Joomla query access object). If it is set and in the base64 format, it base64_decode(s) it and applies that redirection.