import { request } from './client'; /** Провайдер входа, включённый на инстансе (AGENT.md 7.1, Фаза 7). */ export interface OAuthProvider { id: string; name: string; } export interface OAuthProvidersResponse { providers: OAuthProvider[]; /** Адрес возврата: его оператор прописывает в настройках приложения. */ redirect_url: string; } export function fetchOAuthProviders(signal?: AbortSignal): Promise { return request( '/auth/oauth/providers', signal === undefined ? {} : { signal }, ); } /** * Ссылка входа через провайдера. Браузер уходит по ней целиком (обычная * навигация): cookie сессии выставляет сервер после возврата. */ export function oauthStartURL(provider: string, redirect?: string): string { const query = new URLSearchParams(); if (redirect !== undefined && redirect !== '') { query.set('redirect', redirect); } const suffix = query.toString(); return `/api/v1/auth/oauth/${encodeURIComponent(provider)}/start${suffix === '' ? '' : `?${suffix}`}`; } /** Код ошибки возврата (`?oauth_error=`), если вход через провайдера не удался. */ export function oauthErrorCode(value: string | null): string | null { if (value === null || value === '') { return null; } return value; }