From 987097ff6a558b2636d0c611f13d5039e73b0361 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 28 Feb 2020 08:40:44 +0000 Subject: [PATCH] Add username of user to log. #330 --- config/cmb.services.yaml | 2 + config/resq.services.yaml | 2 + config/services.yaml | 2 + src/EventListener/EntityListener.php | 66 ++++++++++++++++++- .../EntityListener/UserEntityListener.php | 18 ++++- 5 files changed, 86 insertions(+), 4 deletions(-) diff --git a/config/cmb.services.yaml b/config/cmb.services.yaml index eb691569..f3051cff 100644 --- a/config/cmb.services.yaml +++ b/config/cmb.services.yaml @@ -240,6 +240,8 @@ services: entity: 'App\Entity\JobOrder' App\EventListener\EntityListener\UserEntityListener: + arguments: + ["@security.token_storage"] tags: - name: 'doctrine.orm.entity_listener' event: 'postPersist' diff --git a/config/resq.services.yaml b/config/resq.services.yaml index 76948088..3a3c9e68 100644 --- a/config/resq.services.yaml +++ b/config/resq.services.yaml @@ -239,6 +239,8 @@ services: entity: 'App\Entity\JobOrder' App\EventListener\EntityListener\UserEntityListener: + arguments: + ["@security.token_storage"] tags: - name: 'doctrine.orm.entity_listener' event: 'postPersist' diff --git a/config/services.yaml b/config/services.yaml index e2e43641..ee9a444e 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -260,6 +260,8 @@ services: entity: 'App\Entity\JobOrder' App\EventListener\EntityListener\UserEntityListener: + arguments: + ["@security.token_storage"] tags: - name: 'doctrine.orm.entity_listener' event: 'postPersist' diff --git a/src/EventListener/EntityListener.php b/src/EventListener/EntityListener.php index 9cb997b0..e8b72e77 100644 --- a/src/EventListener/EntityListener.php +++ b/src/EventListener/EntityListener.php @@ -2,6 +2,8 @@ namespace App\EventListener; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; + use Doctrine\Common\Persistence\Event\LifecycleEventArgs; use Doctrine\ORM\Event\OnFlushEventArgs; @@ -9,17 +11,35 @@ use DateTime; abstract class EntityListener { + protected $token_storage; + + public function __construct(TokenStorage $token_storage) + { + $this->token_storage = $token_storage; + } public function postPersist($object, LifecycleEventArgs $args) { - error_log('Created object'); + $event_time = new DateTime(); + $log_time = $event_time->format('Y-m-d H:i:s'); + + // get user for logging + $user = $this->token_storage->getToken()->getUser(); + $username = $user->getUsername(); + + error_log($log_time . ' - ' . $username . ' - Created object'); } public function onFlush(OnFlushEventArgs $args) { + // get date time of event for logging $event_time = new DateTime(); $log_time = $event_time->format('Y-m-d H:i:s'); + // get user for logging + $user = $this->token_storage->getToken()->getUser(); + $username = $user->getUsername(); + $em = $args->getEntityManager(); $unit_of_work = $em->getUnitOfWork(); $deleted_entities = $unit_of_work->getScheduledEntityDeletions(); @@ -27,6 +47,7 @@ abstract class EntityListener $updated_collections = $unit_of_work->getScheduledCollectionUpdates(); $deleted_collections = $unit_of_work->getScheduledCollectionDeletions(); + // get updated fields. This doesn't include lists of other entities. foreach ($updated_entities as $updated_entity) { $changeset = $unit_of_work->getEntityChangeSet($updated_entity); @@ -39,17 +60,56 @@ abstract class EntityListener $old_value = $values[0]; $new_value = $values[1]; - error_log($log_time . ' - Changed ' . $field . ' from ' . $old_value . ' to ' . $new_value); + error_log($log_time . ' - ' . $username . ' - Changed ' . $field . ' from ' . $old_value . ' to ' . $new_value); } } + // get deleted objects foreach ($deleted_entities as $deleted_entity) { $deleted_id = $deleted_entity->getID(); - error_log($log_time . ' - Deleted object with id ' . $deleted_id); + error_log($log_time . ' - ' . $username . ' - Deleted object with id ' . $deleted_id); } + // TODO: find a way to get the list of "old" items, compare with list of updated items + // so we can find out what was added/removed + /* + foreach ($updated_collections as $updated_collection) + { + error_log('in updated_collection snippet'); + + foreach ($updated_collection as $item) + { + if ($item instanceof Role) + { + error_log('updated_collection item ' . $item->getName()); + } + if ($item instanceof Hub) + { + error_log('updated_collection item ' . $item->getName()); + } + } + + } + + foreach ($deleted_collections as $deleted_collection) + { + error_log('in deleted_collection snippet'); + + foreach ($deleted_collection as $item) + { + if ($item instanceof Role) + { + error_log('deleted_collection item ' . $item->getName()); + } + if ($item instanceof Hub) + { + error_log('deleted_collection item ' . $item->getName()); + } + } + } */ + } /* diff --git a/src/EventListener/EntityListener/UserEntityListener.php b/src/EventListener/EntityListener/UserEntityListener.php index aef21dbe..54121bd3 100644 --- a/src/EventListener/EntityListener/UserEntityListener.php +++ b/src/EventListener/EntityListener/UserEntityListener.php @@ -2,6 +2,8 @@ namespace App\EventListener\EntityListener; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; + use Doctrine\Common\Persistence\Event\LifecycleEventArgs; use Doctrine\ORM\Event\OnFlushEventArgs; @@ -15,11 +17,25 @@ use DateTime; class UserEntityListener extends EntityListener { + protected $token_storage; + + public function __construct(TokenStorage $token_storage) + { + $this->token_storage = $token_storage; + + parent::__construct($token_storage); + } + public function postPersist($user, LifecycleEventArgs $args) { $event_time = new DateTime(); $log_time = $event_time->format('Y-m-d H:i:s'); - error_log($log_time . ' - Created user with id ' . $user->getID() . ' and username ' . $user->getUsername()); + + // get user for logging + $user = $this->token_storage->getToken()->getUser(); + $username = $user->getUsername(); + + error_log($log_time . ' - ' . $username . ' - Created user with id ' . $user->getID() . ' and username ' . $user->getUsername()); } //public function onFlush(OnFlushEventArgs $args)