95 lines
2.9 KiB
PHP
95 lines
2.9 KiB
PHP
<?php
|
|
namespace app\admin\controller;
|
|
|
|
use support\Request;
|
|
use app\common\model\Permission;
|
|
|
|
class PermissionController
|
|
{
|
|
public function list(Request $request)
|
|
{
|
|
// 返回树形结构或者普通列表
|
|
$permissions = Permission::orderBy('sort', 'asc')->get();
|
|
return jsonResponse($permissions);
|
|
}
|
|
|
|
public function create(Request $request)
|
|
{
|
|
$name = trim($request->post('name', ''));
|
|
$code = trim($request->post('code', ''));
|
|
$parent_id = (int)$request->post('parent_id', 0);
|
|
$type = (int)$request->post('type', 1); // 1菜单 2按钮
|
|
$sort = (int)$request->post('sort', 0);
|
|
|
|
if (!$name || !$code) {
|
|
return jsonResponse(null, '名称和代码必填', 400);
|
|
}
|
|
|
|
if (Permission::where('code', $code)->exists()) {
|
|
return jsonResponse(null, '代码已存在', 400);
|
|
}
|
|
|
|
$permission = Permission::create([
|
|
'name' => $name,
|
|
'code' => $code,
|
|
'parent_id' => $parent_id,
|
|
'type' => $type,
|
|
'sort' => $sort,
|
|
]);
|
|
|
|
return jsonResponse($permission, '创建成功');
|
|
}
|
|
|
|
public function update(Request $request)
|
|
{
|
|
$id = (int)$request->post('id');
|
|
$permission = Permission::find($id);
|
|
if (!$permission) {
|
|
return jsonResponse(null, '权限不存在', 404);
|
|
}
|
|
|
|
$name = trim($request->post('name', ''));
|
|
$code = trim($request->post('code', ''));
|
|
|
|
if ($name) $permission->name = $name;
|
|
if ($code && $code !== $permission->code) {
|
|
if (Permission::where('code', $code)->exists()) {
|
|
return jsonResponse(null, '代码已存在', 400);
|
|
}
|
|
$permission->code = $code;
|
|
}
|
|
|
|
if ($request->post('parent_id') !== null) {
|
|
$permission->parent_id = (int)$request->post('parent_id');
|
|
}
|
|
if ($request->post('type') !== null) {
|
|
$permission->type = (int)$request->post('type');
|
|
}
|
|
if ($request->post('sort') !== null) {
|
|
$permission->sort = (int)$request->post('sort');
|
|
}
|
|
|
|
$permission->save();
|
|
return jsonResponse(null, '更新成功');
|
|
}
|
|
|
|
public function delete(Request $request)
|
|
{
|
|
$id = (int)$request->post('id');
|
|
$permission = Permission::find($id);
|
|
if (!$permission) {
|
|
return jsonResponse(null, '权限不存在', 404);
|
|
}
|
|
|
|
if (Permission::where('parent_id', $id)->exists()) {
|
|
return jsonResponse(null, '存在子权限,不可删除', 400);
|
|
}
|
|
|
|
$permission->delete();
|
|
// Remove from role_permissions
|
|
\Illuminate\Database\Capsule\Manager::table('role_permissions')->where('permission_id', $id)->delete();
|
|
|
|
return jsonResponse(null, '删除成功');
|
|
}
|
|
}
|