jmitech/filament-auditing

Filament Laravel 审计插件。

dev-main 2023-11-09 18:52 UTC

This package is auto-updated.

Last update: 2024-09-09 20:27:46 UTC


README

这是一个用于 Laravel Auditing 包的 Filament 插件。此插件包含一个审计关系管理器,您可以将其添加到 Filament 资源中。

此包提供了一个 Filament 资源管理器,在查看和编辑页面显示所有审计,并允许恢复审计。

安装

注意 此插件使用 Laravel Auditing 包。首先安装并配置此包。

您可以通过 composer 安装插件

composer require tapp/filament-auditing:"^3.0"

注意 对于 Filament 2.x,请检查 2.x 分支

您可以使用以下命令发布视图文件

php artisan vendor:publish --tag="filament-auditing-views"

您可以使用以下命令发布翻译文件

php artisan vendor:publish --tag="filament-auditing-translations"

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="filament-auditing-config"

这是已发布配置文件的内容

<?php

return [

    'audits_sort' => [
        'column' => 'created_at',
        'direction' => 'desc',
    ],
    
    'audits_extend' => [
        // 'url' => [
        //     'class' => \Filament\Tables\Columns\TextColumn::class,
        //     'methods' => [
        //         'sortable',
        //         'searchable' => true,
        //         'default' => 'N/A'
        //     ]
        // ],
    ]

];

可以使用 audits_sort 修改审计表上的默认排序。

用法

要将审计表显示在您的 Filament 资源中,只需在资源的 getRelations 方法中添加 AuditsRelationManager::class

use Tapp\FilamentAuditing\RelationManagers\AuditsRelationManager;

public static function getRelations(): array
{
    return [
        // ...
        AuditsRelationManager::class,
    ];
}

就这样,您已经设置好了!

如果您访问您的资源并编辑一些数据,您现在将在编辑和查看页面上看到审计表。

扩展列

如果您需要在 AuditsRelationManager 中添加一个表格中尚未存在的列,您可以在配置中使用以下示例中指定的格式进行添加,它将被添加到表构建器之前。要添加的列的名称是包含有关类其他信息的关联数组的键,如下所示。必须添加列的类实例,但如果不需要,可以省略方法或添加到需要的位置。

<?php

return [

    'audits_extend' => [
       'url' => [
           'class' => \Filament\Tables\Columns\TextColumn::class, // required
           'methods' => [
               'sortable',
               'default' => 'NIL',
            ],
        ],
    ]

];

请在此信息添加到配置后,运行此命令以使更改生效。

php artisan optimize

目前不支持需要两个参数的方法。

权限

默认注册了两个权限,允许访问

  • audit:查看审计
  • restoreAudit:恢复审计

您可以通过添加带有 auditrestoreAudit 的策略来覆盖这些权限。

事件触发

当恢复审计时,会触发 auditRestored 事件,因此您可以使用 $listeners 属性注册一个监听器,在审计恢复后执行一些额外的代码。

例如:在资源的编辑页面

protected $listeners = [
    'auditRestored',
];

public function auditRestored()
{
    // your code
}

事件监听器

审计关系管理器会监听 updateAuditsRelationManager 事件以刷新审计表。

因此,您可以在资源编辑页面(例如:在 PostResource 的编辑页面 -> app/Filament/Resources/PostResource/Pages/EditPost.php)中更新表单时触发此事件

public function updated()
{
    $this->dispatch('updateAuditsRelationManager');
}