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
| Nom | Type | Requis | Défaut | Description |
|---|---|---|---|---|
roomService | RoomService | oui | — | Instance de createRoomService |
roomName | string | oui | — | Doit désigner une salle existante |
passcode | string | non | — | Code 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
| Code | Quand | Comment corriger |
|---|---|---|
LEGBA_INVALID_ROOM_REQUEST | roomName vide/blanc | Fournir un nom de salle valide |
LEGBA_ROOM_NOT_FOUND | La salle n’existe pas | Vérifier le nom de salle |
LEGBA_ROOM_INVALID_PASSCODE | La salle est protégée et le code est manquant ou incorrect | Redemander 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 appelleverifyRoomPasscodepuiscreateAccessTokenelle-même — aucune fusion des deux,token.tsne dépend jamais deRoomService. - 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.