It's annoying... your own Joomla site don't let you log in in the backend, and you see the above error message... What's happened?

Humm, there are couple of things you can do. Contrary of the lots of "smart" blog entries on the subject out there (last search revealed about 2 million hits) in most of the cases, regardless to Joomla version the cause is simple:

1. Your sessions table is damaged

Go to your hosting panel, enter phpMyadmin, find the #__session table (of course, replace the #_ with your table prefix) and launch that Truncate command

TRUNCATE  TABLE `#__session` 

Don't worry, the worst side-effect you might have that your currently logged in users are kicked out.

2. Check if the user is really an administrator

Yes, can happen, that something has been changed - you or your coworkers have changed something - knowingly or not, or the users mapping to access levels was changed for some causes.

The solution varies depending on Joomla versions. Here is the one for Joomla 1.7, 2.5 and 3.* families. in these versions, the SuperAdmin user group has the ID of 8 (older Joomla's defaulted to 25) First of all, go to #__users table, and grab the "id" for the user which have troubles logging in to the backend. Then go to the #__users_usergroup table, look for the "user_id" you found above, and look for the value in the "group_id" column. This should be 8 if you did not changed the ACL schema. You can double-check that bu looking to the "#__usergroups" table - You need to see what is the ID for the Super Administrators group.

For the older Joomla's there are slight differences, there are a bit more database tables involved, but the logic is the same.

3. Check if the ACL tables are not corrupt

This is where it gets tricky since Joomla’s ACL tables are not that easy to understand. However, if the login problem is because of ACL corruption, then in 99% of the cases the error lies somewhere in the jos_viewlevels and/or the jos_usergroups tables. We suggest that you look at a clean Joomla database and compare the two tables of that database with those in your website’s database. If the ACL tables are corrupt, then you can manually fix them but we don't recommend doing that - this is qualifying as a deep core hack, and should be done only by an expert.

4. Check the jos_assets table

If all previous tricks are failing there is the last - and less probable, but almost certain - possible cause of error, your '#__assets' table somehow was corrupted. This table is, by far, the most complex table in Joomla, and be aware that the simplest error there can render your Joomla completely unusable, so, before you try to do anything, save whatever you can, seat your belts, put your helmet on, then proceed on your own risk (or hire an expert). The two most common causes in this table that might lead to this problem are:

  1. Missing entry for the 'com_admin' row.
  2. Wrong rules field for the 'com_admin' row. The rules field for that row should just contain '{}'. (two curly brackets)

The row should have in the 'id column the value '2', and on last column '{}' - a fairly simple content. If you see anything wrong, delete the row from the database and reinsert it using this SQL command (again, replace the '#_' part with your table prefix:

INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `title`, `rules`) VALUES (2, 1, 1, 2, 1, 'com_admin', 'com_admin', '{}'); 

Category: Joomla Troubleshooter