luketowers/oc-easyaudit-plugin

该软件包已被废弃,不再维护。作者建议使用https://github.com/LukeTowers/wn-easyaudit-plugin软件包。

查看和管理 Winter CMS 项目中模型的安全日志

安装次数1,489

依赖关系: 0

推荐者: 0

安全: 0

星标: 17

关注者: 4

分支: 9

开放问题: 0

类型:winter-plugin

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

This package is auto-updated.

Last update: 2024-05-22 20:24:20 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');

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

class Asset extends Model
{
    // ...

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