feat(auth): проверка устройств на входе — запрос доступа и превью камеры

Отключаемый модуль (instance_settings.device_check, дефолт выключен):
запрос доступа к камере/микрофону на LoginPage и в карточке "Как вас
зовут?" (JoinPage), живое зеркальное превью и кнопки вкл/выкл камеры и
микрофона там же. На JoinPage кнопки определяют, с чем гость войдёт в
конференцию (RoomPage.LiveKitRoom audio/video вместо жёстких false) —
на LoginPage только пре-авторизуют разрешение, без UI (карточка ведёт
в лобби, применить выбор некуда). Вход в комнату по умолчанию, как и
раньше, с выключенными микрофоном/камерой.

Публичный GET /api/v1/public/settings отдаёт флаг модуля обеим
страницам до аутентификации.
This commit is contained in:
2026-08-09 18:09:10 +03:00
parent ba01548088
commit 7ee68b17ee
19 changed files with 713 additions and 7 deletions

View File

@@ -0,0 +1,13 @@
/** Публичные настройки инстанса — доступны без аутентификации (`GET /public/settings`). */
import { apiRequest } from '@/api/client'
/** Флаги, нужные странице логина и гостевой карточке входа до аутентификации. */
export interface PublicSettingsOut {
/** Проверка устройств на входе (сессия 33) — запрос доступа к камере/микрофону
* и превью камеры на LoginPage/JoinPage. */
device_check_enabled: boolean
}
export async function getPublicSettings(): Promise<PublicSettingsOut> {
return apiRequest<PublicSettingsOut>('/public/settings', { skipAuthRefresh: true })
}