2025-12-03 21:56:50 +00:00
|
|
|
/**
|
|
|
|
|
* TokenStorage - Service de gestion du stockage des tokens dans localStorage
|
|
|
|
|
* T0169: Service simple pour stocker, récupérer et supprimer les tokens d'authentification
|
2025-12-22 21:00:50 +00:00
|
|
|
*
|
|
|
|
|
* IMPORTANT: Pour les tests E2E, le token peut être en mémoire Zustand mais pas encore
|
|
|
|
|
* synchronisé avec localStorage. Cette classe vérifie d'abord localStorage, puis essaie
|
|
|
|
|
* de récupérer depuis le store Zustand si disponible.
|
2025-12-03 21:56:50 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
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
|
2025-12-22 21:00:50 +00:00
|
|
|
*
|
|
|
|
|
* IMPORTANT: Le token DOIT être stocké dans localStorage via TokenStorage.setTokens()
|
|
|
|
|
* lors du login. Si le token n'est pas trouvé, c'est que le login n'a pas réussi
|
|
|
|
|
* ou que les tokens n'ont pas été stockés correctement.
|
|
|
|
|
*
|
2025-12-03 21:56:50 +00:00
|
|
|
* @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();
|
|
|
|
|
}
|
|
|
|
|
}
|