Merge pull request #16112 from nextcloud/backport/16101/stable16
[stable16] invalidates user when plugin reported deletion success
This commit is contained in:
commit
66dc4c9c72
3 changed files with 37 additions and 7 deletions
|
@ -1133,8 +1133,17 @@ class Group_LDAP extends BackendUtility implements \OCP\GroupInterface, IGroupLD
|
||||||
if ($this->groupPluginManager->implementsActions(GroupInterface::CREATE_GROUP)) {
|
if ($this->groupPluginManager->implementsActions(GroupInterface::CREATE_GROUP)) {
|
||||||
if ($dn = $this->groupPluginManager->createGroup($gid)) {
|
if ($dn = $this->groupPluginManager->createGroup($gid)) {
|
||||||
//updates group mapping
|
//updates group mapping
|
||||||
$this->access->dn2ocname($dn, $gid, false);
|
$uuid = $this->access->getUUID($dn, false);
|
||||||
$this->access->connection->writeToCache("groupExists".$gid, true);
|
if(is_string($uuid)) {
|
||||||
|
$this->access->mapAndAnnounceIfApplicable(
|
||||||
|
$this->access->getGroupMapper(),
|
||||||
|
$dn,
|
||||||
|
$gid,
|
||||||
|
$uuid,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
$this->access->connection->writeToCache("groupExists" . $gid, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $dn != null;
|
return $dn != null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -382,18 +382,21 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
|
||||||
*/
|
*/
|
||||||
public function deleteUser($uid) {
|
public function deleteUser($uid) {
|
||||||
if ($this->userPluginManager->canDeleteUser()) {
|
if ($this->userPluginManager->canDeleteUser()) {
|
||||||
return $this->userPluginManager->deleteUser($uid);
|
$status = $this->userPluginManager->deleteUser($uid);
|
||||||
|
if($status === false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$marked = $this->ocConfig->getUserValue($uid, 'user_ldap', 'isDeleted', 0);
|
$marked = $this->ocConfig->getUserValue($uid, 'user_ldap', 'isDeleted', 0);
|
||||||
if((int)$marked === 0) {
|
if((int)$marked === 0) {
|
||||||
\OC::$server->getLogger()->notice(
|
\OC::$server->getLogger()->notice(
|
||||||
'User '.$uid . ' is not marked as deleted, not cleaning up.',
|
'User '.$uid . ' is not marked as deleted, not cleaning up.',
|
||||||
array('app' => 'user_ldap'));
|
['app' => 'user_ldap']);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
\OC::$server->getLogger()->info('Cleaning up after user ' . $uid,
|
\OC::$server->getLogger()->info('Cleaning up after user ' . $uid,
|
||||||
array('app' => 'user_ldap'));
|
['app' => 'user_ldap']);
|
||||||
|
|
||||||
$this->access->getUserMapper()->unmap($uid); // we don't emit unassign signals here, since it is implicit to delete signals fired from core
|
$this->access->getUserMapper()->unmap($uid); // we don't emit unassign signals here, since it is implicit to delete signals fired from core
|
||||||
$this->access->userManager->invalidate($uid);
|
$this->access->userManager->invalidate($uid);
|
||||||
|
|
|
@ -342,9 +342,27 @@ class User_LDAPTest extends TestCase {
|
||||||
$this->pluginManager->expects($this->once())
|
$this->pluginManager->expects($this->once())
|
||||||
->method('deleteUser')
|
->method('deleteUser')
|
||||||
->with('uid')
|
->with('uid')
|
||||||
->willReturn('result');
|
->willReturn(true);
|
||||||
|
|
||||||
$this->assertEquals($this->backend->deleteUser('uid'),'result');
|
$this->config->expects($this->once())
|
||||||
|
->method('getUserValue')
|
||||||
|
->with('uid', 'user_ldap', 'isDeleted', 0)
|
||||||
|
->willReturn(1);
|
||||||
|
|
||||||
|
$mapper = $this->createMock(UserMapping::class);
|
||||||
|
$mapper->expects($this->once())
|
||||||
|
->method('unmap')
|
||||||
|
->with('uid');
|
||||||
|
|
||||||
|
$this->access->expects($this->atLeastOnce())
|
||||||
|
->method('getUserMapper')
|
||||||
|
->willReturn($mapper);
|
||||||
|
|
||||||
|
$this->userManager->expects($this->once())
|
||||||
|
->method('invalidate')
|
||||||
|
->with('uid');
|
||||||
|
|
||||||
|
$this->assertEquals(true, $this->backend->deleteUser('uid'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue