Skip to content

Commit

Permalink
fix(provisioning_api): Show warning but do not fail when listing acco…
Browse files Browse the repository at this point in the history
…unts in case of users removed from backend but still in database

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
  • Loading branch information
susnux committed Apr 23, 2024
1 parent 9872755 commit c7fc655
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions apps/provisioning_api/lib/Controller/UsersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSException;
use OCP\AppFramework\OCS\OCSForbiddenException;
use OCP\AppFramework\OCS\OCSNotFoundException;
use OCP\AppFramework\OCSController;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\HintException;
Expand Down Expand Up @@ -196,7 +197,14 @@ public function getUsersDetails(string $search = '', ?int $limit = null, int $of
$usersDetails = [];
foreach ($users as $userId) {
$userId = (string) $userId;
$userData = $this->getUserData($userId);
try {
$userData = $this->getUserData($userId);
} catch (OCSNotFoundException $e) {
// We still want to return all other accounts, but this one was removed from the backends
// yet they are still in our database. Might be a LDAP remnant.
$userData = null;
$this->logger->warning('Still enabled account that is removed from backend, but still exists in Nextcloud database found', ['accountId' => $userId]);
}
// Do not insert empty entry
if ($userData !== null) {
$usersDetails[$userId] = $userData;
Expand Down Expand Up @@ -269,12 +277,19 @@ public function getDisabledUsersDetails(?int $limit = null, int $offset = 0): Da

$usersDetails = [];
foreach ($users as $userId) {
$userData = $this->getUserData($userId);
try {
$userData = $this->getUserData($userId);
} catch (OCSNotFoundException $e) {
// We still want to return all other accounts, but this one was removed from the backends
// yet they are still in our database. Might be a LDAP remnant.
$userData = null;
$this->logger->warning('Disabled account that was removed from backend, but still exists in Nextcloud database found', ['accountId' => $userId]);
}
// Do not insert empty entry
if ($userData !== null) {
$usersDetails[$userId] = $userData;
} else {
// Logged user does not have permissions to see this user
// Currently logged in user does not have permissions to see this user
// only showing its id
$usersDetails[$userId] = ['id' => $userId];
}
Expand Down

0 comments on commit c7fc655

Please sign in to comment.