yokles/cakephp-audit-log

一个简单的计时器。

安装: 6

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:cakephp-plugins

dev-master 2016-06-15 04:02 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:36:39 UTC


README

CakePHP的日志插件。包含的AuditableBehavior为附加到每个模型实例创建审计历史。

行为在两个层面上跟踪更改。在更改完成后,它会对完全填充的对象进行快照,并在更新操作的情况下记录每个单独的更改。

功能

  • 支持CakePHP 3.0。感谢@rochamarcelo
  • 允许将每个修订记录附加到更改的责任来源——通常是用户。
  • 允许开发者忽略指定属性的更改。默认情况下,createdupdatedmodified属性会被忽略,但这些值可以被覆盖。
  • 处理HABTM关联的更改。
  • 不要求或依赖显式模型修订(AuditLogs)和差异(AuditLogDeltas)的存在。

安装

Composer

  $ composer install jippi/cakephp-audit-log

手动

  1. 点击项目描述旁边的“下载”按钮。
  2. 将存档解压到src/plugins/AuditLog

启用插件

在应用程序的bootstrap.php(即src/config/bootstrap.php)中添加以下行Plugin::load('AuditLog')

迁移

在您可以使用该插件之前,您需要存储修订(AuditLogs)和差异(AuditLogDeltas)的表。要创建表,您可以使用CakePHP 3.0迁移shell。下面是如何操作的

  1. 将迁移从/path/to/plugin/config/Migrations复制到您的src/config/Migrations/目录

如果您通过composer安装,请查看vendor/jippi/cakephp-audit-log/config/Migrations,如果您手动安装了插件,则应在plugins/AuditLog/config/Migrations下查找

  1. 使用以下命令运行迁移
  $ bin/cake migrations migrate

确保您有权在数据库中创建表,否则这可能不会正常工作 ;)

使用

AuditableBehavior应用于模型基本上与将任何其他CakePHP行为应用于模型相同。

基本用法

    # Simple syntax accepting default options
    class TasksTable extends Table {

      public function initialize(array $config)
      {
        $this->addBehavior('AuditLog.Auditable');
      }

    }

配置

行为提供了一些配置选项

`id`
如果您的Table类不遵循CakePHP约定,则模型主键属性的名称
`ignore`
要忽略的属性名称数组,在记录创建在差异表中时。
`habtm`
具有与操作模型HABTM关系并应与模型一起监控其更改的模型数组。如果HABTM模型本身是可审计的,则不要将其包括在此处。此选项用于仅相对于操作模型跟踪更改的相关模型。
    # Syntax with explicit options
    class TasksTable extends Table {

      public function initialize(array $config)
      {
        $this->addBehavior('AuditLog.Auditable', [
          'id' => 'task_id',
          'ignore' => ['active', 'name', 'updated'],
          'habtm'  => ['Type', 'Project']
        ]);
      }

    }

设置审计来源

AuditableBehavior 可选地允许每个更改集由一个“源”所“拥有”——通常是负责更改的用户。由于用户和认证模型差异很大,该行为支持一个回调方法,该方法应返回要存储为更改源的值(如果有的话)。

currentUser() 方法必须对所有希望跟踪更改源的表都可用。

插件中包含一个实用特性,您可以在您的表上使用它来从当前请求中获取当前用户。您可以使用它如下

    use AuditLog\Model\Table\CurrentUserTrait;

    class TasksTable extends Table {

      use CurrentUserTrait;

      public function initialize(array $config)
      {
        $this->addBehavior('AuditLog.Auditable');
      }

    }

然后,您的表将附加一个 currentUser() 函数,该函数返回一个数组,其值填充如下

    [
        'id'          => Auth::User('username'),
        'description' => Auth::User('username'),
        'url'         => Request::here, // using the current request
        'ip'          => env('REMOTE_ADDR'),
    ]

限制

  • 该项目是为 CakePHP 3.0 设计的,并且与 CakePHP <= 2.x 不兼容。如果您需要与这些版本兼容,请使用原始的 CakePHP 2.x AuditLog 插件

许可

此代码受 MIT 许可证 的许可。

注释

请随意提交错误报告或提出改进建议,或者通过分叉此项目并自行改进。欢迎贡献。