mirror of
https://github.com/suitenumerique/meet.git
synced 2026-08-04 16:07:43 +00:00
e17d42ebe3
The Pylint job was failing due to those TODO items. In our make lint command sequence, Pylint runs first. If it fails, Ruff won't run, which is quite inconvenient. I've extracted those TODOs into an issue for further review.
51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""
|
|
Utils functions used in the core app
|
|
"""
|
|
from typing import Optional
|
|
from uuid import uuid4
|
|
|
|
from django.conf import settings
|
|
|
|
from livekit.api import AccessToken, VideoGrants
|
|
|
|
|
|
def generate_token(room: str, user, username: Optional[str] = None) -> str:
|
|
"""Generate a Livekit access token for a user in a specific room.
|
|
|
|
Args:
|
|
room (str): The name of the room.
|
|
user (User): The user which request the access token.
|
|
username (Optional[str]): The username to be displayed in the room.
|
|
If none, a default value will be used.
|
|
|
|
Returns:
|
|
str: The LiveKit JWT access token.
|
|
"""
|
|
|
|
video_grants = VideoGrants(
|
|
room=room,
|
|
room_join=True,
|
|
can_publish_sources=[
|
|
"camera",
|
|
"microphone",
|
|
"screen_share",
|
|
"screen_share_audio",
|
|
],
|
|
)
|
|
|
|
token = AccessToken(
|
|
api_key=settings.LIVEKIT_CONFIGURATION["api_key"],
|
|
api_secret=settings.LIVEKIT_CONFIGURATION["api_secret"],
|
|
).with_grants(video_grants)
|
|
|
|
if user.is_anonymous:
|
|
token.with_identity(str(uuid4()))
|
|
default_username = "Anonymous"
|
|
else:
|
|
token.with_identity(user.sub)
|
|
default_username = str(user)
|
|
|
|
token.with_name(username or default_username)
|
|
|
|
return token.to_jwt()
|