Registered Users Cannot Login - Super Users Can

Applies to
  • Joomla CMS v2.5.14

What?
This article is a note on how I fixed an issue on a client site. The website had a redirect on the login which would go to a page accessible by "registered" users but only "Super Users" could actually login. "Registered" users would not be able to login, despite their status in the admin panel saying "enabled" and "activated" (not blocked).

If I used a test account, none of the Joomla groups, not even "Administrators" could login. However set the same test account to a "Super User" and they would be able to login. Was the problem authentication? Restricted access to a component? A load of blab on ACL managers?

How?
In our case, the website had recently been migrated from Joomla 1.5.x to 2.5.x. I asked to examine the database and a quick scan in the assets table revealed 3 assets had the parent_id = 0. Only one asset can have that and that is "root".
  1. Login to your Joomla database using your MySQL database manager (eg. phpMyAdmin, MySQL Workbench)
  2. Open the #__assets table
    1. where #_ is the Database Tables Prefix value found by logging into your Joomla admin panel
    2. Browse to Site > Global Configuration > Server > Database Settings : Database Tables Prefix
    3. It should be a short alphanumeric value with a trailing underscore (eg. "abc12_")
  3. Check if you have more than one asset with a parent_id equal to zero:
    copyraw
    SELECT COUNT(*) FROM #__assets WHERE parent_id=0
    
    -- where #_ is the Database Tables Prefix value
    1.  SELECT COUNT(*) FROM #__assets WHERE parent_id=0 
    2.   
    3.  -- where #_ is the Database Tables Prefix value 
  4. There can be only one:
    1. If the number returned is 1 then this article is not addressing your issue. This is a red herring.
    2. If the number returned is greater than 1 then run the following query:
      copyraw
      UPDATE #__assets SET parent_id=1 WHERE parent_id=0 AND id1 AND title'Root Asset'
      
      -- where #_ is the Database Tables Prefix value
      1.  UPDATE #__assets SET parent_id=1 WHERE parent_id=0 AND id1 AND title'Root asset' 
      2.   
      3.  -- where #_ is the Database Tables Prefix value 
  5. Done

phpMyAdmin alternative
The gist is simple, you can only have one asset that has a parent_id of zero. Login to your database using phpMyAdmin, open the table with the suffix "_assets" and order the data (clicking on the heading of the column) by their parent_id. If you see more than one record with a value of 0, then change it to 1. If it's name is "root..." and title is "Root Asset" then leave this as having a parent_id of 0.

The fix is immediate after the change is committed to the database.

NTS: Possible Related Error: "You cannot access the private section of this site"
Category: Joomla :: Article: 549

Please publish modules in offcanvas position.