fix: BUG-02 IC-03 session expirée sur Workflow Financier et Messagerie

Ajoute KeycloakAuthService.getValidAccessToken() qui vérifie l'expiration
du JWT et rafraîchit automatiquement avant de retourner le token.

FinanceWorkflowRemoteDatasource et MessagingRemoteDatasource injectent
désormais KeycloakAuthService au lieu de FlutterSecureStorage directement,
ce qui évite d'envoyer un Bearer expiré et d'obtenir un 401 silencieux.
This commit is contained in:
dahoud
2026-04-10 20:53:28 +00:00
parent 70cbd1c873
commit 04896349d6
3 changed files with 21 additions and 10 deletions

View File

@@ -4,10 +4,10 @@ library messaging_remote_datasource;
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:injectable/injectable.dart';
import '../../../../core/config/environment.dart';
import '../../../../core/error/exceptions.dart';
import '../../../authentication/data/datasources/keycloak_auth_service.dart';
import '../models/message_model.dart';
import '../models/conversation_model.dart';
import '../../domain/entities/message.dart';
@@ -15,16 +15,16 @@ import '../../domain/entities/message.dart';
@lazySingleton
class MessagingRemoteDatasource {
final http.Client client;
final FlutterSecureStorage secureStorage;
final KeycloakAuthService authService;
MessagingRemoteDatasource({
required this.client,
required this.secureStorage,
required this.authService,
});
/// Headers HTTP avec authentification
/// Headers HTTP avec authentification — rafraîchit le token si expiré (fix IC-03)
Future<Map<String, String>> _getHeaders() async {
final token = await secureStorage.read(key: 'kc_access');
final token = await authService.getValidAccessToken();
return {
'Content-Type': 'application/json',
'Accept': 'application/json',