mirror of
https://github.com/nextcloud/server.git
synced 2026-07-15 04:51:46 -04:00
Merge pull request #50481 from nextcloud/backport/45364/stable31
[stable31] fix(user_ldap): Do not map groups we do not know if they match filter
This commit is contained in:
commit
3604f0b0e6
2 changed files with 11 additions and 4 deletions
|
|
@ -436,10 +436,11 @@ class Access extends LDAPUtility {
|
|||
*
|
||||
* @param string $fdn the dn of the group object
|
||||
* @param string $ldapName optional, the display name of the object
|
||||
* @param bool $autoMapping Should the group be mapped if not yet mapped
|
||||
* @return string|false with the name to use in Nextcloud, false on DN outside of search DN
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function dn2groupname($fdn, $ldapName = null) {
|
||||
public function dn2groupname($fdn, $ldapName = null, bool $autoMapping = true) {
|
||||
//To avoid bypassing the base DN settings under certain circumstances
|
||||
//with the group support, check whether the provided DN matches one of
|
||||
//the given Bases
|
||||
|
|
@ -447,7 +448,7 @@ class Access extends LDAPUtility {
|
|||
return false;
|
||||
}
|
||||
|
||||
return $this->dn2ocname($fdn, $ldapName, false);
|
||||
return $this->dn2ocname($fdn, $ldapName, false, autoMapping:$autoMapping);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -477,10 +478,11 @@ class Access extends LDAPUtility {
|
|||
* @param bool $isUser optional, whether it is a user object (otherwise group assumed)
|
||||
* @param bool|null $newlyMapped
|
||||
* @param array|null $record
|
||||
* @param bool $autoMapping Should the group be mapped if not yet mapped
|
||||
* @return false|string with with the name to use in Nextcloud
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function dn2ocname($fdn, $ldapName = null, $isUser = true, &$newlyMapped = null, ?array $record = null) {
|
||||
public function dn2ocname($fdn, $ldapName = null, $isUser = true, &$newlyMapped = null, ?array $record = null, bool $autoMapping = true) {
|
||||
static $intermediates = [];
|
||||
if (isset($intermediates[($isUser ? 'user-' : 'group-') . $fdn])) {
|
||||
return false; // is a known intermediate
|
||||
|
|
@ -499,6 +501,11 @@ class Access extends LDAPUtility {
|
|||
return $ncName;
|
||||
}
|
||||
|
||||
if (!$autoMapping) {
|
||||
/* If no auto mapping, stop there */
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($isUser) {
|
||||
$nameAttribute = strtolower($this->connection->ldapUserDisplayName);
|
||||
$filter = $this->connection->ldapUserFilter;
|
||||
|
|
|
|||
|
|
@ -1178,7 +1178,7 @@ class Group_LDAP extends ABackend implements GroupInterface, IGroupLDAP, IGetDis
|
|||
continue;
|
||||
}
|
||||
$name = $item[$this->access->connection->ldapGroupDisplayName][0] ?? null;
|
||||
$gid = $this->access->dn2groupname($dn, $name);
|
||||
$gid = $this->access->dn2groupname($dn, $name, false);
|
||||
if (!$gid) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue