2013-07-04 2 views
3

Я создал webapp с фреймворком YII. Я использовал модуль прав. И я создал 3 роли. ОниКак проверить роль в yii

  1. Создатель
  2. Рецензент
  3. директор

"Творец" есть какое-то действие и "Рецензент" есть какое-то действие. А «Режиссер» - это ребенок «Творца» и «Рецензента».

Вопрос в том, что если я проверяю роль (например, Творца), это позволит ей роль ребенка (например, «Директор»).

Например, если я проверяю роль «Создатель», как указано ниже, утверждение должно также работать для роли «Директор».

if(Yii::app()->user->checkAccess('Creator')) 
{ 
    statement....; 
} 

Как мне это сделать?

ответ

7

Например:

$role = Rights::getAssignedRoles(Yii::app() -> user -> Id); 
      foreach ($role as $role) 
       $role -> name; 
      if ($role -> name == 'Creator'|| $role -> name == 'Director') 
       //do what you need 

CheckAccess() проверяет доступ к пункту не роли. Например:

if(Yii::app()->user->checkAccess('Creator')) 

Проверяет наличие доступа к AuthItem 'Creator' для текущей роли. Возвращает true/false.

Другой пример использования - главное меню для различных ролей:

$role = Rights::getAssignedRoles(Yii::app() -> user -> Id); 
      foreach ($role as $role) 
       $role->name; 
      if ($role->name == 'Manager' or Yii::app()->user->isSuperuser) { 
       $this->widget('ext.cssmenu.CssMenu', array('items' => array(array('url' => array('/user/general/index'), 'label' => "General", 'visible' => Yii::app()->user->checkAccess('general')), array('url' => array('/data'), 'label' => "Data", 'visible' => Yii::app()->user->checkAccess('data')), array('url' => Yii::app()->getModule('user')->clientsUrl, 'label' => "Clients", 'visible' => Yii::app()->user->checkAccess('clients')), array('url' => Yii::app()->getModule('user')->providersUrl, 'label' => "Data Providers", 'visible' => Yii::app()->user->checkAccess('providers')), array('url' => Yii::app()->getModule('user')->ordersUrl, 'label' => "Orders", 'visible' => Yii::app()->user->checkAccess('orders')), array('url' => Yii::app()->getModule('user')->profileUrl, 'label' => "Tools", 'visible' => Yii::app()->user->checkAccess('tools')), array('url' => Yii::app()->getModule('user')->logoutUrl, 'label' => Yii::app()->getModule('user')->t("Logout"), 'visible' => !Yii::app()->user->isGuest)),)); 
      } elseif ($role->name == 'Client') { 
       $this->widget('ext.cssmenu.CssMenu', array('items' => array(array('url' => array('/user/general/index'), 'label' => "General", 'visible' => Yii::app()->user->checkAccess('general')), array('url' => array('/user/data'), 'label' => "Data", 'visible' => Yii::app()->user->checkAccess('data')), array('url' => array('/user/client/lists'), 'label' => 'Lists', 'visible' => Yii::app()->user->checkAccess('User.Client.Lists')), array('url' => array('/user/orders/index', "id" => Yii::app()->user->Id), 'label' => 'Orders', 'visible' => Yii::app()->user->checkaccess('User.Orders.Index')), array('url' => Yii::app()->getModule('user')->profileUrl, 'label' => "Profile", 'visible' => Yii::app()->user->checkAccess('tools')), array('url' => Yii::app()->getModule('user')->logoutUrl, 'label' => Yii::app()->getModule('user')->t("Logout"), 'visible' => !Yii::app()->user->isGuest)))); 
      } 
      ; 
      if ($role->name == 'Provider') { 
       $this->widget('ext.cssmenu.CssMenu', array('items' => array(array('url' => array('/user/general/index'), 'label' => "General", 'visible' => Yii::app()->user->checkAccess('general')), array('url' => array('/user/data'), 'label' => "Data", 'visible' => Yii::app()->user->checkAccess('data')), array('url' => array('/user/provider/data', "id" => Yii::app()->user->Id), 'label' => 'Data', 'visible' => Yii::app()->user->checkAccess('User.Feeds.Feeds')), array('url' => array('/user/feeds/feeds', "id" => Yii::app()->user->Id), 'label' => 'Feeds', 'visible' => Yii::app()->user->checkAccess('User.Feeds.Feeds')), array('url' => array('/user/payments', "id" => Yii::app()->user->Id), 'label' => 'Payments', 'visible' => Yii::app()->user->checkAccess('User.Feeds.Feeds')), array('url' => Yii::app()->getModule('user')->logoutUrl, 'label' => Yii::app()->getModule('user')->t("Logout"), 'visible' => !Yii::app()->user->isGuest)))); 
      } 
2

Директор имеет право создателя и рецензент

if(Yii::app()->user->checkAccess('Creator')) 
{ 
    // creator and director are here 
} 

if(Yii::app()->user->checkAccess('Reviewer')) 
{ 
    // reviewer and director are here 
} 

if(Yii::app()->user->checkAccess('Director')) 
{ 
    // director is here 
} 
Смежные вопросы