重写事件
This commit is contained in:
@@ -4,7 +4,7 @@ namespace catchAdmin\login;
|
|||||||
use catchAdmin\user\model\Users;
|
use catchAdmin\user\model\Users;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
|
||||||
class LoginLogListener
|
class LoginLogEvent
|
||||||
{
|
{
|
||||||
public function handle($params)
|
public function handle($params)
|
||||||
{
|
{
|
@@ -6,23 +6,24 @@ use catchAdmin\permissions\model\Permissions;
|
|||||||
use catcher\CatchAdmin;
|
use catcher\CatchAdmin;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
|
||||||
class OperateLogListener
|
class OperateLogEvent
|
||||||
{
|
{
|
||||||
public function handle($params)
|
public function handle($params)
|
||||||
{
|
{
|
||||||
$request = $params['request'];
|
|
||||||
$permission = $params['permission'];
|
$permission = $params['permission'];
|
||||||
|
|
||||||
$parentPermission = Permissions::where('id', $permission->parent_id)->value('permission_name');
|
$parentPermission = Permissions::where('id', $permission->parent_id)->value('permission_name');
|
||||||
|
|
||||||
|
$requestParams = request()->param();
|
||||||
Db::name('operate_log')->insert([
|
Db::name('operate_log')->insert([
|
||||||
'creator_id' => $request->user()->id,
|
'creator_id' => $params['creator_id'],
|
||||||
'module' => $parentPermission ? : '',
|
'module' => $parentPermission ? : '',
|
||||||
'method' => $request->method(),
|
'method' => request()->method(),
|
||||||
'operate' => $permission->permission_name,
|
'operate' => $permission->permission_name,
|
||||||
'route' => $permission->route,
|
'route' => $permission->route,
|
||||||
'params' => json_encode($request->param()),
|
'params' => !empty($requestParams) ? json_encode($requestParams) : '',
|
||||||
'created_at' => time(),
|
'created_at' => time(),
|
||||||
'ip' => $request->ip(),
|
'ip' => request()->ip(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -31,6 +31,7 @@ class PermissionsMiddleware
|
|||||||
}
|
}
|
||||||
// 模块忽略
|
// 模块忽略
|
||||||
[$module, $controller, $action] = $this->parseRule($rule);
|
[$module, $controller, $action] = $this->parseRule($rule);
|
||||||
|
// toad
|
||||||
if (in_array($module, $this->ignoreModule())) {
|
if (in_array($module, $this->ignoreModule())) {
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
@@ -39,6 +40,10 @@ class PermissionsMiddleware
|
|||||||
if (!$user) {
|
if (!$user) {
|
||||||
throw new PermissionForbiddenException('Login is invalid', Code::LOST_LOGIN);
|
throw new PermissionForbiddenException('Login is invalid', Code::LOST_LOGIN);
|
||||||
}
|
}
|
||||||
|
//dd($this->parseRule($rule));
|
||||||
|
$permission = $this->getPermission($module, $controller, $action);
|
||||||
|
// 记录操作
|
||||||
|
$this->operateEvent($request->user()->id, $permission);
|
||||||
// 超级管理员
|
// 超级管理员
|
||||||
if ($request->user()->id === config('catch.permissions.super_admin_id')) {
|
if ($request->user()->id === config('catch.permissions.super_admin_id')) {
|
||||||
return $next($request);
|
return $next($request);
|
||||||
@@ -47,21 +52,21 @@ class PermissionsMiddleware
|
|||||||
if ($request->isGet() && config('catch.permissions.is_allow_get')) {
|
if ($request->isGet() && config('catch.permissions.is_allow_get')) {
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
// toad
|
|
||||||
$permission = $this->getPermission($module, $controller, $action);
|
|
||||||
if (!$permission || !in_array($permission->id, Cache::get(CatchCacheKeys::USER_PERMISSIONS . $user->id))) {
|
if (!$permission || !in_array($permission->id, Cache::get(CatchCacheKeys::USER_PERMISSIONS . $user->id))) {
|
||||||
throw new PermissionForbiddenException();
|
throw new PermissionForbiddenException();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 操作日志
|
|
||||||
event('operateLog', [
|
|
||||||
'request' => $request,
|
|
||||||
'permission' => $permission,
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解析规则
|
||||||
|
*
|
||||||
|
* @time 2020年04月16日
|
||||||
|
* @param $rule
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
protected function parseRule($rule)
|
protected function parseRule($rule)
|
||||||
{
|
{
|
||||||
[$controller, $action] = explode(Str::contains($rule, '@') ? '@' : '/', $rule);
|
[$controller, $action] = explode(Str::contains($rule, '@') ? '@' : '/', $rule);
|
||||||
@@ -99,8 +104,31 @@ class PermissionsMiddleware
|
|||||||
return $permission;
|
return $permission;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 忽略模块
|
||||||
|
*
|
||||||
|
* @time 2020年04月16日
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
protected function ignoreModule()
|
protected function ignoreModule()
|
||||||
{
|
{
|
||||||
return ['login'];
|
return ['login'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作日志
|
||||||
|
*
|
||||||
|
* @time 2020年04月16日
|
||||||
|
* @param $creatorId
|
||||||
|
* @param $permission
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function operateEvent($creatorId, $permission)
|
||||||
|
{
|
||||||
|
// 操作日志
|
||||||
|
$permission && event('operateLog', [
|
||||||
|
'creator_id' => $creatorId,
|
||||||
|
'permission' => $permission,
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace catchAdmin\system\event;
|
|
||||||
|
|
||||||
class LoginLogEvent
|
|
||||||
{
|
|
||||||
protected $params;
|
|
||||||
|
|
||||||
public function __construct(array $params)
|
|
||||||
{
|
|
||||||
$this->params = $params;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace catchAdmin\system\event;
|
|
||||||
|
|
||||||
class OperateLogEvent
|
|
||||||
{
|
|
||||||
protected $params;
|
|
||||||
|
|
||||||
public function __construct(array $params)
|
|
||||||
{
|
|
||||||
$this->params = $params;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use catchAdmin\login\LoginLogListener;
|
use catchAdmin\login\LoginLogListener;
|
||||||
use catchAdmin\permissions\OperateLogListener;
|
use catchAdmin\permissions\OperateLogEvent;
|
||||||
use catcher\event\LoadModuleRoutes;
|
use catcher\event\LoadModuleRoutes;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@@ -83,11 +83,11 @@ return [
|
|||||||
'events' => [
|
'events' => [
|
||||||
// 登录日志
|
// 登录日志
|
||||||
'loginLog' => [
|
'loginLog' => [
|
||||||
LoginLogListener::class,
|
\catchAdmin\login\LoginLogEvent::class,
|
||||||
],
|
],
|
||||||
// 操作日志
|
// 操作日志
|
||||||
'operateLog' => [
|
'operateLog' => [
|
||||||
OperateLogListener::class,
|
OperateLogEvent::class,
|
||||||
],
|
],
|
||||||
// 路由加载
|
// 路由加载
|
||||||
'RouteLoaded' => [
|
'RouteLoaded' => [
|
||||||
|
Reference in New Issue
Block a user