refactoring

This commit is contained in:
dahoud
2026-03-31 09:14:47 +00:00
parent 9bfffeeebe
commit 5383df6dcb
200 changed files with 11192 additions and 7063 deletions

View File

@@ -178,4 +178,56 @@ class KeycloakAuthService {
if (token != null && !JwtDecoder.isExpired(token)) return token;
return await refreshToken();
}
/// Vérifie le statut du compte sur le backend UnionFlow.
///
/// Retourne un [AuthStatusResult] enrichi avec l'état d'onboarding,
/// ou `null` en cas d'erreur réseau (on ne bloque pas en cas de doute).
Future<AuthStatusResult?> getAuthStatus(String apiBaseUrl) async {
try {
final token = await getValidToken();
if (token == null) return null;
final response = await _dio.get(
'$apiBaseUrl/api/membres/mon-statut',
options: Options(
headers: {'Authorization': 'Bearer $token'},
validateStatus: (s) => s != null && s < 500,
),
);
if (response.statusCode == 200 && response.data is Map) {
final data = response.data as Map;
return AuthStatusResult(
statutCompte: (data['statutCompte'] as String?) ?? 'ACTIF',
onboardingState: (data['onboardingState'] as String?) ?? 'NO_SUBSCRIPTION',
souscriptionId: data['souscriptionId'] as String?,
waveSessionId: data['waveSessionId'] as String?,
organisationId: data['organisationId'] as String?,
);
}
} catch (e) {
AppLogger.warning('KeycloakAuthService: impossible de vérifier statut compte: $e');
}
return null;
}
}
/// Résultat enrichi de /api/membres/mon-statut
class AuthStatusResult {
final String statutCompte;
final String onboardingState;
final String? souscriptionId;
final String? waveSessionId;
final String? organisationId;
const AuthStatusResult({
required this.statutCompte,
required this.onboardingState,
this.souscriptionId,
this.waveSessionId,
this.organisationId,
});
bool get isActive => statutCompte == 'ACTIF';
bool get isPendingOnboarding => statutCompte == 'EN_ATTENTE_VALIDATION';
bool get isBlocked => statutCompte == 'SUSPENDU' || statutCompte == 'DESACTIVE';
}