refactoring
This commit is contained in:
@@ -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';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user