117 lines
4.0 KiB
PHP
117 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Node;
|
|
use App\Models\NodeGroup;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
|
class NodeController extends Controller
|
|
{
|
|
//查看权限列表
|
|
public function index () {
|
|
$list = Node::all()->toArray();
|
|
$list = getTreeList($list);
|
|
return $this->success($list);
|
|
}
|
|
|
|
// 添加权限
|
|
public function store (Request $request) {
|
|
$validator = Validator::make($request->all(),[
|
|
'name' => 'required',
|
|
'pid' => 'required',
|
|
'controller' => 'required',
|
|
'action' => 'required',
|
|
],[
|
|
'name.required' => '权限名称不能为空',
|
|
'pid.required' => '上级权限不能为空',
|
|
'controller.required' => '访问控制器不能为空',
|
|
'action.required' => '访问方法不能为空',
|
|
]);
|
|
if ($validator->fails()){
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,$validator->errors()->first());
|
|
}
|
|
$arr = $request->all();
|
|
if ($arr['pid'] == 0){
|
|
$arr['route_uri'] = $arr['controller'];
|
|
}else{
|
|
$arr['route_uri'] = strtolower(trim($arr['controller'])).'/'.strtolower(trim($arr['action']));
|
|
}
|
|
$arr['created_at'] = date('y-m-d H:i:s',time());
|
|
$count = Node::where('route_uri',$arr['route_uri'])->count();
|
|
if ($count && $arr['pid']!=0) {
|
|
return $this->error(ERROR_CODE_INTERNAL_ERROR,'已有该权限的url地址了');
|
|
}
|
|
$res = Node::insert($arr);
|
|
if (! $res) {
|
|
return $this->error(ERROR_CODE_INTERNAL_ERROR,'系统繁忙,稍后再试');
|
|
}
|
|
return $this->success([]);
|
|
}
|
|
|
|
//修改权限
|
|
public function update ($id,Request $request) {
|
|
if (! is_numeric($id)) {
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,'参数格式不对');
|
|
}
|
|
$validator = Validator::make($request->all(),[
|
|
'name' => 'required',
|
|
'pid' => 'required',
|
|
'controller' => 'required',
|
|
'action' => 'required',
|
|
],[
|
|
'name.required' => '权限名称不能为空',
|
|
'pid.required' => '上级权限不能为空',
|
|
'controller.required' => '访问控制器不能为空',
|
|
'action.required' => '访问方法不能为空',
|
|
]);
|
|
if ($validator->fails()){
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,$validator->errors()->first());
|
|
}
|
|
$arr = $request->all();
|
|
if ($arr['pid'] == 0){
|
|
$arr['route_uri'] = $arr['controller'];
|
|
}else{
|
|
$arr['route_uri'] = strtolower(trim($arr['controller'])).'/'.strtolower(trim($arr['action']));
|
|
}
|
|
$count = Node::where('route_uri',$arr['route_uri'])->count();
|
|
if ($count>1 && $arr['pid']!=0) {
|
|
return $this->error(ERROR_CODE_INTERNAL_ERROR,'已有该权限的url地址了');
|
|
}
|
|
$res = Node::where('id',$id)->update($arr);
|
|
if (! $res) {
|
|
return $this->error(ERROR_CODE_INTERNAL_ERROR,'系统繁忙,稍后再试');
|
|
}
|
|
return $this->success([]);
|
|
}
|
|
|
|
//删除权限
|
|
public function destroy ($id) {
|
|
if (! is_numeric($id)) {
|
|
return $this->error(ERROR_CODE_PARAM_INVALID,'参数格式不对');
|
|
}
|
|
try {
|
|
$res = Node::destroy($id);
|
|
if (! $res) {
|
|
throw new \Exception('系统繁忙,稍后再试',ERROR_CODE_INTERNAL_ERROR);
|
|
}
|
|
$count = Node::where('pid',$id)->count();
|
|
if (! $count) {
|
|
return $this->success([]);
|
|
}
|
|
$ref = Node::where('pid',$id)->delete();
|
|
if (! $ref) {
|
|
throw new \Exception('系统繁忙,稍后再试',ERROR_CODE_INTERNAL_ERROR);
|
|
}
|
|
return $this->success([]);
|
|
} catch (\Exception $e) {
|
|
return $this->error($e->getCode(),$e->getMessage());
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|