以下是Controller代码

<?php
/**
* Created by PhpStorm.
* User: zhoukang
* Date: 2017/6/11
* Time: 19:31
*/ namespace frontend\controllers; use yii\web\Controller;
use frontend\models\Rbac;
use yii;
use frontend\models\Loginform; 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[]);
$child = $auth->createPermission($items[]);
$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[]);
$auth->assign($reader, $items[]);
}
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 \yii\web\UnauthorizedHttpException('对不起,您现在还没获此操作的权限');
}
}
}

以下是model 代码

<?php
/**
* Created by PhpStorm.
* User: zhoukang
* Date: 2017/6/11
* Time: 18:41
*/ namespace frontend\models; use yii\base\Model;
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 层代码就没必要写了吧

最新文章

  1. Hadoop的数据管理
  2. vue实例属性(vm.$els)
  3. Linux第三周——跟踪分析内核的启动过程
  4. boot from volume
  5. Android开发(二十四)——数据存储SharePreference、SQLite、File、ContentProvider
  6. 【转载】PHP运行模式的深入理解
  7. 对setTimeout()第一个参数是字串的深入理解以及eval函数的理解
  8. C# #define
  9. java 并发多线程异步
  10. 参加完Rocket MQ Meetup深圳站,回顾和想法
  11. (一)最小的Django
  12. UWP Windows历史上最漂亮的UWP框架出炉!!!
  13. SpringBoot(一)走进Springboot的世界
  14. 【BZOJ1059】【ZJOI2007】矩阵游戏
  15. 铁大Facebook隐私保护NABCD
  16. Kali学习笔记24:Nikto、Skipfish
  17. Django之组件--中间件
  18. python全栈开发 * 11知识点汇总 * 1806011
  19. 洛谷P3455 ZAP-Queries [POI2007] 莫比乌斯反演+数论分块
  20. Android中如何使用xmlns

热门文章

  1. SpringMVC实战(三种映射处理器)
  2. Mule ESB-3.Build a webservice proxy
  3. 我的IIS7.5竟然不支持ASP.NET路由
  4. Windows下搭建ffmpeg+VS2008开发环境详细教程【转】
  5. 几款jQuery右键菜单插件介绍
  6. js 对象方法、类方法、原型方法区别
  7. url 域名 主机名
  8. 企业级时间轴插件Vue-timelinepick
  9. 常用JQUERY插件大全
  10. Redux入门