20181104 tp中的权限(RBAC)

目录文件(仅仅写的权限的代码)

                   

Role/showlist.html 代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

        <title>角色列表</title>

        <link href="__CSS__/mine.css" type="text/css" rel="stylesheet" />
    </head>
    <body>
        <style>
            .tr_color{background-color: #9F88FF}
        </style>
        <div class="div_head">
            <span>
                <span style="float: left;">当前位置是:权限管理-》角色列表</span>
                <span style="float: right; margin-right: 8px; font-weight: bold;">
                    <a style="text-decoration: none;" href="__URL__/add">【添加角色】</a>
                </span>
            </span>
        </div>
        <div style="font-size: 13px; margin: 10px 5px;">
            <table class="table_a" border="1" width="100%">
                <tbody><tr style="font-weight: bold;">
                        <td >角色id</td>
                        <td >角色名称</td>
                        <td >权限ids</td>
                        <td >role_auth_ac</td>
                        <td  align="center">操作</td>
                    </tr>
             <volist name="list" id="vo">

                    <tr id="product{$i}">
                        <td>{$vo.role_id}</td>
                        <td><a href="#">{$vo.role_name}</a></td>
                        <td>{$vo.role_auth_ids}</td>
                        <td>{$vo.role_auth_ac}</td>
                        <td>
                        <a href="__URL__/showauth/rid/{$vo.role_id}">分配权限</a>
                        <a href="#">修改</a>
                        <a href="#">删除</a>
                        </td>
                    </tr>
             </volist>
                    <tr>
                        <td colspan="20" style="text-align: center;">
                            {$page}
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </body>
</html>

  

Role/showautht.html 代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>给角色分配权限</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <link href="__CSS__/mine.css" type="text/css" rel="stylesheet" />
    </head>

    <body>
        <div class="div_head">
            <span>
                <span style="float:left">当前位置是:角色管理-》分配权限信息【{$role_info[‘role_name‘]}】</span>
                <span style="float:right;margin-right: 8px;font-weight: bold">
                    <a style="text-decoration: none" href="__CONTROLLER__/showlist">【返回】</a>
                </span>
            </span>
        </div>
        <div></div>

        <div style="font-size: 13px;margin: 10px 5px">
            <form action=‘__SELF__‘ method=‘post‘>
                <table cellspacing=‘1‘ id="list-table">
                    <volist name=‘auth_infoA‘ id=‘v‘>
                    <tr>
                        <td width="25%" valign="top" class="first-cell" style=‘border-bottom:2px solid gray; font-weight:bold;‘>
                            <input type="checkbox" name="auth_id[]" value="{$v[‘auth_id‘]}" class="checkbox"
                                   <if condition="in_array($v[‘auth_id‘],$authidsarr)">checked=‘checked‘</if>
                                   />{$v[‘auth_name‘]}
                                   </td>
                        <td width=‘75%‘ style=‘border-bottom:2px solid gray;‘>
                            <volist name=‘auth_infoB‘ id="vv">
                            <if condition="$vv[‘auth_pid‘]  eq $v[‘auth_id‘]">
                            <div style="width:200px;float:left;">
                                <input type="checkbox" name="auth_id[]" value="{$vv[‘auth_id‘]}"
                                     <if condition="in_array($vv[‘auth_id‘],$authidsarr)">checked=‘checked‘</if>
                                       />{$vv[‘auth_name‘]}
                            </div>
                            </if>
                            </volist>
                        </td>
                    </tr>
                    </volist>
                </table>
                <input type=‘submit‘ value=‘分配权限‘ />
            </form>
        </div>
    </body>
</html>

  

Auth/showlist.html  代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

        <title>权限列表</title>

        <link href="__CSS__/mine.css" type="text/css" rel="stylesheet" />
    </head>
    <body>
        <style>
            .tr_color{background-color: #9F88FF}
        </style>
        <div class="div_head">
            <span>
                <span style="float: left;">当前位置是:权限管理-》权限列表</span>
                <span style="float: right; margin-right: 8px; font-weight: bold;">
                    <a style="text-decoration: none;" href="__URL__/addauth">【添加权限】</a>
                </span>
            </span>
        </div>
        <div style="font-size: 13px; margin: 10px 5px;">
            <table class="table_a" border="1" width="100%">
                <tbody><tr style="font-weight: bold;">
                        <td >序号</td>
                        <td >权限名称</td>
                        <td >父权限id</td>
                        <td >控制器</td>
                        <td >方法</td>
                        <td >全路径</td>
                        <td >级别</td>
                        <td  align="center">操作</td>
                    </tr>
             <volist name="list" id="vo">

                    <tr id="product{$i}">
                        <td>{$vo.auth_id}</td>
                        <td>{$ge|str_repeat=$vo[‘auth_level‘]}{$vo.auth_name}</td>
                        <td>{$vo.auth_pid}</td>
                        <td>{$vo.auth_c}</td>
                        <td>{$vo.auth_a}</td>
                        <td>{$vo.auth_path}</td>
                        <td>{$vo.auth_level}</td>
                        <td>
                        <a href="#">修改</a>
                        <a href="__URL__/del/id/{$vo.auth_id}">删除</a>
                        </td>
                    </tr>
             </volist>
                    <tr>
                        <td colspan="20" style="text-align: center;">
                            {$page}
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </body>
</html>

  

Auth/addauth.html  代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>添加权限</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <link href="./css/mine.css" type="text/css" rel="stylesheet">
    </head>

    <body>

        <div class="div_head">
            <span>
                <span style="float:left">当前位置是:权限管理-》添加权限信息</span>
                <span style="float:right;margin-right: 8px;font-weight: bold">
                    <a style="text-decoration: none" href="__URL__/showlist">【返回】</a>
                </span>
            </span>
        </div>
        <div></div>

        <div style="font-size: 13px;margin: 10px 5px">
            <form action="__SELF__" method="post" enctype="multipart/form-data">
            <table border="1" width="100%" class="table_a">
                <tr>
                    <td>权限名称</td>
                    <td><input type="text" name="auth_name" /></td>
                </tr>
                <tr>
                    <td>权限父id</td>
                    <td>
                        <select name="auth_pid">
                            <option value="0">请选择</option>
                             <foreach name="list" item="vo">
                            <option value="{$vo.auth_id}">{$vo.auth_name}</option>
                           </foreach>
                        </select>
                    </td>
                </tr>
                  <tr>
                    <td>控制器</td>
                    <td><input type="text" name="auth_c" /></td>
                </tr>
                  <tr>
                    <td>方法</td>
                    <td><input type="text" name="auth_a" /></td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                        <input type="submit" value="添加">
                    </td>
                </tr>
            </table>
            </form>
        </div>
    </body>
</html>

  

Model/AuthModel.class.php  代码

<?php
namespace Admin\Model;
use Think\Model;
//Admin模块的manager控制器
class  AuthModel  extends  Model{
	function  saveDate($info){
		//根据已有的四个字段生成一条记录
		$newid=$this->add($info);
		//根据新增主键进一步制作auth_path和auth——level
		if($info["auth_pid"]==0){
			//dingji
			$path=$newid;
		}else{
			//非顶级
			$pinfo=$this->find($info["auth_pid"]);
			$p_path=$pinfo["auth_path"];
			$path=$p_path."-".$newid;
		}
		//全路径数组之后的个数减一的结果
		$level=count(explode("-",$path))-1;
		$sql="update tp_auth  set auth_path=‘$path‘,auth_level=‘$level‘where auth_id=‘$newid‘";
		return $this->execute($sql);

	}
}

  

Controller/RoleController.class.PHP   代码

<?php
namespace Admin\Controller;//声明
use Think\Controller;//用Controller在什么位置
//Admin模块的login控制器
class  RoleController  extends  Controller{
	function showlist(){
		$list=M("role")->select();
		$this->assign("list",$list);

		$this->display();
	}
	function showauth($rid){
		if(IS_POST){
		   $auth_ids=$_POST["auth_id"];//接收表单
			$role_auth_ids=implode(",",$auth_ids);//数组转字符串
			$authnames=M("auth")->field("auth_c,auth_a")->where("auth_id in($role_auth_ids)")->select();//根据权限id查控制器方法

			//组织成字符串313883132

			$str="";
			foreach($authnames as $v){
				if(!empty($v["auth_c"]))
				$str.=$v["auth_c"]."-".$v["auth_a"].",";
			}
			$str=rtrim($str,",");//去除逗号

			//执行SQL语句
		  $aql="update tp_role set role_auth_ids=‘$role_auth_ids‘,role_auth_ac=‘$str‘ where role_id=$rid";
			M("role")->execute($aql);
			$this->redirect("showlist",array("rid"=>$rid),1,"分配完成");	

		}
		//增加权限
		$auth_infoA=M("auth")->where("auth_level=0 ")->select();
		$auth_infoB=M("auth")->where("auth_level=1 ")->select();

		$role=M("role")->find($rid);
		$authidsarr=explode(",",$role["role_auth_ids"]);
	     //注册到模板
		$this->assign("auth_infoA",$auth_infoA);
		$this->assign("auth_infoB",$auth_infoB);
		$this->assign("authidsarr",$authidsarr);

		$this->display();

  }
}

  

Controller/AuthController.class.PHP   代码

<?php
namespace Admin\Controller;//声明
use Think\Controller;//用Controller在什么位置
//Admin模块的login控制器
class  AuthController  extends  Controller{
	function showlist(){
		$data=M("auth")->order(‘auth_path‘)->select();
		$this->assign("list",$data);
		$this->assign(‘ge‘,"--/");
		$this->display();
	}
	function addauth(){
		$auth=new \Admin\Model\AuthModel();
		if(!empty($_POST)){
			$info=$auth->create();
			if($auth->saveDate($info)){

				 $this->redirect("showlist",array(),1,"添加成功");
			}else{
				echo  "老哥,干啥呢!";
			}
		  }

		$pid=M("auth")->field("auth_id,auth_name")->where("auth_level=0")->select();
		$this->assign("list",$pid);

		$this->display();
	}
	//删除的方法
	function del( $id){//参数的键名叫id
		$goods=M(‘auth‘);
		if($goods->delete($id)){
			$this->success("删除成功",U("showlist"),1);
		}else{
			$this->error("删除失败",U("showlist"),1);
		}
	}

}

  

原文地址:https://www.cnblogs.com/sp1234/p/9903128.html

时间: 2024-08-01 06:27:04

20181104 tp中的权限(RBAC)的相关文章

统一身份管理中的权限管理设计

关注嘉为科技,获取运维新知 权限集中管理是统一身份管理关注的主要内容之一,由于企业应用建设的自身历程不同,权限设计与实现也必然存在差异,针对集中权限管理的设计和实现带来了不小的挑战,本文根据多年的实践经验,就统一身份管理的集中权限管理的设计与实现给予设计建议. 一 问题背景 随着信息技术和网络技术的迅猛发展,企业内部的应用系统越来越多,为此,为减少用户访问的麻烦,提升访问的便利性和体验,众多企业采用了统一身份管理的方案来解决该问题. 就企业的统一身份管理,业界提出了相应的标准,即4A标准,分别是

mediawiki中关于权限的问题

其实有个地方是我从来没有适应过得,那就是这样:以前在A,我是全权负责, 但是现在呢,我只是工作中的一环而已. 我只是mediawiki的管理员而已,我的工作成功与否是建立在别人的工作是否成功上的. 需求:customer想让一个组的人访问某个wiki的子页面. global的wiki是分为多个模块的,因此说:global的wiki是面向SONY整个公司的,面对不同的team的. 其中包括开发,Linux,Oracle,AD,dns分为多个模块. 所以说,不同的人有不同的访问页面. group在我

android权限--android开发中的权限及含义(上)

android权限--android开发中的权限及含义(上) android.permission.EXPAND_STATUS_BAR 允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序 android.permission.FACTORY_TEST 作为一个工厂测试程序,运行在root用户 android.permission.FLASHLIGHT 访问闪光灯,android开发网提示HTC Dream不包含闪光灯 android.pe

Android中那些权限

Permission Permission Permission Group Permission Tree Users Permission ACCESS_CHECKIN_PROPERTIES 允许读写访问"properties"表在checkin数据库中,改值可以修改上传( Allows read/write access to the "properties" table in the checkin database, to change values th

数据库中的grant权限赋予和系统中的权限管理是两码事。

数据库中的grant权限赋予和系统中的权限管理是两码事.grant一般是赋给个人的,对全部或单个数据库的增删改查等权限,不多说.权限管理系统 在数据库中建表,存角色,权限,不同的菜单,在java层面上写代码控制的.用filter或if等都能控制.参考资料:grant:http://www.cnblogs.com/Richardzhu/p/3318595.htmlhttp://blog.csdn.net/leshami/article/details/5688875http://7567567.b

&lt;实训|第九天&gt;掌握linux中普通的权限控制和三种特殊的权限(sst),做合格的运维工程师

linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经把自己的隐私保护的很好,漏洞总是有的,侧面的攻击往往是难以防守的.所以大家跟我一起学习一下基础的权限控制,在后面也会有更多关于权限控制的知识点分享出来.谢谢各位的关注和支持!  开班第九天: 今天的课程大纲: linux系统中文件目录的基本权限控制 如何来修改默认的生成权限 三种特殊的权限(s,s,

【源码笔记】BlogEngine.Net 中的权限管理

BlogEngine.Net 是个功能点很全面的开源博客系统,容易安装和实现定制,开放接口支持TrackBack,可以定义主题配置数据源等等.可谓五脏俱全,这里先记录一下它基于Membership的权限管理(一般只说到角色就没了). Membership是.net2.0的时候就出来了,现在的最新版本是Identity(微软已经将这个Asp.net项目开源 https://github.com/aspnet/Identity ).权限管理就是处理用户.角色.和具体权限的关系.用户和角色是多对多的关

ORA-01950: 表空间&#39;USERS&#39;中无权限的2种解决办法

总的来说这个错误是由于对表空间操作的权限不足造成的,所以这个时候就可以检查出错之前对于所操作的表赋权grant connect,resource to zhangbojie ; ORA-01950: 表空间'USERS'中无权限的2种解决办法

Android6.0中的权限

前言 Android6.0相比之前的Android版本有一个很大的不同点,就是动态的获取权限.之前我们需要什么权限只需要在Manifest文件中声明即可,在6.0中,又新增了运行时权限的动态检测. Android6.0分了两种权限Normal Permissions(安装时自动授权,用户也不能取消权限) and Dangerous Permissions(详情在文章最后): 使用环境 如果在 Android 6.0 以前的设备上,我们之前在清单文件中声明权限是没有问题的,但是如果是在 Andro