diff --git a/lib/Controller/LocalController.php b/lib/Controller/LocalController.php index 96b1cd5ec..614428719 100644 --- a/lib/Controller/LocalController.php +++ b/lib/Controller/LocalController.php @@ -36,6 +36,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; @@ -273,10 +274,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 d69914a86..e91b00b2b 100644 --- a/lib/Service/FederatedUserService.php +++ b/lib/Service/FederatedUserService.php @@ -778,6 +778,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); }