From ef39f6fc82aaaa860a79a5ef48fa7bb81d5b05e2 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 5 Jun 2020 16:24:17 +0200 Subject: Bring back session expiration It was dropped wih Room v2 API after the participant list was dropped completly there Signed-off-by: Joas Schilling --- lib/Controller/RoomController.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lib') diff --git a/lib/Controller/RoomController.php b/lib/Controller/RoomController.php index b9f055129..956b9f5b9 100644 --- a/lib/Controller/RoomController.php +++ b/lib/Controller/RoomController.php @@ -843,10 +843,15 @@ class RoomController extends AEnvironmentAwareController { return new DataResponse([], Http::STATUS_FORBIDDEN); } + $maxPingAge = $this->timeFactory->getTime() - 100; $participants = $this->room->getParticipantsLegacy(); $results = []; foreach ($participants['users'] as $userId => $participant) { + if ($participant['sessionId'] !== '0' && $participant['lastPing'] <= $maxPingAge) { + $this->room->leaveRoom($userId); + } + $user = $this->userManager->get((string) $userId); if (!$user instanceof IUser) { continue; @@ -864,7 +869,12 @@ class RoomController extends AEnvironmentAwareController { } $guestNames = $this->guestManager->getNamesBySessionHashes($guestSessions); + $cleanGuests = false; foreach ($participants['guests'] as $participant) { + if ($participant['lastPing'] <= $maxPingAge) { + $cleanGuests = true; + } + $sessionHash = sha1($participant['sessionId']); $results[] = array_merge($participant, [ 'userId' => '', @@ -872,6 +882,10 @@ class RoomController extends AEnvironmentAwareController { ]); } + if ($cleanGuests) { + $this->room->cleanGuestParticipants(); + } + return new DataResponse($results); } -- cgit v1.2.3