2012-02-09 2 views
0

Я очень новичок в Yii. Я развиваю пример реального мира. У меня есть таблица, поэтому модель, называемая пользователем, которая получает данные из базы данных. Три основных поля в базе данных - это имя пользователя, пароль и userRole. Пользователь и пароль работают нормально. Все, что мне нужно, чтобы посмотреть на userRole в базе данных и на основе этого назначьте роль пользователю. Например, поле userRole пользователя == 1, пользователь является администратором и может создавать, читать, обновлять и удалять (CRUD). Но если пользователь userRole == 2, пользователь может обновить и создать, но не удалить. Я попытался сделать это с помощью «выражения» ib accessRules() в UserController.php, но он не работал. Затем я прочитал об этом и нашел, что должен делать это с ролью. Вот что я написал:Как получить разрешение пользователя из базы данных в Yii

public function accessRules() 
    { 
     $auth = Yii::app()->authManager; 

     $auth->createOperation('createUser','create a user'); 
     $auth->createOperation('updateUser','update a user'); 
     $auth->createOperation('deleteUser','delete a user'); 

     $role=$auth->createRole('creator'); 
     $role->addChild('createUser'); 

     $role=$auth->createRole('updater'); 
     $role->addChild('updateUser'); 

     $role=$auth->createRole('deleter'); 
     $role->addChild('deleteUser'); 


     return array(
................................ 
     array('allow', 
      'actions'=>array('create','update'), 
      'users'=>array('@'), 
      'roles'=>????, 

..................... 

??? где я не знаю, что делать. Я определяю createOperation/addChild в нужном месте/файле? Как я могу использовать «роли» в возвращающемся массиве? И где я должен получить userRole из базы данных?

Я отчаянно искал ответ, как Yii Форум не является активным

Спасибо

ответ

0

Создание операций и ролей один раз упражнение (каждый раз, когда вы создаете или редактировать их). Вам нужно иметь отдельный метод, который вы будете называть один раз.

И если вы хотите иметь систему доступа на основе ролей, вам необходимо добавить дополнительные таблицы в свою базу данных. Схему можно найти в папке - yii/framework/web/auth/schema.sql.

Но самый простой способ реализации RBAC будет использовать расширение как прав - http://www.yiiframework.com/extension/rights/

0

вы должны назначить роль (ей) вошедшего пользователя (или известным идентификатором пользователя)

$auth->assign('creator',user()->id); 
$auth->assign('updater', 102); //102 as user id 
//... 

И в accessRules вы должны написать

'actions'=>array('create','update'), 
'roles'=>array('creator','updater'), 

Это answeryou ищете?

Смежные вопросы