diff options
author | Vincent Petry <vincent@nextcloud.com> | 2021-11-23 10:22:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-23 10:22:59 +0100 |
commit | 079c4c82d3e10040fc100c61b74907bf006a239a (patch) | |
tree | af2294a9cfa26579aa66320237564d92ef7c643a | |
parent | 129de6079e53e0ac9dbf9d7c25ec1670ae0ff572 (diff) | |
parent | 26330cb774bdd10c2c2f1beeb25581b53b256374 (diff) | |
download | nextcloud-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.php | 5 | ||||
-rw-r--r-- | apps/user_ldap/tests/Mapping/AbstractMappingTest.php | 4 |
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'); |