From 62ebc957b93cadda9b57f8ec643f40f732e2921c Mon Sep 17 00:00:00 2001 From: jan Walther Date: Tue, 30 Jun 2020 14:22:34 +0200 Subject: [PATCH] use normal Pimcore login when LDAP connection is not available --- src/EventListener/LoginListener.php | 41 +++++++++++++++++++---------- src/Service/Ldap.php | 6 ++++- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/EventListener/LoginListener.php b/src/EventListener/LoginListener.php index ace5f3b..31f3160 100644 --- a/src/EventListener/LoginListener.php +++ b/src/EventListener/LoginListener.php @@ -17,21 +17,24 @@ use Alep\LdapBundle\Service\Ldap; use Pimcore\Event\Admin\Login\LoginCredentialsEvent; use Pimcore\Event\Admin\Login\LoginFailedEvent; +use Psr\Log\LoggerInterface; class LoginListener { - /** - * @var Ldap - */ + /** @var Ldap */ private $ldap; + /** @var LoggerInterface */ + private $logger; + /** * LoginListener constructor. * @param Ldap $ldap */ - public function __construct(Ldap $ldap) + public function __construct(Ldap $ldap, LoggerInterface $logger) { $this->ldap = $ldap; + $this->logger = $logger; } /** @@ -55,11 +58,16 @@ public function onAdminLoginCredentials(LoginCredentialsEvent $event) return; } - //Authenticate via ldap - $ldapUser = $this->ldap->authenticate($username, $password); + try { + //Authenticate via ldap + $ldapUser = $this->ldap->authenticate($username, $password); - //Update Pimcore user - $this->ldap->updatePimcoreUser($username, $password, $ldapUser); + //Update Pimcore user + $this->ldap->updatePimcoreUser($username, $password, $ldapUser); + } catch (\Exception $e) { + $this->logger->warning($e->getMessage()); + return; + } } /** @@ -76,13 +84,18 @@ public function onAdminLoginFailed(LoginFailedEvent $event) return; } - //authenticate via ldap - $ldapUser = $this->ldap->authenticate($username, $password); + try { + //authenticate via ldap + $ldapUser = $this->ldap->authenticate($username, $password); - //Update Pimcore user - $pimcoreUser = $this->ldap->updatePimcoreUser($username, $password, $ldapUser); + //Update Pimcore user + $pimcoreUser = $this->ldap->updatePimcoreUser($username, $password, $ldapUser); - //Update session - $event->setUser($pimcoreUser); + //Update session + $event->setUser($pimcoreUser); + } catch (\Exception $e) { + $this->logger->warning($e->getMessage()); + return; + } } } diff --git a/src/Service/Ldap.php b/src/Service/Ldap.php index 0859f8e..548010d 100644 --- a/src/Service/Ldap.php +++ b/src/Service/Ldap.php @@ -104,7 +104,11 @@ public function __construct( $this->mapper = $mapper; $this->logger = $logger; - $this->ldap->bind($searchDn, $searchPassword); + try { + $this->ldap->bind($searchDn, $searchPassword); + } catch(ConnectionException $e) { + $this->logger->alert('Invalid LDAP credentials'); + } } /**