diff --git a/catchAdmin/permissions/OperateLogListener.php b/catchAdmin/permissions/OperateLogListener.php index 053457d..4945e49 100644 --- a/catchAdmin/permissions/OperateLogListener.php +++ b/catchAdmin/permissions/OperateLogListener.php @@ -1,7 +1,20 @@ insert([ + 'module' => $params['module'], + 'ip' => request()->ip(), + 'operate' => $params['operate'], + 'creator_id' => $params['uid'], + 'method' => $params['method'], + 'created_at' => time(), + ]); + } } diff --git a/catchAdmin/permissions/PermissionsMiddleware.php b/catchAdmin/permissions/PermissionsMiddleware.php index ba0168e..df82c77 100644 --- a/catchAdmin/permissions/PermissionsMiddleware.php +++ b/catchAdmin/permissions/PermissionsMiddleware.php @@ -3,6 +3,7 @@ namespace catchAdmin\permissions; use app\Request; use catchAdmin\permissions\model\Permissions; +use catcher\CatchAdmin; use catcher\exceptions\PermissionForbiddenException; use think\helper\Str; @@ -25,7 +26,8 @@ class PermissionsMiddleware throw new PermissionForbiddenException('Login is invalid', 10006); } // toad - if (($permission = $this->getPermission($request->rule()->getName())) && in_array($permission->id, $request->user()->getPermissionsBy())) { + if (($permission = $this->getPermission($request)) + && in_array($permission->id, $request->user()->getPermissionsBy())) { throw new PermissionForbiddenException(); } @@ -35,17 +37,15 @@ class PermissionsMiddleware /** * * @time 2019年12月12日 - * @param $rule + * @param $request * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @return array|bool|\think\Model|null */ - protected function getPermission($rule) + protected function getPermission(Request $request) { - if (!$rule) { - return false; - } + $rule = $request->rule()->getName(); [$controller, $action] = explode(Str::contains($rule, '@') ? '@' : '/', $rule); @@ -57,18 +57,21 @@ class PermissionsMiddleware $module = array_pop($controller); - $ignore = config('catch.ignore'); - - if (in_array($module, $ignore['module'])) { - return false; - } - $permissionMark = sprintf('%s:%s:%s', $module, $controllerName, $action); - if (in_array($permissionMark, $ignore['route'])) { - return false; + $permission = Permissions::where('permission_mark', $permissionMark)->find(); + + + $params['uid'] = $request->user()->id; + $params['module'] = $rule ? CatchAdmin::getModulesInfo(false)[$module] : '首页'; + $params['method'] = $request->method(); + $params['operate'] = sprintf('%s/%s', $controllerName, $action); + event('operateLog', $params); + + if (!$permission) { + return false; } - return Permissions::where('permission_mark', $permissionMark)->find(); + return $permission; } } \ No newline at end of file diff --git a/catchAdmin/permissions/controller/Permission.php b/catchAdmin/permissions/controller/Permission.php index 6a24072..3eed60f 100644 --- a/catchAdmin/permissions/controller/Permission.php +++ b/catchAdmin/permissions/controller/Permission.php @@ -56,14 +56,14 @@ class Permission extends CatchController $form->hidden('parent_id')->default(\request()->param('id') ?? 0); $form->select('module', '模块', true)->verify('required')->options(CatchAdmin::getModulesInfo()); $form->text('route', '路由')->placeholder('请输入路由'); - $form->radio('method', '请求方法', true)->default(Permission::GET)->options([ + $form->radio('method', '请求方法', true)->default(Permissions::GET)->options([ ['value' => Permissions::GET, 'title' => 'get'], ['value' => Permissions::POST, 'title' => 'post'], ['value' => Permissions::PUT, 'title' => 'put'], ['value' => Permissions::DELETE, 'title' => 'delete'], ]); $form->text('permission_mark', '权限标识', true)->verify('required')->placeholder('请输入权限标识controller:action'); - $form->radio('type', '类型', true)->default(Permission::BTN_TYPE)->options([ + $form->radio('type', '类型', true)->default(Permissions::BTN_TYPE)->options([ ['value' => Permissions::MENU_TYPE, 'title' => '菜单'], ['value' => Permissions::BTN_TYPE, 'title' => '按钮'], ]); diff --git a/catchAdmin/permissions/module.json b/catchAdmin/permissions/module.json index 05a46d1..82a671c 100644 --- a/catchAdmin/permissions/module.json +++ b/catchAdmin/permissions/module.json @@ -4,9 +4,7 @@ "description": "", "keywords": [], "order": 2, - "services": [ - "catchAdmin\\permissions\\PermissionService" - ], + "services": [], "aliases": {}, "files": [], "requires": []