diff --git a/lib/Controller/LocalController.php b/lib/Controller/LocalController.php index 0127fce5f..9de4e6771 100644 --- a/lib/Controller/LocalController.php +++ b/lib/Controller/LocalController.php @@ -16,6 +16,7 @@ use OCA\Circles\Exceptions\FederatedUserNotFoundException; use OCA\Circles\Exceptions\FrontendException; use OCA\Circles\Exceptions\InvalidIdException; +use OCA\Circles\Exceptions\MemberNotFoundException; use OCA\Circles\Exceptions\RequestBuilderException; use OCA\Circles\Exceptions\SingleCircleNotFoundException; use OCA\Circles\Model\FederatedUser; @@ -253,10 +254,13 @@ public function membersAdd(string $circleId, array $members): DataResponse { $federatedUsers = []; foreach ($members as $member) { // TODO: generate Multiple FederatedUsers using a single SQL request - $federatedUsers[] = $this->federatedUserService->generateFederatedUser( - $this->get('id', $member), - $this->getInt('type', $member) - ); + try { + $federatedUsers[] = $this->federatedUserService->generateFederatedUser( + $this->get('id', $member), + $this->getInt('type', $member) + ); + } catch (MemberNotFoundException) { + } } $result = $this->memberService->addMembers($circleId, $federatedUsers); diff --git a/lib/Service/FederatedUserService.php b/lib/Service/FederatedUserService.php index 55996c5b7..71b646f83 100644 --- a/lib/Service/FederatedUserService.php +++ b/lib/Service/FederatedUserService.php @@ -758,6 +758,10 @@ public function getFederatedUser(string $federatedId, int $type = Member::TYPE_S * @return FederatedUser */ public function generateFederatedUser(string $federatedId, int $type = 0): FederatedUser { + if ($federatedId === '') { + throw new MemberNotFoundException('empty user id'); + } + if ($type === Member::TYPE_MAIL) { $federatedId = strtolower($federatedId); }