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 层代码就没必要写了吧

  • 相关阅读:
    左偏树
    论在Windows下远程连接Ubuntu
    ZOJ 3711 Give Me Your Hand
    SGU 495. Kids and Prizes
    POJ 2151 Check the difficulty of problems
    CodeForces 148D. Bag of mice
    HDU 3631 Shortest Path
    HDU 1869 六度分离
    HDU 2544 最短路
    HDU 3584 Cube
  • 原文地址:https://www.cnblogs.com/aini521521/p/7009873.html
Copyright © 2011-2022 走看看