setRoomPasscode

expérimentaldepuis 0.1.0@legba-core/realtime

setRoomPasscode

Ce que ça fait

Hache et stocke un code d’accès pour une salle, sans écraser les métadonnées déjà posées par l’application.

Signature

function setRoomPasscode(roomService: RoomService, roomName: string, passcode: string): Promise<void>

Paramètres

NomTypeRequisDéfautDescription
roomServiceRoomServiceouiInstance de createRoomService
roomNamestringouiDoit désigner une salle existante
passcodestringouiCode en clair, non vide

Retour

Promise<void>.

Erreurs

CodeQuandComment corriger
LEGBA_INVALID_ROOM_REQUESTroomName ou passcode vide/blancFournir des valeurs non vides
LEGBA_ROOM_NOT_FOUNDLa salle n’existe pasCréer la salle d’abord (createRoom)

Exemple minimal

import { createRoomService, setRoomPasscode } from "@legba-core/realtime";

const rooms = createRoomService({ serverUrl, apiKey, apiSecret });
await rooms.createRoom({ roomName: "salle-privee" });
await setRoomPasscode(rooms, "salle-privee", "1234");

Exemple complet

import {
  createRoomService,
  setRoomPasscode,
  verifyRoomPasscode,
  createAccessToken,
  LegbaRoomError,
} from "@legba-core/realtime";

const rooms = createRoomService({ serverUrl, apiKey, apiSecret });
await rooms.createRoom({ roomName: "salle-privee", metadata: { topic: "réunion privée" } });
await setRoomPasscode(rooms, "salle-privee", "1234");

// Plus tard, côté flux d'entrée d'un participant :
try {
  await verifyRoomPasscode(rooms, "salle-privee", codeFourniParLUtilisateur);
  const { token } = await createAccessToken({ apiKey, apiSecret, roomName: "salle-privee", identity, role: "participant" });
} catch (error) {
  if (error instanceof LegbaRoomError) {
    // code invalide ou manquant — refuser l'accès
  }
}

Pièges

  • Appeler RoomService.updateRoomMetadata directement sur une salle protégée efface la protection. updateRoomMetadata remplace tout l’objet metadata (jamais de fusion) : setRoomPasscode/clearRoomPasscode lisent d’abord les métadonnées existantes pour ne rien écraser, mais un appel direct à updateRoomMetadata en dehors de ces deux fonctions ne le fait pas — c’est un compromis assumé, pas une régression à corriger. Toujours passer par setRoomPasscode/clearRoomPasscode pour toucher à la protection d’une salle.
  • Appeler setRoomPasscode deux fois de suite remplace le code précédent — l’ancien code n’est plus valide après.
  • verifyRoomPasscode/createAccessToken restent deux appels séparés : setRoomPasscode ne touche jamais à token.ts.

Voir aussi