Zend_ACL как получить роль? - PullRequest
       22

Zend_ACL как получить роль?

0 голосов
/ 08 декабря 2010

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

В настоящий момент я использую 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, но как мне получить роль из моей пользовательской таблицы?Столбец называется type и содержит строку, обозначающую роль ведьмы.

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

Привет,

-lony

Ответы [ 2 ]

1 голос
/ 08 декабря 2010

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

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

Сохраните строку результатов аутентификации в Zend_Auth, используя метод getResultRowObject адаптера.Смотри http://framework.zend.com/manual/en/zend.auth.adapter.dbtable.html#zend.auth.adapter.dbtable.advanced.storing_result_row

...