123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <?php namespace App\Http\Controllers\Admin;
- use App\Http\Requests\Admin\AuthManager as Request;
- use App\Models\Business;
- use Illuminate\Support\Facades\DB;
- /**
- * 权限管理
- *
- * @author 刘相欣
- *
- */
- class AuthManager extends Auth{
- /**
- * 初始化
- *
- * */
- protected function _initialize(){
- parent::_initialize();
- $this->assign('breadcrumb1','系统');
- $this->assign('breadcrumb2','权限管理');
- }
- /**
- * 初始化
- *
- * */
- public function index(){
- $mp = [];
- if(!in_array(admin('uid'), explode(',', config('administrator')))){
- $mp['auth_group.type'] = 1;
- $session = session('userRule');
- if ($session){
- $mp['auth_group.company_id'] = $session['company_id'];
- $mp['auth_group.menu_type'] = $session['menu_type'];
- if ($session['business_id']){
- $mp['auth_group.business_id'] = $session['business_id'];
- }
- }
- }
- // 查询列表数据
- $list = DB::table('auth_group')
- ->join('company', 'company.id', '=', 'auth_group.company_id')
- ->where($mp)
- ->select('auth_group.*', 'company.name as company_name')
- ->paginate(config('page_num',10))->appends(request()->all());
- foreach($list as $k=>$v){
- $v['business_name'] = '';
- if ($v['business_id']){
- $v['business_name'] = Business::query()->where('id', $v['business_id'])->value('name');
- }
- $list[$k] = $v;
- }
- // 分配数据
- $this->assign('list',$list);
- // 加载模板
- return $this->fetch();
- }
- /**
- * 新增
- *
- * */
- public function add(Request $request){
- if(request()->isMethod('post')){
- // 验证参数
- $request->scene('add')->validate();
- // 接收参数
- $data['title'] = request('title','');
- $data['description'] = request('description','');
- $session = session('userRule');
- if ($session){
- $data['company_id'] = $session['company_id'];
- $data['menu_type'] = $session['menu_type'];
- if ($session['business_id']){
- $data['business_id'] = $session['business_id'];
- }
- }
- $data['type'] = 1;
- // 返回结果
- $result = DB::table('auth_group')->insert($data);
- // 如果状态停用
- if( !$result ) return json_send(['code'=>'error','msg'=>'添加失败']);
- // 结果
- return json_send(['code'=>'success','msg'=>'添加成功','action'=>'add']);
- }
- $this->assign('crumbs','新增');
- return $this->fetch();
- }
- /**
- * 编辑
- *
- * */
- public function edit(Request $request){
- if(request()->isMethod('post')){
- // 验证参数
- $request->scene('edit')->validate();
- // 接收参数
- $id = request('id',0);
- $data['title'] = request('title','');
- $data['description'] = request('description','');
- // 返回结果
- $result = DB::table('auth_group')->where(['id'=>$id])->update($data);
- // 如果状态停用
- if( !$result ) return json_send(['code'=>'error','msg'=>'编辑失败']);
- // 结果
- return json_send(['code'=>'success','msg'=>'编辑成功','action'=>'edit']);
- }
- $group = DB::table('auth_group')->find((int)request('id'));
- $merge_group = explode(',',config('CUSTOM_GROUP'));
- array_push($merge_group,$group['id']);
- $this->assign('group',$group);
- $this->assign('crumbs','编辑');
- return $this->fetch();
- }
- /**
- * 删除
- *
- * */
- public function del(Request $request){
- // 验证参数
- $request->scene('del')->validate();
- // 接收参数
- $id = request('id',0);
- // 执行删除
- $result = DB::table('auth_group')->delete($id);
- // 错误告知
- if( !$result ) return json_send(['code'=>'error','msg'=>'删除失败']);
- // 结果
- return json_send(['code'=>'success','msg'=>'删除成功']);
- }
- /**
- * 授权
- *
- * */
- public function access(Request $request){
- // 验证参数
- $request->scene('del')->validate();
- // 如果是post
- if(request()->isMethod('post')){
- // 接收参数
- $data['rules'] = (array) request('rules',[]);
- // 权限组Id
- $group_id = (int) request('id',0);
- // 删除权限
- DB::table('auth_rule')->where(['group_id'=>$group_id])->delete();
- // 存在权限
- if( isset($data['rules']) ){
- // 排序
- sort($data['rules']);
- // 切割
- $data['rules'] = implode( ',' , array_unique($data['rules']));
- }
- // 修改权限
- $result = DB::table('auth_group')->where(['id'=>$group_id])->update($data);
- // 告知结果
- if( !$result ) return json_send(['code'=>'success','msg'=>'权限组修改失败','action'=>'edit']);
- // 权限组菜单
- $group_menu = DB::table('auth_group')->find($group_id);
- // 菜单ID
- $menu_id = explode(',', $group_menu['rules']);
- // 获得菜单列表
- $menu_list = DB::table('menu')->get()->toArray();
- // 循环菜单ID
- foreach ($menu_id as $v) {
- // 循环菜单列表
- foreach ($menu_list as $v1) {
- // 如果对应的菜单
- if( $v == $v1['id'] ){
- // 组合菜单权限数据
- $m['menu_id'] = $v;
- $m['group_id'] = $group_id;
- $m['name'] = !empty($v1['url']) ? $v1['url'] : '';
- // 写入菜单权限规则表
- DB::table('auth_rule')->insert($m);
- }
- }
- }
- // 告知结果
- return json_send(['code'=>'success','msg'=>'编辑成功','action'=>'edit']);
- }
- // 接收参数
- $id = request('id',0);
- // 获取菜单
- // 如果是超管
- if( in_array(admin('uid'), explode(',', config('administrator')))){
- // 获取菜单
- $menu = DB::table('menu')->orderBy('sort_order')->get()->toArray();
- }else{
- // 仅获取允许的菜单
- $menu = DB::table('menu')->join('auth_rule','menu.id','=','auth_rule.menu_id')->whereIn('auth_rule.group_id',admin('group_id'))->orderBy('sort_order')->get(['menu.*'])->toArray();
- }
- // 获取规则
- $rules = DB::table('auth_group')->select('rules')->find($id);
- // 树形
- $menu = array_sort(list_to_tree($menu,'id','pid','child',0),'module',SORT_ASC);
- // 权限菜单
- $this->assign('access_menu',$menu);
- // 规则
- $this->assign('rules',$rules);
- // 加载模板
- return $this->fetch();
- }
- /**
- * 状态
- *
- * */
- public function set_status(Request $request){
- // 验证参数
- $request->scene('set_status')->validate();
- // 接收参数
- $id = request('id',0);
- $status = request('status',0);
- // 执行删除
- $result = DB::table('auth_group')->where(['id'=>$id])->update(['status'=>$status]);
- // 错误告知
- if( !$result ) return json_send(['code'=>'error','msg'=>'操作失败','path'=>'']);
- // 结果
- return json_send(['code'=>'success','msg'=>'操作成功','path'=>'']);
- }
- }
- ?>
|