jippi/cakephp-audit-log

此包已被废弃,不再维护。未建议替代包。

一个用于 CakePHP 的日志插件。在变更完成后,它会拍摄完整对象的快照,并在更新操作的情况下记录每个单独的更改。

安装数: 1,528

依赖者: 0

建议者: 0

安全: 0

星星: 9

观察者: 4

分支: 78

开放问题: 0

类型:cakephp-plugin

dev-master 2015-11-24 20:02 UTC

This package is auto-updated.

Last update: 2024-06-14 05:45:33 UTC


README

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

此行为在两个级别上跟踪更改。在更改完成后,它会拍摄完整对象的快照,并在更新操作的情况下记录每个单独的更改。

功能

  • 支持 CakePHP 2.0。感谢 @jasonsnider。
  • 跟踪对象快照以及单个属性更改。
  • 允许将每个修订记录附加到更改的责任方——通常是用户。
  • 允许开发者忽略指定属性的更改。默认情况下,忽略名为 createdupdatedmodified 的属性,但可以重写这些值。
  • 处理 HABTM 关联的更改。
  • 完全兼容 PolymorphicBehavior
  • 不需要或依赖于显式模型修订(AuditLog)和增量(AuditLogDeltas)的存在。

安装

CakePHP >= 2.0

作为存档

  1. 点击项目描述旁边的 下载 按钮即可。
  2. 将存档解压缩到 app/Plugin/AuditLog

作为子模块

  1. $ git submodule add git@github.com:jippi/cakephp-audit-log.git <path_to>/app/Plugin/AuditLog
  2. $ git submodule init
  3. $ git submodule update

要创建表,可以使用模式外壳。要创建表,请执行

cd <path_to>/app/
chmod +x ./Console/cake
./Console/cake schema create -p AuditLog

CakePHP 1.3.x

对于与 CakePHP 1.3.x 一起使用,请确保使用 1.3 分支的代码,并遵循该 README 文件中的说明。

下一步

  1. 在您的 CakePHP 应用程序数据库上运行 install.sql 文件。这将创建存储每个对象的更改历史的 auditsaudit_deltas 表。

  2. 如果需要,创建一个 currentUser() 方法。

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

    currentUser() 方法必须对每个希望跟踪更改来源的模型都可用,因此我建议创建 CakePHP 的 app_model.php 文件的副本并添加该方法。保持 DRY,对吧?

    如果核心 Auth 组件正在使用,则存储更改集来源可能有点棘手,因为用户数据在行为所在的模型层中并不容易获取。一个选项是将这些数据从控制器中转发。一种方法是在 AppController::beforeFilter() 中包含以下代码

     if( !empty( $this->data ) && empty( $this->data[$this->Auth->userModel] ) ) {
       $this->data[$this->Auth->userModel] = $this->currentUser();
     }
    

    此行为期望 currentUser() 方法返回一个包含 id 键的关联数组。从上面的例子继续,以下代码可能出现在 AppModel

     protected function currentUser() {
       $user = $this->Auth->user();
    
       return $user[$this->Auth->userModel]; # Return the complete user array
     }
    
  3. 将行为附加到任何所需的模型并配置。

用法

AuditableBehavior应用于模型与应用于任何其他CakePHP行为基本相同。此行为确实提供了一些配置选项

`ignore`
一个属性名称数组,当在deltas表中创建记录时将忽略这些属性。
`habtm`
一个模型数组,这些模型与活动模型具有HABTM关系,并且其更改应与模型一起监控。如果HABTM模型本身可审计,则不要将其包含在此处。此选项用于仅相对于活动模型跟踪更改的相关模型。

语法

# Simple syntax accepting default options
class Task extends AppModel {
  public $actsAs = array( 'AuditLog.Auditable' );

  #
  # Additional model code.
  #
}

# Syntax with explicit options
class Task extends AppModel {
  public $actsAs = array(
    'AuditLog.Auditable' => array(
      'ignore' => array( 'active', 'name', 'updated' ),
      'habtm'  => array( 'Type', 'Project' )
    )
  );

  #
  # Additional model code.
  #
}

限制

  • 主分支与CakePHP <=1.3.x不兼容。如果您需要与这些版本兼容,请从1.3分支安装代码,并遵循该README中的说明。

许可

此代码受MIT许可许可。

注意

请随时提交错误报告或在票据中建议改进。您可以分叉此项目并自行改进。欢迎贡献。