2010-12-08 3 views
0

после прочтения документации Zend и некоторых сообщений здесь я не мог понять, как получить мою роль пользователя из таблицы пользователя.Zend_ACL как получить роль?

На данный момент я использую Zend_Auth, как это в 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()) { 
    .. 
} 

А потом проверить его через Zend_Controller_Plugin и маршрут в зависимости от результата:

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

Теперь я хочу, чтобы изменить маршрут в зависимости от рулона пользователя. Если пользователь является администратором, он может связаться с AdminController, но как мне получить роль из моей таблицы пользователей? Столбец называется типом и содержит строку, обозначающую роль.

Надеюсь, вы можете мне помочь.

Привет,

-lony

ответ

1

Спасибо, Фил, это работает!

Только для моего решения. Я добавил это к 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); 

И теперь я могу получить доступ к своей роли (или имя пользователя) везде, набрав:

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