codewiser / journalism

该包已被弃用且不再维护。作者建议使用 owen-it/laravel-auditing 包。

审计任何事件

1.2.5 2020-05-11 07:15 UTC

This package is auto-updated.

Last update: 2023-11-23 14:21:21 UTC


README

记录任何(模型或自定义)事件以存储和回顾历史

服务提供者

将包添加到您的应用服务提供者中 config/app.php 文件。

'providers' => [
    
    /*
     * Laravel Framework Service Providers...
     */
    Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
    Illuminate\Auth\AuthServiceProvider::class,
    ...
    
    /**
     * Third Party Service Providers...
     */
    Codewiser\Journalism\JournalServiceProvider::class,

],

迁移

将包迁移发布到您的应用中。请在终端中运行以下命令。

php artisan vendor:publish --provider="Codewiser\Journalism\JournalServiceProvider"

并运行迁移。

php artisan migrate

作为特性使用

Journal 添加到您的模型。

class Post extends Model {
    use Codewiser\Journalism\Traits\Journalised;
}

目前,每个 Eloquent 事件都将被记录。

您还可以记录任何想要的事件。

$post = Post::first();

// Record an event
$post->journalise('my-event');

您可以在日志中添加任何想要的负载。

$post->journalise('my-event', /* jsonable data */);

或作为观察者使用

class AppServiceProvider extends ServiceProvider 
{
    public function boot()
    {
        Post::observe(Codewiser\Journalism\Observers\Journalist::class);
    }
}

认证订阅者

包提供记录认证事件的机制。

class EventServiceProvider extends ServiceProvider
{
    protected $subscribe = [
        Codewiser\Journalism\Subscribers\Concierge::class,
    ];
}

订阅者检测 auth/registerauth/loginauth/logoutauth/reset-passwordauth/fail 事件。

自定义日志记录

让我们想象一下,每次用户想要更新帖子时,他必须解释,为什么进行了更改。

class Controller
{
    public function update(Request $request, $id)
    {
        $post = Post::find($id);
        $post->journalise('comment', $request->get('comment'));
        $post->update($request->all());
    }
}

访问历史

您有权访问完整的历史记录,包括用户解释。

foreach ($post->journal as $record) {
    echo "At {$record->created_at} 
          user {$record->user['name']} 
          makes {$record->event}\n";
    
    echo "Payload was: " . json_encode($record->payload);
}