2016-08-31 22:57:44 4544次浏览 1条回答 2 悬赏 10 金钱

一个团队里面有 角色有团长 管理员 普通团员

需要实现 团长可以修改所有人信息 管理员只能修改自己和普通团员信息

一个用户列表上中包括 团长 普通成员 和管理员

不同用户登陆后显示不同的按钮(如 团长登陆后 所有用户列表上都有修改按钮 管理员登陆后 只有自己和普通团员有修改按钮,团长修改按钮隐藏)

问题:如何实现
之前使用mdm Helper::checkRouter("update",['id'=>xxx]) 是可以实现,但是特别耗时(2000ms左右)

补充于 2016-08-31 23:17
'class' => 'yii\grid\ActionColumn',
    'template'=>'{view} {update} {fire} {manager}',
    'header'=>'操作',
    'visibleButtons'=>[
        'update'=>function ($model, $key, $index) {
            //...coding                     
            return $model->status === 'editable';
        }
],

或者这样?调用对应的RBAC RULE

补充于 2016-09-01 14:01

三种解决方式:
第一

 /**
     * 按钮权限
     * @auther lito
     * @since    V1.5.6
     * @version V1.5.6
     * @ctime 2016年9月1日 下午1:42:13
     * @utime 2016年9月1日 下午1:42:13
     **/
    public function getButtonShow()
    {
        if($this->role==self::COMMONROLE)  return true;
        //团长
        if($this->leader_id==Yii::$app->user->id) return true;
        
        if($this->role==self::MANGERROLE&& ($this->leader_id==Yii::$app->user->id)) return true;
        
        return false;
    }
return $model->buttonShow;                              

第二

 return Helper::checkRoute('update',['id'=>$key]);                   

第三

  if(Yii::$app->user->can('用户管理',['id'=>$key]))
                                    return true;
                                else
                                    return false;
                               return Helper::checkRoute('update',['id'=>$key]);
您需要登录后才可以回答。登录 | 立即注册
lito
助理

lito

注册时间:2015-09-21
最后登录:2018-08-02
在线时长:6小时39分
  • 粉丝3
  • 金钱50
  • 威望0
  • 积分110

热门问题