增加操作事件

This commit is contained in:
wuyanwen 2019-12-12 22:33:58 +08:00
parent 02b973d0b5
commit 5976ebb235
4 changed files with 36 additions and 22 deletions

View File

@ -1,7 +1,20 @@
<?php <?php
namespace catchAdmin\permissions; namespace catchAdmin\permissions;
class OperateEvent use think\facade\Db;
{
class OperateLogListener
{
public function handle($params)
{
Db::name('operate_log')->insert([
'module' => $params['module'],
'ip' => request()->ip(),
'operate' => $params['operate'],
'creator_id' => $params['uid'],
'method' => $params['method'],
'created_at' => time(),
]);
}
} }

View File

@ -3,6 +3,7 @@ namespace catchAdmin\permissions;
use app\Request; use app\Request;
use catchAdmin\permissions\model\Permissions; use catchAdmin\permissions\model\Permissions;
use catcher\CatchAdmin;
use catcher\exceptions\PermissionForbiddenException; use catcher\exceptions\PermissionForbiddenException;
use think\helper\Str; use think\helper\Str;
@ -25,7 +26,8 @@ class PermissionsMiddleware
throw new PermissionForbiddenException('Login is invalid', 10006); throw new PermissionForbiddenException('Login is invalid', 10006);
} }
// toad // 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(); throw new PermissionForbiddenException();
} }
@ -35,17 +37,15 @@ class PermissionsMiddleware
/** /**
* *
* @time 2019年12月12日 * @time 2019年12月12日
* @param $rule * @param $request
* @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException * @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
* @return array|bool|\think\Model|null * @return array|bool|\think\Model|null
*/ */
protected function getPermission($rule) protected function getPermission(Request $request)
{ {
if (!$rule) { $rule = $request->rule()->getName();
return false;
}
[$controller, $action] = explode(Str::contains($rule, '@') ? '@' : '/', $rule); [$controller, $action] = explode(Str::contains($rule, '@') ? '@' : '/', $rule);
@ -57,18 +57,21 @@ class PermissionsMiddleware
$module = array_pop($controller); $module = array_pop($controller);
$ignore = config('catch.ignore');
if (in_array($module, $ignore['module'])) {
return false;
}
$permissionMark = sprintf('%s:%s:%s', $module, $controllerName, $action); $permissionMark = sprintf('%s:%s:%s', $module, $controllerName, $action);
if (in_array($permissionMark, $ignore['route'])) { $permission = Permissions::where('permission_mark', $permissionMark)->find();
return false;
$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;
} }
} }

View File

@ -56,14 +56,14 @@ class Permission extends CatchController
$form->hidden('parent_id')->default(\request()->param('id') ?? 0); $form->hidden('parent_id')->default(\request()->param('id') ?? 0);
$form->select('module', '模块', true)->verify('required')->options(CatchAdmin::getModulesInfo()); $form->select('module', '模块', true)->verify('required')->options(CatchAdmin::getModulesInfo());
$form->text('route', '路由')->placeholder('请输入路由'); $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::GET, 'title' => 'get'],
['value' => Permissions::POST, 'title' => 'post'], ['value' => Permissions::POST, 'title' => 'post'],
['value' => Permissions::PUT, 'title' => 'put'], ['value' => Permissions::PUT, 'title' => 'put'],
['value' => Permissions::DELETE, 'title' => 'delete'], ['value' => Permissions::DELETE, 'title' => 'delete'],
]); ]);
$form->text('permission_mark', '权限标识', true)->verify('required')->placeholder('请输入权限标识controller:action'); $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::MENU_TYPE, 'title' => '菜单'],
['value' => Permissions::BTN_TYPE, 'title' => '按钮'], ['value' => Permissions::BTN_TYPE, 'title' => '按钮'],
]); ]);

View File

@ -4,9 +4,7 @@
"description": "", "description": "",
"keywords": [], "keywords": [],
"order": 2, "order": 2,
"services": [ "services": [],
"catchAdmin\\permissions\\PermissionService"
],
"aliases": {}, "aliases": {},
"files": [], "files": [],
"requires": [] "requires": []