soliantconsulting / entity-audit
Doctrine 2 实体审计
Requires
- php: >=5.3.0
- doctrine/doctrine-module: 0.8.*@dev
- doctrine/doctrine-orm-module: 0.8.x@dev
- zendframework/zendframework: >=2.1
Requires (Dev)
- phpunit/phpunit: 3.7.14
- zf-commons/zfc-user: 0.1.1
- zf-commons/zfc-user-doctrine-orm: dev-master
This package is not auto-updated.
Last update: 2022-04-30 02:00:13 UTC
README
Doctrine 2 的审计模块。需要 ZfcUser 将修订映射到用户。此模块创建一个实体来审计指定的目标实体,并跟踪对该目标实体的修订。
关于
此模块接受要审计的实体配置,并创建实体来审计它们以及修订跟踪实体。包括一个视图层来浏览审计记录。支持将路由回实时应用程序数据,视图助手允许您从给定的审计实体找到并浏览最新的审计记录。
修订将所有要审计的实体汇总到修订桶中。每个桶包含事务中每个审计记录的修订实体。
审计在一个自己的事务中完成,在执行了刷新之后。审计需要一个事务中的两次刷新来完成。
安装
使用 composer 需要 SoliantEntityAudit
php composer.phar require "soliantconsulting/entity-audit": "dev-master"
在 config/application.config.php
中启用 SoliantEntityAudit
return array( 'modules' => array( 'SoliantEntityAudit' ... ),
将 config/SoliantEntityAudit.global.php.dist
复制到 config/autoload/SoliantEntityAudit.global.php
并编辑设置
return array( 'audit' => array( 'datetimeFormat' => 'r', 'paginatorLimit' => 20, 'tableNamePrefix' => '', 'tableNameSuffix' => '_audit', 'revisionTableName' => 'Revision', 'revisionEntityTableName' => 'RevisionEntity', 'entities' => array( 'Db\Entity\Song' => array(), 'Db\Entity\Performer' => array(), ), ), );
使用 Doctrine 命令行工具更新数据库并创建审计表
vendor/bin/doctrine-module orm:schema-tool:update
术语
AuditEntity - 一个生成的实体,它映射到目标可审计实体。此存储在创建修订时目标实体的值。
Revision - 一个实体,它存储了单个实体管理器刷新的时间戳、注释和用户,该刷新包含可审计的实体。
RevisionEntity - 一个映射实体,它将 AuditEntity 映射到 Revision 并映射到目标可审计实体。此实体可以重新激活目标实体和 AuditEntity。此实体还存储了在目标被审计时的修订类型。INS、UPD 和 DEL 分别映射到插入、更新和删除。目标的主键存储为一个数组,可以用来重新激活目标。
目标实体 - 在审计配置中指定为字符串的可审计实体。
身份验证
您可以为映射修订到用户而配置自定义实体作为用户实体。您也可以配置自定义身份验证服务。默认情况下,这些映射到 ZfcUserDoctrineORM\Entity\User 和 zfcuser_auth_service。例如,要使用自定义实体和服务 Db\Entity\User 对于实体和 Zend\Authentication\AuthenticationService 将有效。
用户实体必须实现 getDisplayName、getId 和 getEmail。身份验证服务必须实现 hasIdentity 和 getIdentity,它返回当前用户实体的实例。
不使用接口,因此 ZfcUser 可以直接使用。
路由
要将路由映射到可审计实体,请在审计 => 实体配置中包含路由信息。
'Db\Entity\Song' => array(
'route' => 'default',
'defaults' => array(
'controller' => 'song',
'action' => 'detail',
),
),
从被审计实体中提取标识列的值,将这些值添加到默认值中,通过路由生成URL。
<?php
$options = $this->auditEntityOptions($revisionEntity->getTargetEntityClass());
$routeOptions = array_merge($options['defaults'], $revisionEntity->getEntityKeys());
?>
<a class="btn btn-info" href="<?=
$this->url($options['route'], $routeOptions);
?>">Data</a>
这是如何将您的应用程序映射到当前修订实体。
<a class="btn btn-info" href="<?=
$this->url('audit/revision-entity',
array(
'revisionEntityId' => $this->auditCurrentRevisionEntity($auditedEntity)->getId()
)
);
?>">
<i class="icon-list"></i>
</a>
视图辅助器
返回审计服务。这是一个辅助类。该类也可以通过依赖注入工厂auditService
访问。该类提供以下功能
-
setComment(); 设置下一个审计事务的注释。当设置注释时,它将在创建审计修订时读取并添加为注释。
-
getAuditEntityValues($auditEntity); 返回给定审计实体的所有字段及其值。不包括多对多关系。
-
getEntityIdentifierValues($entity); 返回实体的所有标识键及其值。
-
getRevisionEntities($entity) 返回给定审计实体或修订实体的所有修订实体。
$view->auditService();
```
Return the latest revision entity for the given entity.
```
$view->auditCurrentRevisionEntity($entity);
```
Return a paginator for all revisions of the specified class name.
```
$view->auditEntityPaginator($page, $entityClassName);
```
Return a paginator for all RevisionEntity entities for the given entity or
a paginator attached to every RevisionEntity for the given audited entity class.Pass an entity or a class name string.
```
$view->auditRevisionEntityPaginator($page, $entity);
```
Return a paginator for all Revision entities.
```
$view->auditRevisionPaginator($page);
```
Returns the routing information for an entity by class name
```
$view->auditEntityOptions($entityClassName);
```
Titling
-------
If an entity has a __toString method it will be used to title an audit entity limited to 256 characters and stored in the RevisionEntity.
Inspired by SimpleThings