From 429db14a00b893d55f2d4e5126c2fc68dfa6cc99 Mon Sep 17 00:00:00 2001
From: Côme Chilliet <come.chilliet@nextcloud.com>
Date: Mon, 24 Apr 2023 16:03:40 +0200
Subject: Fix multiple LDAP configuration support by fixing AccessFactory
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It must not reuse the same OCA\User_LDAP\User\Manager instance for
 several Access instances.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
---
 apps/user_ldap/lib/AccessFactory.php |  6 ++----
 apps/user_ldap/lib/Jobs/Sync.php     | 19 ++-----------------
 2 files changed, 4 insertions(+), 21 deletions(-)

(limited to 'apps')

diff --git a/apps/user_ldap/lib/AccessFactory.php b/apps/user_ldap/lib/AccessFactory.php
index f0820f1444f..72797ef1626 100644
--- a/apps/user_ldap/lib/AccessFactory.php
+++ b/apps/user_ldap/lib/AccessFactory.php
@@ -26,11 +26,11 @@ namespace OCA\User_LDAP;
 use OCA\User_LDAP\User\Manager;
 use OCP\IConfig;
 use OCP\IUserManager;
+use OCP\Server;
 use Psr\Log\LoggerInterface;
 
 class AccessFactory {
 	private ILDAPWrapper $ldap;
-	private Manager $userManager;
 	private Helper $helper;
 	private IConfig $config;
 	private IUserManager $ncUserManager;
@@ -38,13 +38,11 @@ class AccessFactory {
 
 	public function __construct(
 		ILDAPWrapper $ldap,
-		Manager $userManager,
 		Helper $helper,
 		IConfig $config,
 		IUserManager $ncUserManager,
 		LoggerInterface $logger) {
 		$this->ldap = $ldap;
-		$this->userManager = $userManager;
 		$this->helper = $helper;
 		$this->config = $config;
 		$this->ncUserManager = $ncUserManager;
@@ -55,7 +53,7 @@ class AccessFactory {
 		return new Access(
 			$connection,
 			$this->ldap,
-			$this->userManager,
+			Server::get(Manager::class),
 			$this->helper,
 			$this->config,
 			$this->ncUserManager,
diff --git a/apps/user_ldap/lib/Jobs/Sync.php b/apps/user_ldap/lib/Jobs/Sync.php
index 1ba24af5399..f8a9b14d02f 100644
--- a/apps/user_ldap/lib/Jobs/Sync.php
+++ b/apps/user_ldap/lib/Jobs/Sync.php
@@ -31,7 +31,6 @@ use OCA\User_LDAP\ConnectionFactory;
 use OCA\User_LDAP\Helper;
 use OCA\User_LDAP\LDAP;
 use OCA\User_LDAP\Mapping\UserMapping;
-use OCA\User_LDAP\User\Manager;
 use OCP\AppFramework\Utility\ITimeFactory;
 use OCP\BackgroundJob\TimedJob;
 use OCP\IAvatarManager;
@@ -48,8 +47,6 @@ class Sync extends TimedJob {
 	protected $ldapHelper;
 	/** @var  LDAP */
 	protected $ldap;
-	/** @var  Manager */
-	protected $userManager;
 	/** @var UserMapping */
 	protected $mapper;
 	/** @var  IConfig */
@@ -69,9 +66,8 @@ class Sync extends TimedJob {
 	/** @var AccessFactory */
 	protected $accessFactory;
 
-	public function __construct(Manager  $userManager, ITimeFactory $time) {
+	public function __construct(ITimeFactory $time) {
 		parent::__construct($time);
-		$this->userManager = $userManager;
 		$this->setInterval(
 			(int)\OC::$server->getConfig()->getAppValue(
 				'user_ldap',
@@ -350,10 +346,6 @@ class Sync extends TimedJob {
 			$this->notificationManager = \OC::$server->getNotificationManager();
 		}
 
-		if (isset($argument['userManager'])) {
-			$this->userManager = $argument['userManager'];
-		}
-
 		if (isset($argument['mapper'])) {
 			$this->mapper = $argument['mapper'];
 		} else {
@@ -369,14 +361,7 @@ class Sync extends TimedJob {
 		if (isset($argument['accessFactory'])) {
 			$this->accessFactory = $argument['accessFactory'];
 		} else {
-			$this->accessFactory = new AccessFactory(
-				$this->ldap,
-				$this->userManager,
-				$this->ldapHelper,
-				$this->config,
-				$this->ncUserManager,
-				$this->logger
-			);
+			$this->accessFactory = \OCP\Server::get(AccessFactory::class);
 		}
 	}
 }
-- 
cgit v1.2.3