fix(mobile): URL changement mdp corrigée + v3.0 — multi-org, AppAuth, sécurité prod

Auth:
- profile_repository.dart: /api/auth/change-password → /api/membres/auth/change-password

Multi-org (Phase 3):
- OrgSelectorPage, OrgSwitcherBloc, OrgSwitcherEntry
- org_context_service.dart: headers X-Active-Organisation-Id + X-Active-Role

Navigation:
- MorePage: navigation conditionnelle par typeOrganisation
- Suppression adaptive_navigation (remplacé par main_navigation_layout)

Auth AppAuth:
- keycloak_webview_auth_service: fixes AppAuth Android
- AuthBloc: gestion REAUTH_REQUIS + premierLoginComplet

Onboarding:
- Nouveaux états: payment_method_page, onboarding_shared_widgets
- SouscriptionStatusModel mis à jour StatutValidationSouscription

Android:
- build.gradle: ProGuard/R8, network_security_config
- Gradle wrapper mis à jour
This commit is contained in:
dahoud
2026-04-07 20:56:03 +00:00
parent 22f9c7e9a1
commit 70cbd1c873
63 changed files with 9316 additions and 6122 deletions

View File

@@ -0,0 +1,674 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for French (`fr`).
class AppLocalizationsFr extends AppLocalizations {
AppLocalizationsFr([String locale = 'fr']) : super(locale);
@override
String get appTitle => 'UnionFlow';
@override
String get login => 'Connexion';
@override
String get logout => 'Déconnexion';
@override
String get email => 'Email';
@override
String get password => 'Mot de passe';
@override
String get forgotPassword => 'Mot de passe oublié ?';
@override
String get rememberMe => 'Se souvenir de moi';
@override
String get signIn => 'Se connecter';
@override
String get signUp => 'S\'inscrire';
@override
String get welcome => 'Bienvenue';
@override
String get welcomeBack => 'Bon retour';
@override
String get dashboard => 'Tableau de bord';
@override
String get members => 'Membres';
@override
String get events => 'Événements';
@override
String get organisations => 'Organisations';
@override
String get cotisations => 'Cotisations';
@override
String get solidarity => 'Solidarité';
@override
String get reports => 'Rapports';
@override
String get notifications => 'Notifications';
@override
String get profile => 'Profil';
@override
String get settings => 'Paramètres';
@override
String get more => 'Plus';
@override
String get search => 'Rechercher';
@override
String get filter => 'Filtrer';
@override
String get sort => 'Trier';
@override
String get create => 'Créer';
@override
String get add => 'Ajouter';
@override
String get edit => 'Modifier';
@override
String get delete => 'Supprimer';
@override
String get save => 'Enregistrer';
@override
String get cancel => 'Annuler';
@override
String get confirm => 'Confirmer';
@override
String get close => 'Fermer';
@override
String get back => 'Retour';
@override
String get next => 'Suivant';
@override
String get previous => 'Précédent';
@override
String get finish => 'Terminer';
@override
String get retry => 'Réessayer';
@override
String get refresh => 'Actualiser';
@override
String get export => 'Exporter';
@override
String get import => 'Importer';
@override
String get download => 'Télécharger';
@override
String get upload => 'Téléverser';
@override
String get share => 'Partager';
@override
String get print => 'Imprimer';
@override
String get loading => 'Chargement...';
@override
String get loadingData => 'Chargement des données...';
@override
String get initializing => 'Initialisation...';
@override
String get updating => 'Mise à jour...';
@override
String get saving => 'Enregistrement...';
@override
String get deleting => 'Suppression...';
@override
String get processing => 'Traitement...';
@override
String get error => 'Erreur';
@override
String get errorOccurred => 'Une erreur s\'est produite';
@override
String get errorUnexpected => 'Une erreur inattendue s\'est produite.';
@override
String get errorNetwork =>
'Erreur de connexion. Vérifiez votre connexion internet.';
@override
String get errorServer => 'Erreur serveur. Veuillez réessayer plus tard.';
@override
String get errorAuth => 'Non authentifié. Veuillez vous reconnecter.';
@override
String get errorPermission =>
'Accès refusé. Vous n\'avez pas les permissions nécessaires.';
@override
String get errorNotFound => 'Ressource non trouvée.';
@override
String get errorValidation =>
'Données invalides. Vérifiez les informations saisies.';
@override
String get errorTimeout => 'Délai d\'attente dépassé.';
@override
String get success => 'Succès';
@override
String get successSaved => 'Enregistré avec succès';
@override
String get successDeleted => 'Supprimé avec succès';
@override
String get successUpdated => 'Mis à jour avec succès';
@override
String get successCreated => 'Créé avec succès';
@override
String get warning => 'Attention';
@override
String get info => 'Information';
@override
String get noData => 'Aucune donnée disponible';
@override
String get noResults => 'Aucun résultat trouvé';
@override
String get noConnection => 'Pas de connexion';
@override
String get emptyList => 'La liste est vide';
@override
String get yes => 'Oui';
@override
String get no => 'Non';
@override
String get ok => 'OK';
@override
String get all => 'Tous';
@override
String get none => 'Aucun';
@override
String get name => 'Nom';
@override
String get firstName => 'Prénom';
@override
String get lastName => 'Nom de famille';
@override
String get fullName => 'Nom complet';
@override
String get phone => 'Téléphone';
@override
String get address => 'Adresse';
@override
String get city => 'Ville';
@override
String get postalCode => 'Code postal';
@override
String get country => 'Pays';
@override
String get region => 'Région';
@override
String get birthDate => 'Date de naissance';
@override
String get gender => 'Genre';
@override
String get profession => 'Profession';
@override
String get nationality => 'Nationalité';
@override
String get status => 'Statut';
@override
String get statusActive => 'Actif';
@override
String get statusInactive => 'Inactif';
@override
String get statusSuspended => 'Suspendu';
@override
String get statusPending => 'En attente';
@override
String get statusConfirmed => 'Confirmé';
@override
String get statusCancelled => 'Annulé';
@override
String get statusPostponed => 'Reporté';
@override
String get statusDraft => 'Brouillon';
@override
String get role => 'Rôle';
@override
String get roleSuperAdmin => 'Super Administrateur';
@override
String get roleOrgAdmin => 'Administrateur Org';
@override
String get roleModerator => 'Modérateur';
@override
String get roleActiveMember => 'Membre Actif';
@override
String get roleSimpleMember => 'Membre Simple';
@override
String get roleVisitor => 'Visiteur';
@override
String get type => 'Type';
@override
String get typeOfficial => 'Officiel';
@override
String get typeSocial => 'Social';
@override
String get typeTraining => 'Formation';
@override
String get typeSolidarity => 'Solidarité';
@override
String get typeOther => 'Autre';
@override
String get priority => 'Priorité';
@override
String get priorityLow => 'Basse';
@override
String get priorityMedium => 'Moyenne';
@override
String get priorityHigh => 'Haute';
@override
String get date => 'Date';
@override
String get startDate => 'Date de début';
@override
String get endDate => 'Date de fin';
@override
String get createdAt => 'Créé le';
@override
String get updatedAt => 'Modifié le';
@override
String get lastActivity => 'Dernière activité';
@override
String get description => 'Description';
@override
String get details => 'Détails';
@override
String get location => 'Lieu';
@override
String get organizer => 'Organisateur';
@override
String get participants => 'Participants';
@override
String get maxParticipants => 'Participants max';
@override
String get currentParticipants => 'Participants actuels';
@override
String get availableSpots => 'Places disponibles';
@override
String get full => 'Complet';
@override
String get cost => 'Coût';
@override
String get free => 'Gratuit';
@override
String get price => 'Prix';
@override
String get currency => 'Devise';
@override
String get membersManagement => 'Gestion des Membres';
@override
String membersTotal(int count) {
return '$count membres au total';
}
@override
String get membersActive => 'Actifs';
@override
String get membersInactive => 'Inactifs';
@override
String get membersPending => 'En attente';
@override
String get addMember => 'Ajouter un membre';
@override
String get editMember => 'Modifier le membre';
@override
String get deleteMember => 'Supprimer le membre';
@override
String get memberDetails => 'Détails du membre';
@override
String get searchMembers => 'Rechercher un membre...';
@override
String get noMembersFound => 'Aucun membre trouvé';
@override
String get eventsManagement => 'Gestion des Événements';
@override
String eventsTotal(int count) {
return '$count événements au total';
}
@override
String get eventsUpcoming => 'À venir';
@override
String get eventsOngoing => 'En cours';
@override
String get eventsPast => 'Passés';
@override
String get addEvent => 'Ajouter un événement';
@override
String get editEvent => 'Modifier l\'événement';
@override
String get deleteEvent => 'Supprimer l\'événement';
@override
String get eventDetails => 'Détails de l\'événement';
@override
String get searchEvents => 'Rechercher un événement...';
@override
String get noEventsFound => 'Aucun événement trouvé';
@override
String get calendar => 'Calendrier';
@override
String get register => 'S\'inscrire';
@override
String get unregister => 'Se désinscrire';
@override
String get organisationsManagement => 'Gestion des Organisations';
@override
String organisationsTotal(int count) {
return '$count organisations au total';
}
@override
String get addOrganisation => 'Ajouter une organisation';
@override
String get editOrganisation => 'Modifier l\'organisation';
@override
String get deleteOrganisation => 'Supprimer l\'organisation';
@override
String get organisationDetails => 'Détails de l\'organisation';
@override
String get searchOrganisations => 'Rechercher une organisation...';
@override
String get noOrganisationsFound => 'Aucune organisation trouvée';
@override
String get cotisationsManagement => 'Gestion des Cotisations';
@override
String cotisationsTotal(int count) {
return '$count cotisations au total';
}
@override
String get cotisationPaid => 'Payée';
@override
String get cotisationUnpaid => 'Non payée';
@override
String get cotisationOverdue => 'En retard';
@override
String get addCotisation => 'Ajouter une cotisation';
@override
String get editCotisation => 'Modifier la cotisation';
@override
String get deleteCotisation => 'Supprimer la cotisation';
@override
String get cotisationDetails => 'Détails de la cotisation';
@override
String get searchCotisations => 'Rechercher une cotisation...';
@override
String get noCotisationsFound => 'Aucune cotisation trouvée';
@override
String get amount => 'Montant';
@override
String get dueDate => 'Date d\'échéance';
@override
String get paymentDate => 'Date de paiement';
@override
String get paymentMethod => 'Méthode de paiement';
@override
String get statistics => 'Statistiques';
@override
String get analytics => 'Analytics';
@override
String get total => 'Total';
@override
String get average => 'Moyenne';
@override
String get percentage => 'Pourcentage';
@override
String get viewList => 'Vue liste';
@override
String get viewGrid => 'Vue grille';
@override
String get viewCalendar => 'Vue calendrier';
@override
String get page => 'Page';
@override
String pageOf(int current, int total) {
return 'Page $current sur $total';
}
@override
String get language => 'Langue';
@override
String get languageFrench => 'Français';
@override
String get languageEnglish => 'English';
@override
String get theme => 'Thème';
@override
String get themeLight => 'Clair';
@override
String get themeDark => 'Sombre';
@override
String get themeSystem => 'Système';
@override
String get version => 'Version';
@override
String get about => 'À propos';
@override
String get help => 'Aide';
@override
String get support => 'Support';
@override
String get termsOfService => 'Conditions d\'utilisation';
@override
String get privacyPolicy => 'Politique de confidentialité';
@override
String get confirmDelete => 'Êtes-vous sûr de vouloir supprimer ?';
@override
String get confirmLogout => 'Êtes-vous sûr de vouloir vous déconnecter ?';
@override
String get confirmCancel => 'Êtes-vous sûr de vouloir annuler ?';
@override
String get requiredField => 'Ce champ est requis';
@override
String get invalidEmail => 'Email invalide';
@override
String get invalidPhone => 'Numéro de téléphone invalide';
@override
String get invalidDate => 'Date invalide';
@override
String get passwordTooShort => 'Le mot de passe est trop court';
@override
String get passwordsDoNotMatch => 'Les mots de passe ne correspondent pas';
}