diff options
Diffstat (limited to 'apps/user_ldap/lib/Access.php')
-rw-r--r-- | apps/user_ldap/lib/Access.php | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index 198fb478fed..2395da1ec90 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -44,6 +44,7 @@ namespace OCA\User_LDAP; use OC\HintException; +use OC\Hooks\PublicEmitter; use OCA\User_LDAP\Exceptions\ConstraintViolationException; use OCA\User_LDAP\User\IUserTools; use OCA\User_LDAP\User\Manager; @@ -52,6 +53,7 @@ use OCA\User_LDAP\Mapping\AbstractMapping; use OC\ServerNotAvailableException; use OCP\IConfig; +use OCP\IUserManager; use OCP\Util; /** @@ -95,13 +97,16 @@ class Access extends LDAPUtility implements IUserTools { private $helper; /** @var IConfig */ private $config; + /** @var IUserManager */ + private $ncUserManager; public function __construct( Connection $connection, ILDAPWrapper $ldap, Manager $userManager, Helper $helper, - IConfig $config + IConfig $config, + IUserManager $ncUserManager ) { parent::__construct($ldap); $this->connection = $connection; @@ -109,6 +114,7 @@ class Access extends LDAPUtility implements IUserTools { $this->userManager->setLdapAccess($this); $this->helper = $helper; $this->config = $config; + $this->ncUserManager = $ncUserManager; } /** @@ -605,11 +611,13 @@ class Access extends LDAPUtility implements IUserTools { // outside of core user management will still cache the user as non-existing. $originalTTL = $this->connection->ldapCacheTTL; $this->connection->setConfiguration(array('ldapCacheTTL' => 0)); - if(($isUser && $intName !== '' && !\OC::$server->getUserManager()->userExists($intName)) + if(($isUser && $intName !== '' && !$this->ncUserManager->userExists($intName)) || (!$isUser && !\OC::$server->getGroupManager()->groupExists($intName))) { if($mapper->map($fdn, $intName, $uuid)) { $this->connection->setConfiguration(array('ldapCacheTTL' => $originalTTL)); - \OC::$server->getUserManager()->emit('\OC\User', 'assignedUserId', [$intName]); + if($this->ncUserManager instanceof PublicEmitter) { + $this->ncUserManager->emit('\OC\User', 'assignedUserId', [$intName]); + } $newlyMapped = true; return $intName; } @@ -618,7 +626,9 @@ class Access extends LDAPUtility implements IUserTools { $altName = $this->createAltInternalOwnCloudName($intName, $isUser); if(is_string($altName) && $mapper->map($fdn, $altName, $uuid)) { - \OC::$server->getUserManager()->emit('\OC\User', 'assignedUserId', [$intName]); + if($this->ncUserManager instanceof PublicEmitter) { + $this->ncUserManager->emit('\OC\User', 'assignedUserId', [$intName]); + } $newlyMapped = true; return $altName; } @@ -740,7 +750,7 @@ class Access extends LDAPUtility implements IUserTools { //20 attempts, something else is very wrong. Avoids infinite loop. while($attempts < 20){ $altName = $name . '_' . rand(1000,9999); - if(!\OC::$server->getUserManager()->userExists($altName)) { + if(!$this->ncUserManager->userExists($altName)) { return $altName; } $attempts++; |