2010-12-08 3 views
0

après avoir lu la documentation Zend et quelques messages ici je ne pouvais pas comprendre comment obtenir mon rôle d'utilisateur sur une table d'utilisateur.Zend_ACL comment obtenir un rôle?

Au moment où je l'utilise Zend_Auth comme ça dans un AuthController:

// Set authentication adapter and map ID and Cre. 
// only admins could log in here 
$adapter = new Zend_Auth_Adapter_DbTable($this->db, 
      'customers', 
      'login', 
      'password', 
      'MD5(?)'); 
$adapter->setIdentity($form->getValue('username')) 
    ->setCredential($form->getValue('password')); 

// Check if authentification is right 
$result = Zend_Auth::getInstance()->authenticate($adapter); 

if (!$result->isValid()) { 
    .. 
} 

Et vérifier plus tard par un Zend_Controller_Plugin et itinéraire en fonction du résultat:

if (Zend_Auth::getInstance()->hasIdentity()) { 
     return; 
} elseif ($request->getControllerName() == 'auth' || $request->getControllerName() == 'index') { 
     return; 
} else { 
     $request->setControllerName('index'); 
     $request->setActionName('index'); 
     return; 
} 

Maintenant, je veux changer la itinéraire en fonction du rouleau de l'utilisateur. Si l'utilisateur est un administrateur, il peut accéder à AdminController, mais comment puis-je retirer le rôle de ma table utilisateur? La colonne s'appelle type et contient une chaîne qui indique le rôle.

J'espère que vous pouvez m'aider.

Salutations,

-lony

Répondre

1

Merci Phil, ça marche!

Seulement pour compléter ma solution. J'ajouté à la AuthController:

// fetches role and login name out of 
// user table and store it in auth session 
$data = $adapter->getResultRowObject(array(
        'role', 
        'username' 
       )); 
Zend_Auth::getInstance()->getStorage()->write($data); 

Et maintenant, je peux accéder à mon rôle (ou nom d'utilisateur) partout en tapant:

$role = Zend_Auth::getInstance()->getIdentity()->role; 
Questions connexes