From 691518c8c8410b6d3cc8231bccecbd68ac6f72c0 Mon Sep 17 00:00:00 2001 From: wuyanwen Date: Fri, 17 Jan 2020 15:17:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- catch/permissions/PermissionsMiddleware.php | 4 ++ catch/permissions/controller/Job.php | 1 + catch/permissions/controller/Permission.php | 72 ++++++++++----------- catch/permissions/controller/Role.php | 23 ++----- 4 files changed, 47 insertions(+), 53 deletions(-) diff --git a/catch/permissions/PermissionsMiddleware.php b/catch/permissions/PermissionsMiddleware.php index 69b6732..ae6fed4 100644 --- a/catch/permissions/PermissionsMiddleware.php +++ b/catch/permissions/PermissionsMiddleware.php @@ -24,6 +24,10 @@ class PermissionsMiddleware */ public function handle(Request $request, \Closure $next) { + if ($request->isGet() && config('catch.is_allow_get')) { + return $next($request); + } + $rule = $request->rule()->getName(); if (!$rule) { diff --git a/catch/permissions/controller/Job.php b/catch/permissions/controller/Job.php index 6dfc838..4ef8e2c 100644 --- a/catch/permissions/controller/Job.php +++ b/catch/permissions/controller/Job.php @@ -21,6 +21,7 @@ class Job extends CatchController * @time 2020年01月09日 * @param CatchRequest $request * @return \think\response\Json + * @throws \think\db\exception\DbException */ public function index(): \think\response\Json { diff --git a/catch/permissions/controller/Permission.php b/catch/permissions/controller/Permission.php index 22b4f7a..e915647 100644 --- a/catch/permissions/controller/Permission.php +++ b/catch/permissions/controller/Permission.php @@ -7,7 +7,8 @@ use catcher\base\CatchController; use catcher\CatchResponse; use catcher\exceptions\FailedException; use catcher\Tree; -use catchAdmin\permissions\model\Permissions as Permissions; +use catchAdmin\permissions\model\Permissions; +use think\response\Json; class Permission extends CatchController { @@ -22,55 +23,54 @@ class Permission extends CatchController * * @time 2019年12月11日 * @param Request $request - * @return \think\response\Json + * @return Json */ - public function index() + public function index(): Json { return CatchResponse::success(Tree::done($this->permissions->getList())); } - /** - * - * @time 2019年12月11日 - * @throws \Exception - * @return string - */ - public function create() - {} - - /** - * - * @time 2019年12月11日 - * @param Request $request - * @return \think\response\Json - */ - public function save(Request $request) + /** + * + * @time 2019年12月11日 + * @param Request $request + * @return Json + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @throws \think\db\exception\DataNotFoundException + */ + public function save(Request $request): Json { + $params = $request->param(); + + // 如果是子分类 自动写入父类模块 + $parentId = $params['parent_id'] ?? 0; + if ($parentId) { + $parent = $this->permissions->findBy($parentId); + $params['module'] = $parent['module']; + } + return CatchResponse::success($this->permissions->storeBy($request->param())); } - public function read() - {} - - /** - * - * @time 2019年12月11日 - * @param $id - * @throws \Exception - * @return string - */ - public function edit($id) - {} - /** * * @time 2019年12月11日 * @param $id * @param Request $request - * @return \think\response\Json + * @return Json */ - public function update($id, Request $request) + public function update($id, Request $request): Json { + $permission = $this->permissions->findBy($id); + + // 如果是父分类需要更新所有子分类的模块 + if (!$permission->parent_id) { + $this->permissions->updateBy($permission->parent_id, [ + 'module' => $permission->module, + ], 'parent_id'); + } + return CatchResponse::success($this->permissions->updateBy($id, $request->param())); } @@ -82,9 +82,9 @@ class Permission extends CatchController * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException - * @return \think\response\Json + * @return Json */ - public function delete($id) + public function delete($id): Json { if ($this->permissions->where('parent_id', $id)->find()) { throw new FailedException('存在子菜单,无法删除'); diff --git a/catch/permissions/controller/Role.php b/catch/permissions/controller/Role.php index c7b384e..15a0047 100644 --- a/catch/permissions/controller/Role.php +++ b/catch/permissions/controller/Role.php @@ -1,6 +1,7 @@ role->updateBy($id, $request->param()); @@ -112,7 +103,7 @@ class Role extends CatchController * @throws \think\db\exception\ModelNotFoundException * @return Json */ - public function delete($id) + public function delete($id): Json { if ($this->role->where('parent_id', $id)->find()) { throw new FailedException('存在子角色,无法删除'); @@ -139,7 +130,7 @@ class Role extends CatchController */ public function getPermissions(Request $request, \catchAdmin\permissions\model\Permissions $permission): Json { - $parentRoleHasPermissionIds = null; + $parentRoleHasPermissionIds = []; if ($request->param('parent_id')) { $permissions = $this->role->findBy($request->param('parent_id'))->getPermissions(); foreach ($permissions as $_permission) { @@ -147,9 +138,7 @@ class Role extends CatchController } } - $permissions = Tree::done($permission->getList([ - 'permission_ids' => $parentRoleHasPermissionIds - ])); + $permissions = Tree::done(Permissions::whereIn('id', $parentRoleHasPermissionIds)->select()->toArray()); $permissionIds = []; if ($request->param('role_id')) { @@ -158,7 +147,7 @@ class Role extends CatchController $permissionIds[] = $_permission->pivot->permission_id; } } - + return CatchResponse::success([ 'permissions' => $permissions, 'hasPermissions' => $permissionIds,