2010-07-27 5 views
9

Je crée un module Magento. Dans le contrôleur, je veux vérifier si un administrateur est connecté ou non. Ainsi, le contrôleur sera seulement accessible s'il y a un administrateur connecté. J'essaie d'utiliser ce code sur mon contrôleur.Magento: Comment vérifier si l'administrateur est connecté dans un contrôleur de module?

Mage::getSingleton('core/session', array('name' => 'adminhtml')); 
$session = Mage::getSingleton('admin/session'); 

// Use the 'admin/session' object to check loggedIn status 
if ($session->isLoggedIn()) { 
    echo "logged in"; 
} else { 
    echo "not logged in"; 
} 

mais je reçois toujours "non connecté", même si je suis déjà connecté à l'administrateur magento.

Quelqu'un peut-il m'aider à résoudre ce problème? Toute aide sera très appréciée. Merci

+0

J'ai la même problème dans un plugin d'intégration tiny_mce – lrkwz

+0

fonctionne parfaitement :) – jruzafa

+0

cela fonctionne parfaitement pour moi http://magentocodes.blogspot.in/2015/10/how-to-check-admin-is-logged-in-or-not. html avec cela, nous pouvons vérifier partout dans Magento. merci –

Répondre

18

C'est vraiment étrange. J'utilise presque exactement le même code et cela fonctionne tout le temps:

//get the admin session 
Mage::getSingleton('core/session', array('name'=>'adminhtml')); 

//verify if the user is logged in to the backend 
if(Mage::getSingleton('admin/session')->isLoggedIn()){ 
    //do stuff 
} 
else 
{ 
    echo "go away bad boy"; 
} 

Avez-vous essayé var_dumping la variable de session $? Peut-être vous aidera-t-il à être sur la bonne voie ...

+0

oui, j'ai essayé var_dump la variable de session $, il y a quelque chose dans cela mais il semble qu'il n'y ait aucune information sur le statut de connexion. Ce qui est étrange, j'ai essayé ceci sur un autre module, et c'est le travail. Y at-il quelque chose à voir avec le fichier de configuration du module? – Calua

+1

Fait intéressant, j'ai le même problème que Calua - mais seulement parfois. J'ai deux instances de configuration de Magento sur mon serveur, l'une est la version de production (sur mydomain.com) et l'autre est une instance de mise en scène (sur scene.mydomain.com). Les extraits de code ci-dessus fonctionnent sur scène mais pas sur la production. Pas certain de pourquoi. Il y a peut-être quelque chose d'obscur quelque part, mais la seule chose que JE SAIS est différent, c'est que ma production a le ssl et pas ma scène. Bizarre. Je me demande si quelqu'un a reproduit le problème comme ça? – shaune

+0

Cela a fonctionné pour moi ... – ravisoni

2

Assurez-vous que le contrôleur adminhtml de votre module étend Mage_Adminhtml_Controller_Action. Vous ne pouvez pas vérifier si un administrateur est connecté à partir d'un contrôleur frontal.

0

$user = Mage::getSingleton('admin/session');

if($user->getUser()->getUserId()) { 
    // admin logged 
} 
else { 
    // not admin logged 
} 
0

Comme David Tay dit, vous devez étendre votre contrôleur de Mage_Adminhtml_Controller_Action.
Quoi qu'il en soit, le chemin le plus court pour vérifier si l'administrateur est connecté est d'appeler cette méthode d'assistance:

Mage::helper('adminhtml')->getCurrentUserId(); 
Questions connexes