odilov-sh/laravel-audit-tm

dev-main 2023-12-14 09:33 UTC

This package is auto-updated.

Last update: 2024-09-14 11:01:08 UTC


README

关于

此包提供了一种简单的方法来审计您的 Eloquent 模型。包收集以下信息

  • service_id - 使用此包的服务的 ID
  • user_id - 执行操作的用户
  • event - 执行的事件
  • auditable_type - 可审计模型的类名。默认为模型类名。您可以在您的模型中覆盖 getAuditableClassName()
  • auditable_id - 可审计模型的 ID。您可以在您的模型中覆盖 getAuditableId()
  • old_values - 可审计模型的老旧值
  • new_values - 可审计模型的新值
  • tags - 额外的标签。您可以在您的模型中覆盖 getAuditableTags()
  • url - 请求的 URL
  • ip_address - 请求的 IP 地址
  • user_agent - 请求的用户代理

如果您使用 Astrotomic\Translatable\Translatable 特性,此包还会收集可审计模型的翻译,如 name_uztitle_uz 等。

安装

composer require odilov-sh/laravel-audit-tm

发布

php artisan vendor:publish --provider="OdilovSh\LaravelAuditTm\AuditTmServiceProvider"

环境变量

您的 .env 文件必须包含以下变量

AUTH_SERVICE_ID=1111
AUDIT_TM_SECRET_KEY="your secret key"
AUDIT_TM_ENABLED=true // if false, audit will not be sent
AUDIT_TM_BASE_URL="audit receiver base url"

用法

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{

    use OdilovSh\LaravelAuditTm\Traits\Auditable;

}

可审计特性会在 updatedcreateddeleted 事件上自动将数据发送到审计服务器。在其他情况下,您必须手动发送数据。手动发送数据可能如下所示

// Manually send data to audit server

use OdilovSh\LaravelAuditTm\AuditSender;

$data = [];
$data['event'] = 'changeStatus'; // Event name
$data['auditable_type'] = 'App\Models\Product'; // The name of the class being audited
$data['auditable_id'] = 123; // The id of the model being audited

// Old values before changing
$data['old_values'] = [
    'status' => 'active'
];

// New values after changing
$data['new_values'] = [
    'status' => 'inactive'
];

(new AuditSender($data))->send();

队列

您可以使用队列作业将审计数据发送到审计服务器。在这种情况下,您将不会等待发送到审计服务器的请求并获取响应。所有过程都将后台完成。要使用队列,首先必须配置 Laravel 的队列设置。然后,您只需在 env 文件中添加新的配置即可

AUDIT_TM_QUEUE_IS_ENABLED=true
AUDIT_TM_ON_QUEUE=default

注意

此包使用 OdilovSh\LaravelAuditTm\Resolvers\UserIdResolver 解析用户 ID。您可以通过更改 audit-tm 配置文件中的 user_id_resolver 来更改解析器。此外,您还可以将此配置设置为 false。在这种情况下,user_id 值将不会发送。