首页 / 知识
rbac
2023-04-11 15:21:00

//登陆控制器
functionactionLogin(){
$name=Yii::$app->request->post("name");
$pass=Yii::$app->request->post("pass");
$res=Yii::$app->db->createCommand("select*fromuserwherename='$name'andpass='$pass'")->queryOne();
if($res){
$session=Yii::$app->session;
$session->set("uid",$res['id']);
$id=$res['id'];
$sql=Yii::$app->db->createCommand("SELECT*fromuserjoinu_ton`user`.id=u_t.u_idjointeacheronu_t.t_id=teacher.idJOINt_ponteacher.id=t_p.t_idjoinpoweront_p.p_id=power.idwhere`user`.id=$id")->queryAll();
$session->set("power",json_encode($sql));
return$this->redirect(["one/show"]);
}else{
echo"<ahref='add'>登陆失败</a>";
}
}
//权限控制器
functioninit()
{
$session=Yii::$app->session;
$id=$session->get("uid");
if(empty($id)){
echo"<ahref='/mon/add'>权限不足</a>";
}
$power=$session->get("power");
$power=json_decode($power);
foreach($poweras$k=>$v){
$arr[]=$v->controller.'/'.$v->function;
}
$res=Yii::$app->requestedRoute;
if(!in_array($res,$arr)){
echo"<ahref='/mon/add'>权限不足</a>";die;
}
}
functionactionShow(){
$session=Yii::$app->session;
$data=$session->get("power");
$arr=json_decode($data,1);
$res=$this->gettree($arr,0);
return$this->render("show",["res"=>$res]);
}
functiongettree($data,$pid){
$tree=[];
foreach($dataas$k=>$v){
if($v['pid']==$pid){
$v['son']=$this->gettree($data,$v['id']);
$tree[]=$v;
}
}
return$tree;
}
//权限展示
<!doctypehtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<metaname="viewport"
content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
<metahttp-equiv="X-UA-Compatible"content="ie=edge">
<title>Document</title>
</head>
<body>
<table>
<?phpforeach($resas$key=>$value){?>
<tr>
<?phpecho$value['power']?><br>
<?phpforeach($value['son']as$k=>$v){?>
<ahref="<?phpecho$v['function']?>"><?phpecho$v['power']?><br></a>
</tr>
<?php}?>
<?php}?>
</table>
</body>
</html>
|
最新内容
相关内容
python__name__怎么用?
python__name__怎么用?,代码,名字,培训,模块,结果,变量,语句,特性,里面,以上,Python中的__name__在Python中有两种用法:1.如果模块是被导入,__npython模块的name属性
python模块的name属性,培训,模块,属性,程序,空格,底下,实例,中间,以上,更多,python模块的name属性一个模块被另一个程序第一次引入时,其主程序pythonnamedtuple怎样定义一个类
pythonnamedtuple怎样定义一个类,培训,定义,缺失,类别,字段,参数,想定,两个,当中,前面,pythonnamedtuple怎样定义一个类1、namedtuple是一个python__name__调用模块
python__name__调用模块,入口,代码,培训,模块,属性,文件,程序,来使,实例,以上,python中__name__调用模块1、说明不想让模块中的某些代码执行,关于C++:#include <filename>和#inc
关于C++:#include 和#include filename包含文件的区别,关于C++:#include 和#include filename包含文件的区别,语句,编程语言,引用,括判断登陆是否失效代码
判断登陆是否失效代码,判断,登陆,是否,失效,代码,varthat,this,newPromise,, varthat=this; newPromise((resolve,reject)=>{meta name="" content="应如何使用
meta name="" content="应如何使用,meta,name,content,应,如何,使用,一,、,语法,metaname,, 一、语法: <metaname="name"conten<FRame NAME> 为分割视窗命名
<FRame NAME> 为分割视窗命名,FRame,NAME,为,分割,视窗,命名,FRame,NORESIZE,锁住,,<FRame NORESIZE> 锁住分割视窗的大小<FRame SC关于.hasClass( className )的实例
关于.hasClass( className )的实例,关于,.hasClass,className,的,实例,.hasClass,className,, .hasClass( className ).css( propertyName, value )的描述
.css( propertyName, value )的描述,.css,propertyName,value,的,描述,.css,propertyName,value,, .css( propertyName, value )使用location.pathname属性返回URL
使用location.pathname属性返回URL的路径名,使用,location.pathname,属性,返回,URL,的,路径,名,,Window Location Pathnamelocation