Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCôme Chilliet <come.chilliet@nextcloud.com>2021-11-22 19:38:13 +0300
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2022-02-21 18:48:07 +0300
commite5022206933b24fc5741a102b04cad05c4e9a60a (patch)
tree590958174d94c77ccfa0a06d6612d145a38aad78
parent6201d4c15751efd4601bd2d38a553c84644a9a78 (diff)
Check LDAP upon user deletion instead of refusing based on cached information
This should avoid having to wait for background job to run after deleting a user in LDAP before being able to delete it in Nextcloud. Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
-rw-r--r--apps/user_ldap/lib/User_LDAP.php28
1 files changed, 21 insertions, 7 deletions
diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php
index 04d0c0efb05..b1d4da9514d 100644
--- a/apps/user_ldap/lib/User_LDAP.php
+++ b/apps/user_ldap/lib/User_LDAP.php
@@ -390,13 +390,27 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn
}
}
- $marked = $this->ocConfig->getUserValue($uid, 'user_ldap', 'isDeleted', 0);
- if ((int)$marked === 0) {
- $this->logger->notice(
- 'User '.$uid . ' is not marked as deleted, not cleaning up.',
- ['app' => 'user_ldap']
- );
- return false;
+ $marked = (int)$this->ocConfig->getUserValue($uid, 'user_ldap', 'isDeleted', 0);
+ if ($marked === 0) {
+ try {
+ $user = $this->access->userManager->get($uid);
+ if (($user instanceof User) && !$this->userExistsOnLDAP($uid, true)) {
+ $user->markUser();
+ $marked = 1;
+ }
+ } catch (\Exception $e) {
+ $this->logger->debug(
+ $e->getMessage(),
+ ['app' => 'user_ldap', 'exception' => $e]
+ );
+ }
+ if ($marked === 0) {
+ $this->logger->notice(
+ 'User '.$uid . ' is not marked as deleted, not cleaning up.',
+ ['app' => 'user_ldap']
+ );
+ return false;
+ }
}
$this->logger->info('Cleaning up after user ' . $uid,
['app' => 'user_ldap']);