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
| Nom | Type | Requis | Défaut | Description |
|---|---|---|---|---|
roomService | RoomService | oui | — | Instance de createRoomService |
roomName | string | oui | — | Doit désigner une salle existante |
passcode | string | oui | — | Code en clair, non vide |
Retour
Promise<void>.
Erreurs
| Code | Quand | Comment corriger |
|---|---|---|
LEGBA_INVALID_ROOM_REQUEST | roomName ou passcode vide/blanc | Fournir des valeurs non vides |
LEGBA_ROOM_NOT_FOUND | La salle n’existe pas | Cré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.updateRoomMetadatadirectement sur une salle protégée efface la protection.updateRoomMetadataremplace tout l’objet metadata (jamais de fusion) :setRoomPasscode/clearRoomPasscodelisent d’abord les métadonnées existantes pour ne rien écraser, mais un appel direct àupdateRoomMetadataen dehors de ces deux fonctions ne le fait pas — c’est un compromis assumé, pas une régression à corriger. Toujours passer parsetRoomPasscode/clearRoomPasscodepour toucher à la protection d’une salle. - Appeler
setRoomPasscodedeux fois de suite remplace le code précédent — l’ancien code n’est plus valide après. verifyRoomPasscode/createAccessTokenrestent deux appels séparés :setRoomPasscodene touche jamais àtoken.ts.