SystemLog.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | EasyAdmin
  4. // +----------------------------------------------------------------------
  5. // | PHP交流群: 763822524
  6. // +----------------------------------------------------------------------
  7. // | 开源协议 https://mit-license.org
  8. // +----------------------------------------------------------------------
  9. // | github开源项目:https://github.com/zhongshaofa/EasyAdmin
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\middleware;
  12. use app\admin\service\SystemLogService;
  13. use app\Request;
  14. use EasyAdmin\tool\CommonTool;
  15. use think\facade\Log;
  16. /**
  17. * 系统操作日志中间件
  18. * Class SystemLog
  19. * @package app\admin\middleware
  20. */
  21. class SystemLog
  22. {
  23. /**
  24. * 敏感信息字段,日志记录时需要加密
  25. * @var array
  26. */
  27. protected $sensitiveParams = [
  28. 'password',
  29. 'password_again',
  30. 'phone',
  31. 'mobile'
  32. ];
  33. public function handle(Request $request, \Closure $next)
  34. {
  35. $params = $request->param();
  36. if (isset($params['s'])) {
  37. unset($params['s']);
  38. }
  39. foreach ($params as $key => $val) {
  40. in_array($key, $this->sensitiveParams) && $params[$key] = "***********";
  41. }
  42. $method = strtolower($request->method());
  43. $url = $request->url();
  44. trace([
  45. 'url' => $url,
  46. 'method' => $method,
  47. 'params' => $params,
  48. ],
  49. 'requestDebugInfo'
  50. );
  51. if ($request->isAjax()) {
  52. if (in_array($method, ['post', 'put', 'delete'])) {
  53. $ip = CommonTool::getRealIp();
  54. $data = [
  55. 'admin_id' => session('admin.id'),
  56. 'url' => $url,
  57. 'method' => $method,
  58. 'ip' => $ip,
  59. 'content' => json_encode($params, JSON_UNESCAPED_UNICODE),
  60. 'useragent' => $_SERVER['HTTP_USER_AGENT'],
  61. 'create_time' => time(),
  62. ];
  63. SystemLogService::instance()->save($data);
  64. }
  65. }
  66. return $next($request);
  67. }
  68. }