zoukankan      html  css  js  c++  java
  • yii rbac管理

    以下是Controller代码

    <?php
    /**
     * Created by PhpStorm.
     * User: zhoukang
     * Date: 2017/6/11
     * Time: 19:31
     */
    
    namespace frontendcontrollers;
    
    use yiiwebController;
    use frontendmodelsRbac;
    use yii;
    use frontendmodelsLoginform;
    
    class RbacController extends Controller
    {
            public function actionIndex(){
                return $this->render('index',['message'=>'您正在使用的是权限控制']);
            }
        //创建角色
            public function actionCreaterole(){
                $model = new Rbac();
                return $this->render('role',['model'=>$model]);
            }
        //将创建的角色入库
            public function actionDoadd(){
                $role = Yii::$app->request->post('Rbac');
                $item = $role['role'];
                $auth = Yii::$app->authManager;
                $role = $auth->createRole($item);
                $role->description = '创建了 ' . $item . ' 角色';
                $auth->add($role);
                return $this->render('index',['message'=>'创建角色成功,您可以继续操作']);
            }
        //创建权限
            public function actionCreatepower(){
                $model = new Rbac();
                return $this->render('power',['model'=>$model]);
            }
        //将创建的权限入库
            public function  actionDopower(){
                $power = Yii::$app->request->post('Rbac');
                $item = $power['power'];
                $auth = Yii::$app->authManager;
                $createPost = $auth->createPermission($item);
                $createPost->description = '创建了 ' . $item . ' 许可';
                $auth->add($createPost);
                return $this->render('index',['message'=>'创建权限成功,您可以继续操作']);
            }
        //给角色分配权限
            public function actionRp(){
                $models  = new Loginform();
                $model   = new Rbac();
                //查出所有的角色
                $role = Rbac::getrole('auth_item');
                //查出所有的权限
                $power = Rbac::getpower('auth_item');
                $roles = $models->arraytostring($role,'name','name');
                $powers = $models->arraytostring($power,'name','name');
                return $this->render('rp',['model'=>$model,'role'=>$roles,'power'=>$powers]);
            }
        //将分配好的角色和权限入库
                public  function  actionDorp(){
                    $data = Yii::$app->request->post('Rbac');
                    $power = $data['power'];
                    $role  = $data['role'];
                    $item = Rbac::rolepower($role,$power);
                    foreach($item as $items){
                        $auth = Yii::$app->authManager;
                        $parent = $auth->createRole($items[0]);
                        $child = $auth->createPermission($items[1]);
                        $auth->addChild($parent, $child);
                    }
                    return $this->render('index',['message'=>'分配权限成功,您可以继续操作']);
                }
                //给用户分配角色
                public function actionUr(){
                    $models  = new Loginform();
                    $model   = new Rbac();
                    //查出所有的角色
                    $role = Rbac::getrole('auth_item');
                    //查出所有的权限
                    $user = Rbac::getuser('user');
                    $roles = $models->arraytostring($role,'name','name');
                    $users = $models->arraytostring($user,'id','username');
                    return $this->render('ur',['model'=>$model,'role'=>$roles,'user'=>$users]);
                }
                public function actionDour(){
                    $data = Yii::$app->request->post('Rbac');
                    $user = $data['user'];
                    $role  = $data['role'];
                    $item = Rbac::rolepower($role,$user);
                    foreach($item as $items){
                        $auth = Yii::$app->authManager;
                        $reader = $auth->createRole($items[0]);
                        $auth->assign($reader, $items[1]);
                    }
                    return $this->render('index',['message'=>'分配角色成功,您可以继续操作']);
                }
                public function beforeAction($action)
                {
                    $action = Yii::$app->controller->action->id;
                    if(Yii::$app->user->can($action)){
                        return true;
                    }else{
                        throw new yiiwebUnauthorizedHttpException('对不起,您现在还没获此操作的权限');
                    }
                }
    }

    以下是model 代码

    <?php
    /**
     * Created by PhpStorm.
     * User: zhoukang
     * Date: 2017/6/11
     * Time: 18:41
     */
    
    namespace frontendmodels;
    
    use yiiaseModel;
    use yii;
    use db;
    class Rbac extends Model
    {
            public $role;
            public $power;
            public $user;
            public function rules(){
                return[
    
                ];
            }
            public function attributeLabels()
            {
              return[
                  'role'=>'角色',
                  'power'=>'权限',
                  'user'=>'用户'
              ];
            }
            static public function getrole($tablename){
                $sql = "select name from $tablename where TYPE = 1";
                $data = Yii::$app->db->createCommand($sql)->queryAll();
                return $data;
            }
            static public function getpower($tablename){
                $sql = "select name from $tablename where TYPE = 2";
                $data = Yii::$app->db->createCommand($sql)->queryAll();
                return $data;
            }
            static public function rolepower($role,$power){
                $arr = array();
                foreach($role as $value) {
                    foreach ($power as $v) {
                        $arr[] = array($value, $v);
                    }
                }
                return $arr;
            }
            static public function getuser($tablename){
                $sql = "select id,username from $tablename ";
                $data = Yii::$app->db->createCommand($sql)->queryAll();
                return $data;
            }
    
    }

    view 层代码就没必要写了吧

  • 相关阅读:
    UML统一建模语言笔记
    从零开始学JavaWeb
    也谈微信小程序
    Memcached,你懂的
    一个简单的配置管理器(SettingManager)
    我的AngularJS 学习之旅
    .NET Core 跨平台
    ASP.NET Core 中间件自定义全局异常处理
    面试必考题——递归解题套路
    程序员着装指南
  • 原文地址:https://www.cnblogs.com/aini521521/p/7009873.html
Copyright © 2011-2022 走看看