web-dev-qa-db-fra.com

Vous ne pouvez pas accéder à la section privée de ce site

Sur un site Joomla 3.3.3 mis à niveau à partir de la version 2.5 (la dernière version à l'époque), nous rencontrons des problèmes en ce qui concerne la connexion des utilisateurs. Certains utilisateurs ont signalé qu'après s'être enregistrés, ils ne pouvaient pas se connecter et recevaient l'avertissement suivant. message:

You cannot access the private section of this site.

La chose étrange est que cela ne se produit que pour ceux qui essaient de se connecter après la mise à niveau.

Avant la mise à niveau, nous utilisions Community Builder en tant que gestion d’utilisateur, elle s’est donc occupée de l’enregistrement, de la connexion, etc. Nous l’avons maintenant supprimée, ainsi que Akeeba Subs, donc la seule extension pouvant avoir avait tout à voir avec ce problème était Kunena 3.0.6.

Après avoir parcouru de nombreux messages de forum sur le Web, j'ai essayé les solutions suivantes:

  1. Reconstruire les catégories dans le gestionnaire de catégories via le backend Joomla
  2. Assurer que Root Asset dans le #__assets table a un parent_id sur 0 et aucune autre ligne n'a le même parent_id
  3. Utilisation du script AssetFix de @ Elin
  4. Suppression de tous les articles et catégories supprimés, enregistrement global

Pour ma vie, je ne comprends pas pourquoi cela se produit.

Quelqu'un at-il déjà eu ce problème et/ou connaissait-il une solution efficace pour Joomla 3.3?

4
Lodder

Enfin découvert quel était le problème.

Il s'est avéré que lors de la migration de Joomla 2.5 vers la version 3.3, bon nombre des personnes les plus récentes ayant été enregistrées n'ont pas été affectées au groupe d'utilisateurs "Registered"; elles n'avaient donc aucune autorisation.

J'ai fini par exécuter la requête MySQL suivante dans PhpMyAdmin:

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

qui obtient tous les identifiants des tables users qui appartiennent pas à la user_usergroup_map table.

J'ai ensuite exporté les résultats, ouvert le fichier dans un éditeur de texte et modifié:

INSERT INTO `jos_users` (`id`) VALUES

à

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

Puis pour toutes les valeurs (98), (99), (100), etc, j'ai fait une recherche en masse et remplacé, qui a remplacé ceci:

),

avec ça

, 2)

Cela garantit maintenant qu'il y a 2 arguments requis pour les 2 colonnes de cette table de base de données. 2 étant l'ID par défaut du groupe d'utilisateurs "Enregistré".

La toute dernière ligne du fichier contient un point-virgule plutôt qu'une virgule. Par conséquent, la recherche en masse et son remplacement ne prendront pas en charge cette opération. J'ai donc simplement changé cela manuellement.

Si quelqu'un d'autre a les mêmes problèmes, je serai plus qu'heureux de poster des captures d'écran qui pourraient aider un peu plus.

Modifier

La solution ci-dessus en une ligne:

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`);
5
Lodder