diff --git a/src/backend/core/api/serializers.py b/src/backend/core/api/serializers.py index 252f8556..82d04cbe 100644 --- a/src/backend/core/api/serializers.py +++ b/src/backend/core/api/serializers.py @@ -1,6 +1,5 @@ """Client serializers for the Meet core app.""" -from django.conf import settings from django.utils.translation import gettext_lazy as _ from rest_framework import serializers @@ -130,16 +129,11 @@ class RoomSerializer(serializers.ModelSerializer): del output["configuration"] if role is not None or instance.access_level == models.RoomAccessLevel.PUBLIC: - slug = f"{instance.id!s}" + room_id = f"{instance.id!s}" username = request.query_params.get("username", None) - - output["livekit"] = { - "url": settings.LIVEKIT_CONFIGURATION["url"], - "room": slug, - "token": utils.generate_token( - room=slug, user=request.user, username=username - ), - } + output["livekit"] = utils.generate_livekit_config( + room_id=room_id, user=request.user, username=username + ) output["is_administrable"] = is_admin diff --git a/src/backend/core/utils.py b/src/backend/core/utils.py index 304b5de7..55eab530 100644 --- a/src/backend/core/utils.py +++ b/src/backend/core/utils.py @@ -81,3 +81,21 @@ def generate_token(room: str, user, username: Optional[str] = None) -> str: ) return token.to_jwt() + + +def generate_livekit_config(room_id: str, user, username: str) -> dict: + """Generate LiveKit configuration for room access. + + Args: + room_id: Room identifier + user: User instance requesting access + username: Display name in room + + Returns: + dict: LiveKit configuration with URL, room and access token + """ + return { + "url": settings.LIVEKIT_CONFIGURATION["url"], + "room": room_id, + "token": generate_token(room=room_id, user=user, username=username), + }