solver-sdk
Version:
SDK for WorkAI API - AI-powered code analysis with WorkCoins billing system
89 lines • 3.18 kB
JavaScript
/**
* 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