From eb8e487d8102d391812ead7bf054b4c6c9a34fc7 Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio@bekerle.com>
Date: Thu, 20 Jan 2022 08:19:32 +0100
Subject: [PATCH] Add PersonUserItemPreEvent

---
 src/Event/PersonUserItemPreEvent.php | 30 ++++++++++++++++++++++++++++
 src/Service/LDAPApi.php              |  5 +++++
 2 files changed, 35 insertions(+)
 create mode 100644 src/Event/PersonUserItemPreEvent.php

diff --git a/src/Event/PersonUserItemPreEvent.php b/src/Event/PersonUserItemPreEvent.php
new file mode 100644
index 0000000..63097cb
--- /dev/null
+++ b/src/Event/PersonUserItemPreEvent.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Dbp\Relay\BasePersonConnectorLdapBundle\Event;
+
+use Adldap\Models\User;
+use Symfony\Contracts\EventDispatcher\Event;
+
+class PersonUserItemPreEvent extends Event
+{
+    public const NAME = 'dbp.relay.base_person_connector_ldap_bundle.person_user_item.pre';
+
+    protected $identifier;
+
+    public function __construct(string $identifier)
+    {
+        $this->identifier = $identifier;
+    }
+
+    public function getIdentifier(): string
+    {
+        return $this->identifier;
+    }
+
+    public function setIdentifier(string $identifier): void
+    {
+        $this->identifier = $identifier;
+    }
+}
diff --git a/src/Service/LDAPApi.php b/src/Service/LDAPApi.php
index 245d3d3..8b68ca6 100644
--- a/src/Service/LDAPApi.php
+++ b/src/Service/LDAPApi.php
@@ -18,6 +18,7 @@ use Dbp\Relay\BasePersonBundle\Entity\Person;
 use Dbp\Relay\BasePersonConnectorLdapBundle\Event\PersonForExternalServiceEvent;
 use Dbp\Relay\BasePersonConnectorLdapBundle\Event\PersonFromUserItemPostEvent;
 use Dbp\Relay\BasePersonConnectorLdapBundle\Event\PersonFromUserItemPreEvent;
+use Dbp\Relay\BasePersonConnectorLdapBundle\Event\PersonUserItemPreEvent;
 use Dbp\Relay\CoreBundle\API\UserSessionInterface;
 use Dbp\Relay\CoreBundle\Exception\ApiError;
 use Dbp\Relay\CoreBundle\Helpers\Tools as CoreTools;
@@ -219,6 +220,10 @@ class LDAPApi implements LoggerAwareInterface, ServiceSubscriberInterface
 
     public function getPersonUserItem(string $identifier): ?User
     {
+        $preEvent = new PersonUserItemPreEvent($identifier);
+        $this->dispatcher->dispatch($preEvent, PersonUserItemPreEvent::NAME);
+        $identifier = $preEvent->getIdentifier();
+
         try {
             $provider = $this->getProvider();
             $builder = $this->getCachedBuilder($provider);
-- 
GitLab