4

On a Joomla 3.3.3 site which was upgraded from 2.5 (latest version at the time), we are having some issues with regard to user logging in. Some users have reported that after registering, they are unable to login and receive the following warning message:

You cannot access the private section of this site.

The odd thing is that this only occurs for those who are trying to login after the upgrade.

Before the upgrade, we were using Community Builder as the User Management, thus it took care of registration, login, etc etc. We've now removed it, along with Akeeba Subs, so the only extension that may have had anything to do with this problem was Kunena 3.0.6.

Having looked through lots of forum posts on the web, I've tried the following:

  1. Rebuild the categories in the Category Manager via the Joomla backend
  2. Ensuring that Root Asset in the #__assets table has a parent_id of 0 and no other rows has the same parent_id
  3. Using @Elin's AssetFix script
  4. Removing all trashed articles and categories, the doing global check-in

For the life of me I can't understand why this is happening.

Has anyone had this issue before and/or know of a working solution for Joomla 3.3?

5

Finally found out what the issue was.

It turned out that upon migrating Joomla 2.5 to 3.3, a lot of the most recent registrants has not been assigned to the "Registered" user group, therefore they had no permissions at all.

I ended up running the following MySQL query in PhpMyAdmin:

SELECT `id` FROM `jos_users` WHERE `id` NOT IN (SELECT `user_id` FROM `jos_user_usergroup_map`)

which gets all the user ID's from the users tables that that not belong to the user_usergroup_map table.

I then exported the results, opened the file in a text editor and changed:

INSERT INTO `jos_users` (`id`) VALUES

to

INSERT INTO `jos_user_usergroup_map` (`user_id`, `group_id`) VALUES

Then for all the values (98), (99), (100), etc, I did a mass find and replace, which replaced this:

),

with this

, 2)

This now ensures that there are 2 arguments which are required for the 2 columns in this database table. 2 being the default ID of the "Registered" user group.

The very last line of the file has a semicolon rather than a comma, therefore the mass find and replace will not cater for this. So I simply changed this manually.

If anyone else has the same issues, I will be more than happy to post some screenshots which might help a little more.

Edit

The above workaround in one line:

INSERT INTO `jos_user_usergroup_map` (`user_id`, `group_id`) SELECT `id`, '2' FROM `jos_users` WHERE `id` NOT IN (SELECT `user_id` FROM `jos_user_usergroup_map`);
  • @Fari - Feel free to add your code as a separate answer as it will save people going through the long process as I have described above. I will update/accept you if you're sure that it will work :) – Lodder Aug 24 '14 at 8:40
  • The reason for editing your answer is that it's you effort and you find the solution. Feel free to merge the answers or remove my part from your answer. I will check this page and will add my answer as a separate one if it's necessary. – Farahmand Aug 24 '14 at 9:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.