UNPKG

solver-sdk

Version:

SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system

89 lines 3.18 kB
/** * API для работы с авторизацией и управлением токенами * * @example * ```typescript * // Revoke access token * await sdk.auth.revokeToken(accessToken); * * // Revoke refresh token * await sdk.auth.revokeToken(refreshToken); * * // Cookie-based logout * await sdk.auth.logout(); * ``` */ export class AuthApi { constructor(httpClient) { this.httpClient = httpClient; } /** * Отзыв OAuth токена (access или refresh) * * Реализует RFC 7009 (Token Revocation) * * @param {string} token Access token или refresh token для отзыва * @returns {Promise<{ ok: boolean }>} Результат операции * * @throws {Error} При ошибке сети или сервера * * @example * ```typescript * // Revoke access token * await sdk.auth.revokeToken(session.accessToken); * * // Revoke refresh token * await sdk.auth.revokeToken(session.refreshToken); * * // Revoke both * await Promise.all([ * sdk.auth.revokeToken(session.accessToken), * sdk.auth.revokeToken(session.refreshToken) * ]); * ``` * * @remarks * - Токен помечается как `revokedAt = now()` в базе данных * - После отзыва токен больше нельзя использовать * - API вызовы с отозванным токеном вернут 401 * - Refresh с отозванным refresh token не сработает * - Безопасно вызывать повторно для уже отозванного токена */ async revokeToken(token) { if (!token || typeof token !== 'string') { throw new Error('Token is required and must be a string'); } const response = await this.httpClient.post('/api/v1/oauth/revoke', { token }); return response || { ok: true }; } /** * Выход из системы (cookie-based сессия) * * Используется для веб-приложений с cookie-авторизацией. * Для OAuth-приложений (Desktop, Mobile) используйте `revokeToken()`. * * @returns {Promise<{ ok: boolean }>} Результат операции * * @throws {Error} При ошибке сети или сервера * * @example * ```typescript * // Web app logout * await sdk.auth.logout(); * * // OAuth app logout (recommended) * await sdk.auth.revokeToken(session.accessToken); * await sdk.auth.revokeToken(session.refreshToken); * ``` * * @remarks * - Очищает session cookie * - Логирует событие logout в user activity * - Для OAuth-клиентов используйте `revokeToken()` вместо этого метода */ async logout() { const response = await this.httpClient.post('/api/v1/auth/logout', {}); return response || { ok: true }; } } //# sourceMappingURL=auth-api.js.map