Add AuditableEntity interface. #330
This commit is contained in:
parent
b743d202fb
commit
d7806a2664
4 changed files with 53 additions and 34 deletions
8
src/Entity/AuditableEntity.php
Normal file
8
src/Entity/AuditableEntity.php
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
interface AuditableEntity
|
||||
{
|
||||
public function fieldDump();
|
||||
}
|
||||
|
|
@ -14,7 +14,7 @@ use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
|||
* @UniqueEntity("id")
|
||||
* @UniqueEntity("name")
|
||||
*/
|
||||
class Role extends BaseRole
|
||||
class Role extends BaseRole implements AuditableEntity
|
||||
{
|
||||
/**
|
||||
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles", fetch="EXTRA_LAZY")
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ use Serializable;
|
|||
* @UniqueEntity("username")
|
||||
* @UniqueEntity("email")
|
||||
*/
|
||||
class User extends BaseUser implements Serializable
|
||||
class User extends BaseUser implements Serializable, AuditableEntity
|
||||
{
|
||||
/**
|
||||
* @ORM\Id
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ use Doctrine\ORM\Event\OnFlushEventArgs;
|
|||
|
||||
use InfluxDB\Point;
|
||||
|
||||
use App\Entity\AuditableEntity;
|
||||
|
||||
class EntityListener
|
||||
{
|
||||
protected $token_storage;
|
||||
|
|
@ -37,17 +39,20 @@ class EntityListener
|
|||
|
||||
if (isset($this->entities[$object_class]))
|
||||
{
|
||||
// get user id for logging
|
||||
$user = $this->token_storage->getToken()->getUser();
|
||||
$user_id = $user->getID();
|
||||
if ($object instanceof AuditableEntity)
|
||||
{
|
||||
// get user id for logging
|
||||
$user = $this->token_storage->getToken()->getUser();
|
||||
$user_id = $user->getID();
|
||||
|
||||
// get entity name
|
||||
//$obj_class = preg_replace('/.*\\\\/', '', $object_class);
|
||||
// get entity name
|
||||
//$obj_class = preg_replace('/.*\\\\/', '', $object_class);
|
||||
|
||||
// get fields of object
|
||||
$fields = $object->fieldDump();
|
||||
// get fields of object
|
||||
$fields = $object->fieldDump();
|
||||
|
||||
$this->writeToLogDB($object_class, $object->getID(), 'create', $fields, $user_id);
|
||||
$this->writeToLogDB($object_class, $object->getID(), 'create', $fields, $user_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -78,28 +83,31 @@ class EntityListener
|
|||
$entity_class = get_class($updated_entity);
|
||||
if (isset($this->entities[$entity_class]))
|
||||
{
|
||||
// get entity name
|
||||
//$obj_class = preg_replace('/.*\\\\/', '', $entity_class);
|
||||
|
||||
$changeset = $unit_of_work->getEntityChangeSet($updated_entity);
|
||||
|
||||
$entity_fields = array_keys($changeset);
|
||||
foreach ($entity_fields as $field)
|
||||
if ($updated_entity instanceof AuditableEntity)
|
||||
{
|
||||
$values = $changeset[$field];
|
||||
// get entity name
|
||||
//$obj_class = preg_replace('/.*\\\\/', '', $entity_class);
|
||||
|
||||
$old_value = $values[0];
|
||||
$new_value = $values[1];
|
||||
$changeset = $unit_of_work->getEntityChangeSet($updated_entity);
|
||||
|
||||
$field_changes[$field] = [
|
||||
'old_value' => $values[0],
|
||||
'new_value' => $values[1],
|
||||
];
|
||||
$entity_fields = array_keys($changeset);
|
||||
foreach ($entity_fields as $field)
|
||||
{
|
||||
$values = $changeset[$field];
|
||||
|
||||
$old_value = $values[0];
|
||||
$new_value = $values[1];
|
||||
|
||||
$field_changes[$field] = [
|
||||
'old_value' => $values[0],
|
||||
'new_value' => $values[1],
|
||||
];
|
||||
}
|
||||
|
||||
$fields = json_encode($field_changes);
|
||||
|
||||
$this->writeToLogDB($entity_class, $updated_entity->getID(), 'update', $fields, $user_id);
|
||||
}
|
||||
|
||||
$fields = json_encode($field_changes);
|
||||
|
||||
$this->writeToLogDB($entity_class, $updated_entity->getID(), 'update', $fields, $user_id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -110,15 +118,18 @@ class EntityListener
|
|||
$entity_class = get_class($deleted_entity);
|
||||
if (isset($this->entities[$entity_class]))
|
||||
{
|
||||
// get entity name
|
||||
//$obj_class = preg_replace('/.*\\\\/', '', get_class($deleted_entity));
|
||||
if ($deleted_entity instanceof AuditableEntity)
|
||||
{
|
||||
// get entity name
|
||||
//$obj_class = preg_replace('/.*\\\\/', '', get_class($deleted_entity));
|
||||
|
||||
$deleted_id = $deleted_entity->getID();
|
||||
$deleted_id = $deleted_entity->getID();
|
||||
|
||||
// get fields of deleted entity
|
||||
$fields = $deleted_entity->fieldDump();
|
||||
// get fields of deleted entity
|
||||
$fields = $deleted_entity->fieldDump();
|
||||
|
||||
$this->writeToLogDB($entity_class, $deleted_id, 'delete', $fields, $user_id);
|
||||
$this->writeToLogDB($entity_class, $deleted_id, 'delete', $fields, $user_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue