diff options
Diffstat (limited to 'apps/user_ldap/lib')
-rw-r--r-- | apps/user_ldap/lib/Access.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/Group_LDAP.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/lib/User_LDAP.php | 22 |
3 files changed, 22 insertions, 4 deletions
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index 6a074bbed2e..5db9dddf8fa 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -635,7 +635,7 @@ class Access extends LDAPUtility { return false; } - protected function mapAndAnnounceIfApplicable( + public function mapAndAnnounceIfApplicable( AbstractMapping $mapper, string $fdn, string $name, diff --git a/apps/user_ldap/lib/Group_LDAP.php b/apps/user_ldap/lib/Group_LDAP.php index 5b25979b2d2..d9059b2372f 100644 --- a/apps/user_ldap/lib/Group_LDAP.php +++ b/apps/user_ldap/lib/Group_LDAP.php @@ -110,7 +110,7 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD $members = $this->access->connection->getFromCache($cacheKeyMembers); if(!is_null($members)) { $this->cachedGroupMembers[$gid] = $members; - $isInGroup = in_array($userDN, $members); + $isInGroup = in_array($userDN, $members, true); $this->access->connection->writeToCache($cacheKey, $isInGroup); return $isInGroup; } diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php index ada07aa53a9..5e06547533d 100644 --- a/apps/user_ldap/lib/User_LDAP.php +++ b/apps/user_ldap/lib/User_LDAP.php @@ -622,8 +622,26 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn if ($this->userPluginManager->implementsActions(Backend::CREATE_USER)) { if ($dn = $this->userPluginManager->createUser($username, $password)) { if (is_string($dn)) { - //updates user mapping - $this->access->dn2ocname($dn, $username, true); + // the NC user creation work flow requires a know user id up front + $uuid = $this->access->getUUID($dn, true); + if(is_string($uuid)) { + $this->access->mapAndAnnounceIfApplicable( + $this->access->getUserMapper(), + $dn, + $username, + $uuid, + true + ); + $this->access->cacheUserExists($username); + } else { + \OC::$server->getLogger()->warning( + 'Failed to map created LDAP user with userid {userid}, because UUID could not be determined', + [ + 'app' => 'user_ldap', + 'userid' => $username, + ] + ); + } } else { throw new \UnexpectedValueException("LDAP Plugin: Method createUser changed to return the user DN instead of boolean."); } |