Commit Graph

33 Commits

Author SHA1 Message Date
dahoud
af18b42767 refactoring 2025-12-07 17:15:48 +00:00
dahoud
35ddcb1d2d security: Sécurisation complète des Resources REST avec @RolesAllowed
Sécurisation de 12 Resources (100% couverture):

AdhesionResource (8 annotations):
- Classe: ADMIN, MEMBRE, USER
- DELETE (1): ADMIN only
- POST (5): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE

AuditResource (2 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (1): ADMIN + MEMBRE

ComptabiliteResource (5 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (3): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

CotisationResource (4 annotations):
- Classe: ADMIN, MEMBRE, USER
- DELETE (1): ADMIN only
- POST (2): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE

DashboardResource (2 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (1): ADMIN + MEMBRE

DocumentResource (5 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (3): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

ExportResource (4 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (2): ADMIN + MEMBRE

NotificationResource (6 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (4): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

OrganisationResource (15 modifications):
- Classe: ADMIN, MEMBRE, USER (remplace @Authenticated)
- DELETE (1): ADMIN only
- POST (3): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE
- Suppression: 7 @PermitAll, 1 @Authenticated

PaiementResource (6 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (3): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

TypeOrganisationResource (5 annotations):
- Classe: ADMIN, MEMBRE, USER
- DELETE (1): ADMIN only
- POST (1): ADMIN + MEMBRE
- PUT (1): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

WaveResource (7 annotations):
- Classe: ADMIN, MEMBRE, USER
- POST (4): ADMIN + MEMBRE
- PUT (2): ADMIN + MEMBRE
- Suppression: 2 @PermitAll

Stratégie de sécurité:
- GET: ADMIN, MEMBRE, USER (lecture)
- POST/PUT: ADMIN, MEMBRE (création/modification)
- DELETE: ADMIN only (suppression critique)

Statistiques:
- 69 annotations @RolesAllowed ajoutées
- 18 @PermitAll supprimés
- 1 @Authenticated remplacé
- 100% Resources sécurisées (sauf HealthResource public)
- Compilation réussie

Voir RAPPORT_SECURITE_RESOURCES.md pour détails complets
2025-12-04 00:10:04 +00:00
dahoud
4b84ce3bc0 feat: Implémentation des TODOs critiques et suppression données fictives
- Implémentation des 3 TODOs dans DemandesAideBean.java:
  * voirDetails(): Dialogue de détails avec gestion de l'état
  * getChartModelType/Statut(): Documentation sur l'utilisation de JS externe
  * initializeEtapesWorkflow(): Calcul dynamique depuis données backend

- Implémentation des 2 TODOs dans RapportDetailsBean.java:
  * telechargerRapport(): Validation statut + gestion téléchargement
  * regenererRapport(): Régénération avec mise à jour statut

- Implémentation du TODO dans ConfigurationBean.java:
  * chargerSauvegardes(): Préparé pour service backend (pas de données fictives)

- Suppression des données fictives:
  * ConfigurationBean: Sauvegardes ne sont plus générées fictivement
  * DemandesAideBean: Étapes workflow calculées depuis backend réel

Compilation réussie sans erreurs
2025-12-03 20:39:34 +00:00
dahoud
e92acf44e6 fix: Correction des boutons d'action dans organisation/liste.xhtml et corrections diverses
- Alignement des boutons d'action avec membre/liste.xhtml (icônes seulement, style rounded)
- Remplacement findByIdOptional par find[Entity]ById dans tous les repositories
- Correction des erreurs de compilation UUID vs Long
- Correction du test MembreServiceAdvancedSearchTest (suppression assignation roles String)
- Ajout de méthodes find[Entity]ById dans tous les repositories
- Mise à jour des services pour utiliser les nouvelles méthodes de repository
- Correction des appels order() vers Sort.by() dans les repositories
- Suppression des tests obsolètes dans unionflow-server-api
2025-11-30 16:18:38 +00:00
dahoud
3beed176fd feat: PHASE 6 COMPLÈTE - Système de Notifications
Resource REST créée:
- NotificationResource: Endpoints complets pour templates et notifications
- CRUD templates, CRUD notifications, marquer comme lue
- Liste par membre, non lues, en attente d'envoi

PHASE 6 - COMPLÉTÉE (100%):
 Entités: Notification, TemplateNotification
 Enums: TypeNotification, PrioriteNotification, StatutNotification (module API)
 Repositories: NotificationRepository, TemplateNotificationRepository
 DTOs: NotificationDTO, TemplateNotificationDTO
 Service: NotificationService avec gestion complète
 Resource REST: NotificationResource avec endpoints complets

Fonctionnalités:
- Templates réutilisables avec variables JSON
- Support multi-canaux (EMAIL, SMS, PUSH, IN_APP, SYSTEME)
- Priorités: CRITIQUE, HAUTE, NORMALE, BASSE
- Statuts complets avec transitions
- Gestion tentatives d'envoi
- Dates envoi prévue/réelle/lecture
- Relations: Membre, Organisation, TemplateNotification

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
- Validation métier intégrée
2025-11-30 11:43:49 +00:00
dahoud
587ee55005 feat: PHASE 6.2 - Repositories, DTOs et Service Notifications
Repositories créés:
- TemplateNotificationRepository: Recherche par code, langue
- NotificationRepository: Recherche par membre, organisation, type, statut, priorité, en attente

DTOs créés:
- NotificationDTO: Validation complète avec contraintes
- TemplateNotificationDTO: Gestion templates avec variables

Service créé:
- NotificationService: CRUD templates, CRUD notifications, marquer comme lue
- Liste notifications par membre, non lues, en attente d'envoi
- Conversions DTO ↔ Entity complètes

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
2025-11-30 11:42:25 +00:00
dahoud
4bef1cdb72 feat: PHASE 5 et 6.1 - DocumentResource et Entités Notifications
PHASE 5 - COMPLÉTÉE:
 Resource REST: DocumentResource avec endpoints complets

PHASE 6.1 - Entités Notifications:
 TemplateNotification: Templates réutilisables avec variables
 Notification: Notifications avec types, priorités, statuts
 Enums: TypeNotification, PrioriteNotification (module API)
 Relations: Membre, Organisation, TemplateNotification

Fonctionnalités:
- Templates avec variables JSON
- Support multi-canaux (EMAIL, SMS, PUSH, IN_APP, SYSTEME)
- Priorités: CRITIQUE, HAUTE, NORMALE, BASSE
- Statuts: EN_ATTENTE, ENVOYEE, LUE, ECHOUE, ANNULEE
- Gestion tentatives d'envoi
- Dates envoi prévue/réelle/lecture

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Enums dans module API réutilisables
2025-11-30 11:37:12 +00:00
dahoud
0f625e5d78 feat: PHASE 5 COMPLÈTE - Gestion Documentaire
Service créé:
- DocumentService: CRUD documents, enregistrement téléchargements, gestion pièces jointes
- Validation qu'une seule relation est renseignée pour pièce jointe
- Conversions DTO ↔ Entity complètes

PHASE 5 - COMPLÉTÉE (100%):
 Entités: Document, PieceJointe
 Enum: TypeDocument (module API)
 Repositories: DocumentRepository, PieceJointeRepository
 DTOs: DocumentDTO, PieceJointeDTO
 Service: DocumentService avec validation
 Relations flexibles: Membre, Organisation, Cotisation, Adhesion, DemandeAide, TransactionWave

Fonctionnalités:
- Vérification intégrité avec MD5/SHA256
- Formatage taille fichiers
- Compteur téléchargements
- Validation relations pièces jointes

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
2025-11-30 11:31:51 +00:00
dahoud
bf994ccbea feat: PHASE 5.2 - Repositories et DTOs Documentaires
Repositories créés:
- DocumentRepository: Recherche par hash MD5/SHA256, type
- PieceJointeRepository: Recherche par document, membre, organisation, cotisation, adhésion, demande d'aide, transaction Wave

DTOs créés:
- DocumentDTO: Validation complète avec contraintes
- PieceJointeDTO: Relations flexibles via UUID

Respect strict DRY/WOU:
- Patterns de repository cohérents
- Patterns de DTO cohérents
- Relations via UUID pour découplage
2025-11-30 11:30:33 +00:00
dahoud
4b78c173ca feat: PHASE 5.1 - Entités Gestion Documentaire
Entités créées:
- Document: Gestion sécurisée avec hash MD5/SHA256, vérification intégrité
- PieceJointe: Association flexible avec relations multiples

Enum créé (module API):
- TypeDocument: IDENTITE, JUSTIFICATIF_DOMICILE, PHOTO, CONTRAT, FACTURE, RECU, RAPPORT, AUTRE

Fonctionnalités:
- Vérification intégrité avec MD5 et SHA256
- Formatage taille fichiers
- Compteur téléchargements
- Relations flexibles: Membre, Organisation, Cotisation, Adhesion, DemandeAide, TransactionWave
- Validation qu'une seule relation est renseignée

Respect strict DRY/WOU:
- Patterns d'entité cohérents
- Enum dans module API réutilisable
2025-11-30 11:26:37 +00:00
dahoud
ac7b69e872 feat: PHASE 4 COMPLÈTE - Système Comptable
Resource REST créée:
- ComptabiliteResource: Endpoints complets pour comptes, journaux, écritures
- CRUD complet avec gestion d'erreurs standardisée
- Validation équilibre écritures côté service

PHASE 4 - COMPLÉTÉE (100%):
 Entités: CompteComptable, JournalComptable, EcritureComptable, LigneEcriture
 Enums: TypeCompteComptable, TypeJournalComptable (module API)
 Repositories: Tous les repositories avec méthodes de recherche
 DTOs: Tous les DTOs avec validation complète
 Service: ComptabiliteService avec validation équilibre
 Resource REST: ComptabiliteResource avec endpoints complets

Fonctionnalités:
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Génération automatique numéros de pièce
- Relations avec Organisation et Paiement
- Gestion périodes journaux

Respect strict DRY/WOU:
- Patterns cohérents avec autres modules
- Gestion d'erreurs standardisée
- Validation métier intégrée
2025-11-30 11:23:29 +00:00
dahoud
5ba5a3577c feat: PHASE 4.3 - Service ComptabiliteService
Service créé:
- ComptabiliteService: CRUD complet pour comptes, journaux, écritures
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Conversions DTO ↔ Entity complètes
- Gestion des relations (Journal, Organisation, Paiement)

Fonctionnalités:
- Création compte comptable avec validation unicité
- Création journal comptable avec validation unicité
- Création écriture avec validation équilibre
- Liste par journal, organisation
- Conversions bidirectionnelles complètes

Respect strict DRY/WOU:
- Patterns de service cohérents
- Gestion d'erreurs standardisée
- Validation métier intégrée
2025-11-30 11:22:00 +00:00
dahoud
ced33a116e feat: PHASE 4.1 - Entités et Repositories Comptables
Entités créées:
- CompteComptable: Plan comptable avec types, classes, soldes
- JournalComptable: Journaux (ACHATS, VENTES, BANQUE, CAISSE, OD)
- EcritureComptable: Écritures avec équilibre Débit=Crédit
- LigneEcriture: Lignes d'écriture avec validation

Enums créés (module API):
- TypeCompteComptable: ACTIF, PASSIF, CHARGES, PRODUITS, TRESORERIE, AUTRE
- TypeJournalComptable: ACHATS, VENTES, BANQUE, CAISSE, OD

Repositories créés:
- CompteComptableRepository: Recherche par numéro, type, classe
- JournalComptableRepository: Recherche par code, type, période
- EcritureComptableRepository: Recherche par journal, organisation, paiement, période
- LigneEcritureRepository: Recherche par écriture, compte

Fonctionnalités:
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Génération automatique numéros de pièce
- Relations avec Organisation et Paiement
2025-11-30 11:16:24 +00:00
dahoud
5a7ead81f7 feat: DTOs, Services et Resources REST pour Paiements et Wave
DTOs créés:
- PaiementDTO avec validation complète
- CompteWaveDTO avec validation format téléphone
- TransactionWaveDTO avec tous les champs nécessaires

Services créés:
- PaiementService: CRUD complet, validation, annulation, calculs
- WaveService: Gestion comptes Wave, transactions, vérification

Resources REST créées:
- PaiementResource: Endpoints CRUD, validation, annulation, recherche
- WaveResource: Endpoints comptes et transactions Wave

Respect strict DRY/WOU:
- Patterns de service cohérents avec MembreService
- Patterns de resource cohérents avec OrganisationResource
- Gestion d'erreurs standardisée
- Validation complète des DTOs
2025-11-30 02:29:48 +00:00
dahoud
e53440da24 feat: PHASE 2 et 3 - Paiements centralisés et intégration Wave
PHASE 2 - Système de Paiements Centralisé:
- Entité Paiement centralisée avec enums MethodePaiement et StatutPaiement
- Tables de liaison: PaiementCotisation, PaiementAdhesion, PaiementEvenement, PaiementAide
- Repository PaiementRepository avec méthodes de recherche et calculs
- Relations bidirectionnelles avec Membre

PHASE 3 - Intégration Wave Mobile Money:
- Entités Wave: CompteWave, TransactionWave, WebhookWave, ConfigurationWave
- Enums: StatutCompteWave, TypeTransactionWave, StatutTransactionWave, TypeEvenementWebhook, StatutWebhook
- Repositories: CompteWaveRepository, TransactionWaveRepository, WebhookWaveRepository, ConfigurationWaveRepository
- Relations bidirectionnelles dans Organisation et Membre
- Ajout champ telephoneWave dans Membre

Respect strict DRY/WOU:
- Enums dans module API réutilisables
- Patterns de repository cohérents
- Relations JPA standardisées
- Numéro de référence auto-généré pour Paiement
2025-11-30 01:49:46 +00:00
dahoud
f930ae7341 feat: PHASE 1 - Adresses et Rôles/Permissions
PHASE 1.1 - Entité Adresse:
- Création entité Adresse avec types (SIEGE_SOCIAL, BUREAU, DOMICILE, AUTRE)
- Relations flexibles: Organisation, Membre, Evenement
- Enum TypeAdresse dans module API (DRY/WOU)
- Repository et Service AdresseService
- Relations bidirectionnelles mises à jour

PHASE 1.2 - Système Rôles et Permissions:
- Entité Role avec types (SYSTEME, ORGANISATION, PERSONNALISE)
- Entité Permission avec structure MODULE > RESSOURCE > ACTION
- Tables de liaison MembreRole et RolePermission
- Repositories pour toutes les entités
- Services RoleService et PermissionService
- Relations bidirectionnelles dans Membre

Respect strict DRY/WOU:
- Enums dans module API réutilisables
- Patterns de service cohérents
- Relations JPA standardisées
2025-11-30 01:31:12 +00:00
dahoud
1a31844aed fix(server+client): Correction validation dateAdhesion et ajout propriétés MembreDTO
SERVER (MembreService):
- Définition automatique de dateAdhesion à LocalDate.now() si non fournie
- Définition automatique de dateNaissance à il y a 18 ans si non fournie (évite @NotNull)
- Logs informatifs pour tracer les valeurs par défaut

CLIENT (MembreDTO):
- Ajout des champs manquants : membreBureau, responsable, dateAdhesion, region, ville, quartier, role
- Ajout des propriétés dérivées pour l'affichage dans liste.xhtml :
  * typeMembre, typeSeverity, typeIcon : basés sur les rôles
  * statutIcon : icône selon le statut
  * entite : nom de l'association
  * anciennete : calcul depuis dateInscription
  * cotisationStatut, cotisationColor, dernierPaiement : placeholders (TODO)
  * tauxParticipation, evenementsAnnee : placeholders (TODO)

SOLUTION APPLIQUÉE : Option B (valeurs par défaut automatiques)
- Permet création rapide de membres avec données minimales
- Profil complétable progressivement
- Pas de blocage sur champs obligatoires
2025-11-29 21:18:23 +00:00
dahoud
952141662b Refactroring 2025-11-29 04:21:41 +00:00
dahoud
e27a8434e1 Refactroring 2025-11-29 02:57:00 +00:00
dahoud
40fdbedcad Refactoring - Version OK 2025-11-17 15:28:34 +00:00
dahoud
8cec643361 Version OK 2025-10-05 14:26:15 +00:00
dahoud
291847924c Clean project: remove test files, debug logs, and add documentation 2025-10-05 13:41:33 +00:00
DahoudG
96a17eadbd Alignement design systeme OK 2025-09-20 03:56:11 +00:00
DahoudG
098894bdc1 Authentification stable - WIP 2025-09-19 12:35:46 +00:00
DahoudG
63fe107f98 Refactoring 2025-09-17 17:54:06 +00:00
DahoudG
12d514d866 Versione OK Pour l'onglet événements. 2025-09-15 20:15:34 +00:00
DahoudG
8a619ee1bf MODULE SOLIDARITÉ BACKEND - DÉVELOPPEMENT EXHAUSTIF TERMINÉ !
📊 RÉSUMÉ COMPLET DE L'IMPLÉMENTATION
 RÉALISATIONS ACCOMPLIES
🏗️ 1. ENTITÉ JPA AIDE
 Entité complète avec 40+ propriétés métier
 Relations JPA : ManyToOne avec Membre et Organisation
 Validations Jakarta : Contraintes métier robustes
 Énumérations : StatutAide et TypeAide intégrées
 Méthodes métier : Approbation, rejet, versement, vues
 Callbacks JPA : PrePersist, PreUpdate automatiques
 Index optimisés : Performance des requêtes garantie
🗄️ 2. REPOSITORY PANACHE
 AideRepository complet avec 30+ méthodes spécialisées
 Recherche avancée : Filtres multiples et pagination
 Statistiques : Calculs globaux et par période
 Méthodes métier : Aides urgentes, suivi, consultations
 Optimisations : Requêtes performantes et indexées
⚙️ 3. SERVICE MÉTIER AIDESERVICE
 CRUD complet : Création, lecture, mise à jour
 Opérations métier : Approbation, rejet, versement, annulation
 Validation robuste : Règles métier et sécurité
 Conversion DTO/Entity : Mapping bidirectionnel complet
 Gestion d'erreurs : Exceptions métier appropriées
 Sécurité Keycloak : Contrôle d'accès granulaire
🌐 4. RESOURCE REST AIDERESOURCE
 API REST complète : 15+ endpoints documentés
 CRUD standard : GET, POST, PUT avec gestion d'erreurs
 Endpoints métier : Approbation, rejet, versement
 Recherche et filtrage : Par statut, membre, texte
 Statistiques : Dashboard et métriques
 Sécurité JAX-RS : @RolesAllowed avec Keycloak
 Documentation OpenAPI : Spécification automatique
🧪 5. TESTS COMPLETS
 Tests unitaires : AideServiceTest avec 15+ scénarios
 Tests d'intégration : AideResourceTest avec REST Assured
 Couverture complète : Cas nominaux et d'erreur
 Mocks Quarkus : @InjectMock pour isolation
 Sécurité testée : @TestSecurity pour autorisation
📋 6. ARCHITECTURE ET QUALITÉ
 Clean Architecture : Séparation des couches respectée
 Patterns établis : Cohérence avec modules existants
 Standards Java 2025 : Lombok, JPA, Quarkus, Jakarta
 Documentation JavaDoc : Classes et méthodes documentées
 Gestion d'erreurs : Exceptions appropriées et logging
 Validation métier : Règles business implémentées
🎯 FONCTIONNALITÉS IMPLÉMENTÉES
📝 GESTION DES DEMANDES D'AIDE
 Création de demandes avec validation complète
 Modification par le demandeur (si statut permet)
 Consultation avec incrémentation des vues
 Recherche textuelle dans titre/description
 Filtrage par statut, type, priorité, membre
⚖️ WORKFLOW D'ÉVALUATION
 Approbation avec montant et commentaires
 Rejet avec raison obligatoire
 Gestion des permissions par rôle Keycloak
 Traçabilité complète des actions
💰 GESTION DES VERSEMENTS
 Marquage comme versé avec détails transaction
 Support multi-modes : Mobile Money, virement, espèces
 Contrôle des montants et cohérence
 Historique des versements
📊 STATISTIQUES ET REPORTING
 Statistiques globales par statut et type
 Statistiques par période configurable
 Aides les plus consultées
 Suivi des aides nécessitant attention
 Métriques de performance
🔒 SÉCURITÉ ET PERMISSIONS
 Authentification Keycloak obligatoire
 Autorisation granulaire par rôle
 Contrôle d'accès aux données sensibles
 Audit trail complet
🚀 ENDPOINTS API DISPONIBLES
CRUD Standard
GET /api/aides - Liste paginée des aides actives
GET /api/aides/{id} - Récupération par ID
GET /api/aides/reference/{ref} - Récupération par référence
POST /api/aides - Création nouvelle demande
PUT /api/aides/{id} - Mise à jour demande
Opérations Métier
POST /api/aides/{id}/approuver - Approbation avec montant
POST /api/aides/{id}/rejeter - Rejet avec raison
POST /api/aides/{id}/verser - Marquage versement
Recherche et Filtrage
GET /api/aides/statut/{statut} - Filtrage par statut
GET /api/aides/membre/{membreId} - Aides d'un membre
GET /api/aides/publiques - Aides publiques
GET /api/aides/recherche?q=terme - Recherche textuelle
GET /api/aides/urgentes - Aides urgentes en attente
Statistiques
GET /api/aides/statistiques - Métriques globales
2025-09-15 09:57:53 +00:00
DahoudG
f89f6167cc feat(mobile): Implement Keycloak WebView authentication with HTTP callback
- Replace flutter_appauth with custom WebView implementation to resolve deep link issues
- Add KeycloakWebViewAuthService with integrated WebView for seamless authentication
- Configure Android manifest for HTTP cleartext traffic support
- Add network security config for development environment (192.168.1.11)
- Update Keycloak client to use HTTP callback endpoint (http://192.168.1.11:8080/auth/callback)
- Remove obsolete keycloak_auth_service.dart and temporary scripts
- Clean up dependencies and regenerate injection configuration
- Tested successfully on multiple Android devices (Xiaomi 2201116TG, SM A725F)

BREAKING CHANGE: Authentication flow now uses WebView instead of external browser
- Users will see Keycloak login page within the app instead of browser redirect
- Resolves ERR_CLEARTEXT_NOT_PERMITTED and deep link state management issues
- Maintains full OIDC compliance with PKCE flow and secure token storage

Technical improvements:
- WebView with custom navigation delegate for callback handling
- Automatic token extraction and user info parsing from JWT
- Proper error handling and user feedback
- Consistent authentication state management across app lifecycle
2025-09-15 01:44:16 +00:00
DahoudG
73459b3092 Version propre - Dashboard enhanced 2025-09-13 19:05:06 +00:00
DahoudG
3df010add7 Appli Flutter se connecte bien à l'API. 2025-09-12 03:15:21 +00:00
DahoudG
8184bc77bb Tests à un bon niveau - A completer plus tard. 2025-09-11 11:53:54 +00:00
DahoudG
bf79fa4e04 Server-Api OK 2025-09-10 22:02:16 +00:00
DahoudG
b2a23bdf89 first commit 2025-08-20 21:00:35 +00:00