From 22c1ac4abe8435d975725e512b0ed2dd3de02ec8 Mon Sep 17 00:00:00 2001 From: Eldad Fux Date: Mon, 10 May 2021 00:20:57 +0300 Subject: [PATCH] Updated user status on deleted membership --- app/controllers/api/teams.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 32853e2bea..8c5a769624 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -613,6 +613,12 @@ App::delete('/v1/teams/:teamId/memberships/:inviteId') throw new Exception('Team IDs don\'t match', 404); } + $user = $dbForInternal->getDocument('users', $membership->getAttribute('userId')); + + if ($user->isEmpty()) { + throw new Exception('User not found', 404); + } + $team = $dbForInternal->getDocument('teams', $teamId); if (empty($team->getId())) { @@ -623,6 +629,23 @@ App::delete('/v1/teams/:teamId/memberships/:inviteId') throw new Exception('Failed to remove membership from DB', 500); } + $memberships = $user->getAttribute('memberships', []); + + foreach ($memberships as $key => $child) { + /** @var Document $child */ + + if ($inviteId == $child->getId()) { + unset($memberships[$key]); + break; + } + } + + Authorization::disable(); + + $dbForInternal->updateDocument('users', $user->getId(), $user->setAttribute('memberships', $memberships)); + + Authorization::reset(); + if ($membership->getAttribute('confirm')) { // Count only confirmed members $team = $dbForInternal->updateDocument('teams', $team->getId(), $team->setAttribute('sum', $team->getAttribute('sum', 0) - 1)); }