verifyRoomPasscode

expérimentaldepuis 0.1.0@legba-core/realtime

verifyRoomPasscode

Ce que ça fait

Valide un code d’accès avant toute émission de jeton. Une salle non protégée réussit toujours, peu importe le code fourni — elle reste ouverte comme aujourd’hui.

Signature

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

Paramètres

NomTypeRequisDéfautDescription
roomServiceRoomServiceouiInstance de createRoomService
roomNamestringouiDoit désigner une salle existante
passcodestringnonCode fourni par l’utilisateur ; omis/vide traité comme manquant

Retour

Promise<void> — résout si la salle n’est pas protégée, ou si le code fourni correspond. Ne rend jamais d’information sur la validité autrement qu’en résolvant ou en levant.

Erreurs

CodeQuandComment corriger
LEGBA_INVALID_ROOM_REQUESTroomName vide/blancFournir un nom de salle valide
LEGBA_ROOM_NOT_FOUNDLa salle n’existe pasVérifier le nom de salle
LEGBA_ROOM_INVALID_PASSCODELa salle est protégée et le code est manquant ou incorrectRedemander le code à l’utilisateur — le message ne révèle jamais le code ni le hash

Exemple minimal

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

const rooms = createRoomService({ serverUrl, apiKey, apiSecret });
await verifyRoomPasscode(rooms, "salle-privee", codeFourniParLUtilisateur);
// ne lève pas -> le code est valide (ou la salle n'est pas protégée)

Exemple complet

Voir setRoomPasscode.

Pièges

  • Reste séparé de createAccessToken : c’est l’application qui appelle verifyRoomPasscode puis createAccessToken elle-même — aucune fusion des deux, token.ts ne dépend jamais de RoomService.
  • Appeler plusieurs fois avec le bon code réussit à chaque fois : aucun verrouillage après un essai précédent, aucun état de tentative conservé.
  • La comparaison du code est en temps constant (timingSafeEqual) : pas de raccourci qui laisserait fuir des informations par le temps de réponse.

Voir aussi