aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <vincent@nextcloud.com>2021-11-23 10:22:59 +0100
committerGitHub <noreply@github.com>2021-11-23 10:22:59 +0100
commit079c4c82d3e10040fc100c61b74907bf006a239a (patch)
treeaf2294a9cfa26579aa66320237564d92ef7c643a
parent129de6079e53e0ac9dbf9d7c25ec1670ae0ff572 (diff)
parent26330cb774bdd10c2c2f1beeb25581b53b256374 (diff)
downloadnextcloud-server-079c4c82d3e10040fc100c61b74907bf006a239a.tar.gz
nextcloud-server-079c4c82d3e10040fc100c61b74907bf006a239a.zip
Merge pull request #29836 from nextcloud/fix/user_ldap-deletion
Make sure mapping cache is cleared when deleting a user
-rw-r--r--apps/user_ldap/lib/Mapping/AbstractMapping.php5
-rw-r--r--apps/user_ldap/tests/Mapping/AbstractMappingTest.php4
2 files changed, 9 insertions, 0 deletions
diff --git a/apps/user_ldap/lib/Mapping/AbstractMapping.php b/apps/user_ldap/lib/Mapping/AbstractMapping.php
index ae881f9dc17..85fc91590fb 100644
--- a/apps/user_ldap/lib/Mapping/AbstractMapping.php
+++ b/apps/user_ldap/lib/Mapping/AbstractMapping.php
@@ -379,6 +379,11 @@ abstract class AbstractMapping {
DELETE FROM `' . $this->getTableName() . '`
WHERE `owncloud_name` = ?');
+ $dn = array_search($name, $this->cache);
+ if ($dn !== false) {
+ unset($this->cache[$dn]);
+ }
+
return $this->modify($statement, [$name]);
}
diff --git a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php b/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
index cc2b36fb7df..9c25b1d9af6 100644
--- a/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
+++ b/apps/user_ldap/tests/Mapping/AbstractMappingTest.php
@@ -127,8 +127,12 @@ abstract class AbstractMappingTest extends \Test\TestCase {
[$mapper, $data] = $this->initTest();
foreach ($data as $entry) {
+ $fdnBefore = $mapper->getDNByName($entry['name']);
$result = $mapper->unmap($entry['name']);
+ $fdnAfter = $mapper->getDNByName($entry['name']);
$this->assertTrue($result);
+ $this->assertSame($fdnBefore, $entry['dn']);
+ $this->assertFalse($fdnAfter);
}
$result = $mapper->unmap('notAnEntry');