@@ -177,7 +177,7 @@ public function verify(FederatedEvent $event): void {
177177 $ initiatorHelper = new MemberHelper ($ initiator );
178178 $ initiatorHelper ->mustBeModerator ();
179179
180- $ member = $ this ->generateMember ($ circle , $ member );
180+ $ member = $ this ->generateMember ($ event , $ circle , $ member );
181181
182182 $ event ->setMembers ([$ member ]);
183183 $ event ->setOutcome ($ member ->jsonSerialize ());
@@ -328,7 +328,7 @@ public function result(FederatedEvent $event, array $results): void {
328328 * @throws UserTypeNotFoundException
329329 * @throws RequestBuilderException
330330 */
331- protected function generateMember (Circle $ circle , Member $ member ): Member {
331+ protected function generateMember (FederatedEvent $ event , Circle $ circle , Member $ member ): Member {
332332 try {
333333 if ($ member ->getSingleId () !== '' ) {
334334 $ userId = $ member ->getSingleId () . '@ ' . $ member ->getInstance ();
@@ -366,6 +366,10 @@ protected function generateMember(Circle $circle, Member $member): Member {
366366 $ member ->importFromIFederatedUser ($ federatedUser );
367367 $ member ->setCircleId ($ circle ->getSingleId ());
368368 $ member ->setCircle ($ circle );
369+
370+ $ this ->confirmPatron ($ event , $ member );
371+ $ member ->setNoteObj ('invitedBy ' , $ member ->getInvitedBy ());
372+
369373 $ this ->manageMemberStatus ($ circle , $ member );
370374
371375 $ this ->circleService ->confirmCircleNotFull ($ circle );
@@ -387,6 +391,7 @@ protected function generateMember(Circle $circle, Member $member): Member {
387391 * @param Member $member
388392 *
389393 * @throws FederatedItemBadRequestException
394+ * @throws RequestBuilderException
390395 */
391396 private function manageMemberStatus (Circle $ circle , Member $ member ) {
392397 try {
@@ -428,6 +433,28 @@ private function manageMemberStatus(Circle $circle, Member $member) {
428433 }
429434
430435
436+ /**
437+ * @param FederatedEvent $event
438+ * @param Member $member
439+ *
440+ * @throws FederatedItemBadRequestException
441+ * @throws FederatedUserException
442+ * @throws RequestBuilderException
443+ */
444+ private function confirmPatron (FederatedEvent $ event , Member $ member ): void {
445+ if (!$ member ->hasInvitedBy ()) {
446+ throw new FederatedItemBadRequestException (StatusCode::$ MEMBER_ADD [129 ], 129 );
447+ }
448+
449+ $ patron = $ member ->getInvitedBy ();
450+ if ($ patron ->getInstance () !== $ event ->getOrigin ()) {
451+ throw new FederatedItemBadRequestException (StatusCode::$ MEMBER_ADD [130 ], 130 );
452+ }
453+
454+ $ this ->federatedUserService ->confirmLocalSingleId ($ patron );
455+ }
456+
457+
431458 /**
432459 * @param Member $member
433460 *
0 commit comments