luketowers/wn-easyaudit-plugin

查看和管理 Winter CMS 项目中模型审计日志

安装数: 1,834

依赖项: 0

建议者: 0

安全性: 0

星标: 17

关注者: 4

分支: 9

开放问题: 1

类型:winter-plugin

dev-main 2024-05-22 20:24 UTC

This package is auto-updated.

Last update: 2024-09-22 20:56:24 UTC


README

轻松查看和管理 Winter CMS 项目中模型的审计日志。

安装

要从 Composer 安装,请在项目根目录下运行 composer require luketowers/wn-easyaudit-plugin

文档

要开始使用此插件,只需将 TrackableModel 行为添加到您希望跟踪的任何模型中

class MyModel extends Model
{
    /**
     * @var array Behaviors implemented by this model class
     */
    public $implement = ['@LukeTowers.EasyAudit.Behaviors.TrackableModel'];
}

一旦将 TrackableModel 行为添加到模型中,任何在 $trackableEvents 中设置的本地事件都会自动监听,并为每个事件生成一个审计记录。

默认情况下,TrackableModel 行为将监听以下事件

  • model.afterCreate
  • model.afterUpdate
  • model.afterDelete

除了上述属性外,您还可以向模型类添加以下属性以配置审计日志行为

class MyModel extends Model
{
    // ...

    /**
     * @var array The model events that are to be tracked as activities
     */
    public $trackableEvents = [
        'model.afterCreate' => ['name' => 'created', 'description' => 'The record was created'],
        'model.afterUpdate' => ['name' => 'updated', 'description' => 'The record was updated'],
        'model.afterDelete' => ['name' => 'archived', 'description' => 'The record was archived'],
    ];

    /**
     * @var bool Manually control the IP address logging on this model (default from the luketowers.easyaudit.logIpAddress config setting)
     */
    public $trackableLogIpAddress = true;

    /**
     * @var bool Manually control the User agent logging on this model (default from the luketowers.easyaudit.logUserAgent config setting)
     */
    public $trackableLogUserAgent = true;

    /**
     * @var bool Manually control the change tracking on this model (default from the luketowers.easyaudit.trackChanges config setting)
     */
    public $trackableTrackChanges = true;

    /**
     * @var bool Manually control if the activities field gets automatically injected into backend forms
     * for this model (default from the luketowers.easyaudit.autoInjectActvitiesFormWidget config setting)
     */
    public $trackableInjectActvitiesFormWidget = true;
}

您可以通过添加针对 activities 关系的字段(由 TrackableModel 行为添加)并将类型设置为 activitylog 来查看模型审计日志,并将其添加到相关的 fields.yaml 文件中

activities:
    tab: Audit Log
    context: [update, preview]
    type: activitylog
    span: full

高级使用

还可以使用 LukeTowers\EasyAudit\Classes\ActivityLogger 类直接记录事件

使用方法:创建此类的新实例,然后根据需要链式调用数据的方法或直接调用 log() 方法。示例(全部在一个中)

$activity = new ActivityLogger();
$activity->log('updated', 'MyModel updated', $myModel, BackendAuth::getUser(), ['maintenanceMode' => true], 'MyVendor.MyPlugin');

或(链式调用)

$activity = new ActivityLogger();
$activity->inLog('MyVendor.MyPlugin')
        ->for($myModel)
        ->by(BackendAuth::getUser())
        ->description('MyModel updated')
        ->properties(['maintenanceMode' => true])
        ->log('updated');

此外,通过 activity() 方法,ActivityLogger() 类在实现 LukeTowers.EasyAudit.Behaviors.TrackableModel 行为的模型上也是可用的。这使您能够做到以下

class Asset extends Model
{
    // ...

    public function updateInventory()
    {
        // ...
        $this->activity('updated_inventory')->description("The asset's inventory was updated")->log();
    }
}