首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查在易中的角色

如何检查在易中的角色
EN

Stack Overflow用户
提问于 2013-07-04 06:05:52
回答 2查看 8.7K关注 0票数 3

我用YII框架创建了一个webapp。我用了版权模块。我创造了三个角色。他们是

  1. 创建者
  2. 审查员
  3. 导演

“创造者”有一些动作,“审查员”有一些动作。“导演”是“创造者”和“评论家”的孩子。

问题是,如果我检查一个角色(例如,Creator),它将允许它的子角色(例如"Director")。

例如,如果我按下面的方式检查"Creator“角色,则该语句也必须适用于"Director”角色。

代码语言:javascript
复制
if(Yii::app()->user->checkAccess('Creator'))
{
  statement....;
}

我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-04 08:42:28

例如:

代码语言:javascript
复制
$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()检查对项的访问,而不是角色。例如:

代码语言:javascript
复制
if(Yii::app()->user->checkAccess('Creator'))

检查AuthItem 'Creator‘的当前角色访问。返回真/假。

另一个使用示例-不同角色的主菜单:

代码语言:javascript
复制
$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))));
            }
票数 7
EN

Stack Overflow用户

发布于 2013-07-04 08:38:53

导演有创作者和评论者的权利。

代码语言:javascript
复制
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
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17462951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档