veza/apps/web/src/services/tokenStorage.ts

61 lines
1.8 KiB
TypeScript
Raw Normal View History

/**
* TokenStorage - Service de gestion du stockage des tokens dans localStorage
* T0169: Service simple pour stocker, récupérer et supprimer les tokens d'authentification
*/
const ACCESS_TOKEN_KEY = 'veza_access_token';
const REFRESH_TOKEN_KEY = 'veza_refresh_token';
/**
* Classe TokenStorage pour gérer le stockage des tokens
* T0169: Service de gestion du stockage tokens avec localStorage
*/
export class TokenStorage {
/**
* Stocke les tokens d'authentification dans localStorage
* T0169: Stocke access token et refresh token
* @param accessToken - Token d'accès JWT
* @param refreshToken - Token de rafraîchissement
*/
static setTokens(accessToken: string, refreshToken: string): void {
localStorage.setItem(ACCESS_TOKEN_KEY, accessToken);
localStorage.setItem(REFRESH_TOKEN_KEY, refreshToken);
}
/**
* Récupère le token d'accès depuis localStorage
* T0169: Récupère access token
* @returns Token d'accès ou null si non trouvé
*/
static getAccessToken(): string | null {
return localStorage.getItem(ACCESS_TOKEN_KEY);
}
/**
* Récupère le token de rafraîchissement depuis localStorage
* T0169: Récupère refresh token
* @returns Token de rafraîchissement ou null si non trouvé
*/
static getRefreshToken(): string | null {
return localStorage.getItem(REFRESH_TOKEN_KEY);
}
/**
* Supprime tous les tokens de localStorage
* T0169: Supprime tokens (logout)
*/
static clearTokens(): void {
localStorage.removeItem(ACCESS_TOKEN_KEY);
localStorage.removeItem(REFRESH_TOKEN_KEY);
}
/**
* Vérifie si des tokens sont présents dans localStorage
* T0169: Vérifie la présence des tokens
* @returns true si les deux tokens sont présents, false sinon
*/
static hasTokens(): boolean {
return !!this.getAccessToken() && !!this.getRefreshToken();
}
}