web-dev-qa-db-fra.com

Vérifier sur le frontend si l'utilisateur est connecté au backend

Je veux que les gestionnaires de contenu voient un bouton d’édition sur la face avant de mes sites Web.

Quand j'utilise ceci sur le frontend:

JFactory::getUser();

Je reçois un utilisateur invité, même si je suis connecté au serveur.

Existe-t-il un moyen de vérifier si un utilisateur est connecté au serveur lors de la visite du client?

1
Klaasvaak

@klaasvaak, je ne sais pas si vous en avez plus besoin, mais juste au cas où quelqu'un en aurait besoin:

Joomla est conçu pour identifier les sessions utilisateur par application, à savoir site et administrator avec un session_name qui prend par défaut le nom de l'instance JApplicationCms s'il n'est pas défini autrement.

Heureusement, cela vous a permis d'attribuer un nom fixe à toutes les sessions utilisateur de Joomla configuration.php fichier. Une fois cette opération effectuée, toutes les sessions ont la même identité et le contenu de la session sera donc automatiquement partagé.

Ajoutez simplement la ligne suivante dans le configuration.php fichier dans la racine de votre site et vous êtes prêt à partir:

public $session_name = 'izharaazmi.com';

ATTENTION: Tous les utilisateurs seront obligés de se connecter partout (je veux dire, y compris backend) à moins que vous n'autorisiez la connexion backend pour ces groupes d'utilisateurs dans Global Configurations > Permissions. Cependant, il s’agit du paramètre par défaut dans Joomla. Par conséquent, vous n’avez peut-être pas besoin de vous embêter. Mais assurez-vous toujours de cela.

Dernier conseil: Ne soyez pas paresseux, du moins quand c'est une question de sécurité :-)

1
Izhar Aazmi

Joomla front-end (index.php) et back-end (administrator\index.php) est construit sous la forme de deux applications distinctes. Par conséquent, pour des raisons de sécurité, vous avez des sessions utilisateur et des états utilisateur distincts. Comme vous l'avez remarqué, la connexion à votre back-end ne vous connecte pas au front-end.

Il existe une extension disponible chez JED appelée Wow Login qui semble pouvoir faire ce que vous demandez. Je ne l'ai pas essayé, mais d'après les commentaires des utilisateurs, cela fonctionne comme prévu.

Je comprends que vous souhaitiez éviter à vos gestionnaires de contenu de se connecter deux fois, mais à moins que ce soit vraiment important, je le laisserais tel quel. Vous pouvez créer un petit lien de connexion dans votre pied de page si vous ne voulez pas avoir de formulaire de connexion au front-end.

Astuce de connexion: j'ai ajouté un bookmarklet dans la barre de navigation (Chrome) avec le code suivant:

javascript:void((function(){var loc = location.href; loc.indexOf("?") == -1 ? (location.href = loc+"?option=com_users&view=login") : (location.href = loc+"&option=com_users&view=login");})());

Il vous montrera un formulaire de connexion pour TOUT site web Joomla en ajoutant ?option=com_users&view=login ou &option=com_users&view=login à votre URL actuelle. C'est un moyen rapide de vous connecter à n'importe quel site Joomla que vous gérez.

1
johanpw