基于ThinkPHP5的Auth权限认证管理模块

搞了一个多月的时间终于搞定这个基于ThinkPHP5的auth权限管理模块,下面是一些截图和参考资料。看云的那个文档给了我很大的帮助,花了10块钱买了他的源代码,然后自己修改了一番,适应了当时在做的系统。

基于ThinkPHP5的Auth权限认证管理模块_第1张图片

 

基于ThinkPHP5的Auth权限认证管理模块_第2张图片

 

基于ThinkPHP5的Auth权限认证管理模块_第3张图片

Auth.php

role = Loader::model('role');
    }

    /**
     * 权限列表
     */
    public function auth()
    {
        $data = Db::name('auth')->getTreeData('tree','id','title');
        $assign = array(
            'data' => $data
        );
        $this->assign($assign);
        return $this->fetch();
    }


    /**
     * 添加权限
     */
    public function addAuth(){
        $data=input('post.');
//        var_dump($data);
        unset($data['id']);
        $result=Db::name('auth')->insert($data);
        if ($result) {
            $this->success('添加成功','Admin/Role/auth');
        }else{
            $this->error('添加失败');
        }
    }

    /**
     * 修改权限
     */
    public function editAuth(){
        $data=input('post.');
        $info=['title'=>$data['title'],'name'=>$data['name']];
        $result=Db::name('auth')->where(["id"=>$data['id']])->update($info);
        // $result=\app\admin\model\Admin::change(["id"=>$data['id']],$info);
        if ($result) {
            $this->success('修改成功!','Admin/Role/auth');
        }else{
            $this->error('您没有做任何修改!');
        }
    }

    /**
     * 删除权限
     */
    public function deleteAuth($id){
        $map=array(
            'id'=>$id
        );
        $result=Db::name('auth')->delete($map);
        if($result){
            $this->success('删除成功','Admin/Role/auth');
        }else{
            $this->error('请先删除子权限');
        }

    }
}

auth.html








{:lang('Auth List')}
{foreach name="data" id="v"} {/foreach}
权限名称 权限 操作
{$v['_name']} {$v['name']} 添加子权限 | 修改 | 删除

Admin.php(验证权限部分)

public function _initialize()
	{
		parent::_initialize();
		//判断是否已经登录

		if( !Session::has('userinfo', 'admin') ) {
			$this->error('Please login first', url('admin/Login/index'));
		}
        $auth=new \think\Auth();
		$userRow = Session::get('userinfo', 'admin');
		//验证权限
		$request = Request::instance();
		$rule_name = $request->module().'/'.$request->controller().'/'.$request->action();
		$this->uid = $userRow['id'];
		$this->role_id = $userRow['role_id'];

//        var_dump($this->uid);
		if($rule_name == 'admin/login/index' || $rule_name == 'admin/index/index') {
            $result = true;
        } else {
		    $result = $auth->check($rule_name, $this->uid);
        }
        if(!$result){
            $this->error('您没有权限访问');
        }
		/*if($userRow['administrator']!=1 && !$this->checkRule($this->uid, $rule_val)) {
			$this->error(lang('Without the permissions page'));
		}*/
	}

check_user.html

搜索用户名:
{foreach name="user_data" item="v"} {/foreach}
用户名 操作
{$v['username']} {if condition="in_array($v['id'], $uids)"} 已经是{$group_name[0]['rolename']} {else /} 设置为{$group_name[0]['rolename']} {/if}

edit.html

{__NOLAYOUT__}

还有index.html,rule_distribution.html,User.php,Role.php不再一一列出。

 

参考资料:

  1. thinkphp整合系列之rbac的升级版auth权限管理系统demo-白俊遥博客
  2. 看云文档-本权限管理demo主要是针对新手的!
  3. 5行代码搞定基于Auth的权限认证

你可能感兴趣的:(PHP)