147 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			147 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
<?php
 | 
						||
namespace app\controller\manager;
 | 
						||
 | 
						||
use app\model\{AuthGroup, AuthRule, Log};
 | 
						||
use app\validate\AuthGroup as VAuthGroup;
 | 
						||
use think\exception\ValidateException;
 | 
						||
 | 
						||
/**
 | 
						||
 * 角色管理控制器
 | 
						||
 */
 | 
						||
class Group extends Base
 | 
						||
{
 | 
						||
    /**
 | 
						||
     * 角色、分组删除
 | 
						||
     */
 | 
						||
    public function del()
 | 
						||
    {
 | 
						||
        if ($this->request->isPost()) {
 | 
						||
            $id = input('post.id/d');
 | 
						||
            if (is_numeric($id) === true && $id > 0) {
 | 
						||
                $item = AuthGroup::getById($id);
 | 
						||
                if(!empty($item)){
 | 
						||
                    AuthGroup::destroy($id);
 | 
						||
                    Log::write('group', 'del', '删除角色,ID:' . $id . ',名称:' . $item['title']);
 | 
						||
                    return $this->json();
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return $this->json(2, '传入参数错误,请核对之后再操作!');
 | 
						||
        }
 | 
						||
        return $this->json(1, '非法请求!');
 | 
						||
    }
 | 
						||
    /**
 | 
						||
     * 角色、分组权限分配
 | 
						||
     */
 | 
						||
    public function rule()
 | 
						||
    {
 | 
						||
        if($this->request->isPost()){
 | 
						||
            $rules = input('post.rules/a');
 | 
						||
            $groupId = input('post.group_id/d');
 | 
						||
            if (is_array($rules) && (is_numeric($groupId) === true && $groupId > 0)) {
 | 
						||
                $group = AuthGroup::getById($groupId);
 | 
						||
                if(empty($group)){
 | 
						||
                    return $this->json(2, '无此角色信息,请核对之后再操作!');
 | 
						||
                }
 | 
						||
                AuthGroup::updateRules($groupId, $rules);
 | 
						||
                // 重置该角色对应的权限缓存
 | 
						||
                AuthGroup::resetGroupRulesCache($groupId);
 | 
						||
                Log::write('group', 'rule', '角色分配权限,ID:' . $groupId . ',名称:' . $group['title']);
 | 
						||
                return $this->json();
 | 
						||
            }else{
 | 
						||
                return $this->json(3, '传入参数错误,请核对之后再操作!');
 | 
						||
            }
 | 
						||
        } else {
 | 
						||
            $groupId = input('param.group_id/d');
 | 
						||
            $group = AuthGroup::getById($groupId);
 | 
						||
            if(!empty($group)){
 | 
						||
                $rules = AuthRule::getListTree();
 | 
						||
                $this->data['group_id'] = $groupId;
 | 
						||
                $this->data['group'] = $group;
 | 
						||
                $this->data['rules'] = $rules;
 | 
						||
                return $this->view();
 | 
						||
            }else{
 | 
						||
                return $this->json(1, '无此角色信息,请核对之后再操作!');
 | 
						||
            }
 | 
						||
        }
 | 
						||
    }
 | 
						||
    /**
 | 
						||
     * 角色、分组添加
 | 
						||
     * @param int $status 1:正常;0:禁止
 | 
						||
     */
 | 
						||
    public function add()
 | 
						||
    {
 | 
						||
        if($this->request->isPost()){
 | 
						||
            $title = trim(input('post.title'));
 | 
						||
            $status = input('post.status/d');
 | 
						||
            if (!empty($title) && (is_numeric($status) === true) && ($status == 1 || $status == 0)) {
 | 
						||
                $item = [
 | 
						||
                    'title' => $title,
 | 
						||
                    'status' => $status
 | 
						||
                ];
 | 
						||
                try {
 | 
						||
                    validate(VAuthGroup::class)->check($item);
 | 
						||
                    $group = AuthGroup::create($item);
 | 
						||
                    Log::write('group', 'add', "角色新增,ID:{$group->id} ,标题:{$group->title}");
 | 
						||
                    return $this->json();
 | 
						||
                } catch (ValidateException $e) {
 | 
						||
                    return $this->json(2, $e->getError());
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return $this->json(1, '传入参数错误,请核对之后再操作!');
 | 
						||
        }else{
 | 
						||
            return $this->view();
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * 角色、分组编辑
 | 
						||
     */
 | 
						||
    public function edit()
 | 
						||
    {
 | 
						||
        if($this->request->isPost()){
 | 
						||
            $title = trim(input('post.title'));
 | 
						||
            $status = input('post.status/d');
 | 
						||
            $id  = input('post.id/d');
 | 
						||
            if (!empty($title) && ($status == 1 || $status == 0) && (is_numeric($id) === true && $id > 0)) {
 | 
						||
                $item = [
 | 
						||
                    'title' => $title,
 | 
						||
                    'status' => $status
 | 
						||
                ];
 | 
						||
                try {
 | 
						||
                    validate(VAuthGroup::class)->check($item);
 | 
						||
                    AuthGroup::updateById($id, $item);
 | 
						||
                    Log::write('group', 'edit', "角色编辑,ID:{$id} ,标题:{$item['title']}");
 | 
						||
                    return $this->json();
 | 
						||
                } catch (ValidateException $e) {
 | 
						||
                    return $this->json(2, $e->getError());
 | 
						||
                }
 | 
						||
            }
 | 
						||
            return $this->json(1, '传入参数错误,请核对之后再操作!');
 | 
						||
        }else{
 | 
						||
            $id  = input('param.id/d');
 | 
						||
            if (is_numeric($id) === true && $id > 0) {
 | 
						||
                $item = AuthGroup::getById($id);
 | 
						||
                $this->data['item'] = $item;
 | 
						||
                return $this->view();
 | 
						||
            }
 | 
						||
            return $this->json(1, '传入参数错误,请核对之后再操作!');
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    /**
 | 
						||
     * 所有角色分组信息
 | 
						||
     * @return void
 | 
						||
     */
 | 
						||
    public function index()
 | 
						||
    {
 | 
						||
        $auth = session('auth');
 | 
						||
        if ($auth['groupId'] == 1) {
 | 
						||
            $list = AuthGroup::select()->toArray();
 | 
						||
        } else {
 | 
						||
            $list = AuthGroup::where('id', '<>', 1)->select()->toArray();
 | 
						||
        }
 | 
						||
        $this->data['list'] = $list;
 | 
						||
        return $this->view();
 | 
						||
    }
 | 
						||
}
 |