PROBLEME RESOLU: - Les tokens JWT generes au login n'etaient pas verifies correctement - SmallRye JWT ne pouvait pas charger la cle de verification - Incompatibilite entre l'issuer du token et celui attendu CORRECTIONS: - Creation de jwt-secret.jwk au format JWK standard pour cles symetriques - Configuration smallrye.jwt.verify.key.location vers le fichier JWK - Alignement de l'issuer sur 'afterwork' dans .env.example Ce commit sert de checkpoint stable pour la configuration JWT. Co-authored-by: Cursor <cursoragent@cursor.com>
mic-after-work-server-impl-quarkus-main
This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/.
Running the application in dev mode
You can run your application in dev mode that enables live coding using:
./mvnw compile quarkus:dev
NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
Packaging and running the application
The application can be packaged using:
./mvnw package
It produces the quarkus-run.jar file in the target/quarkus-app/ directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/ directory.
The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar.
If you want to build an über-jar, execute the following command:
./mvnw package -Dquarkus.package.jar.type=uber-jar
The application, packaged as an über-jar, is now runnable using java -jar target/*-runner.jar.
Creating a native executable
You can create a native executable using:
./mvnw package -Dnative
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
./mvnw package -Dnative -Dquarkus.native.container-build=true
You can then execute your native executable with: ./target/mic-after-work-server-impl-quarkus-main-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.
Fonctionnalités métier (AfterWork)
Notifications
- Service :
NotificationService— création, lecture, pagination, marquage lu/suppression des notifications en base. - Déclencheurs : Notifications créées automatiquement pour les demandes d’amitié (destinataire), les likes/commentaires sur les posts (auteur du post), les nouvelles notes d’établissement (manager).
- API :
GET/POST /notifications/user/{userId}, pagination, marquer lu, supprimer. Voir SECURITY.md pour l’usage en production (userId issu de l’auth).
Jobs planifiés (Quarkus Scheduler)
- Stories : Désactivation des stories expirées (cron : toutes les heures).
- Tokens : Suppression des tokens de réinitialisation de mot de passe expirés (tous les jours à 3h).
- Abonnements : Expiration des abonnements établissements et désactivation des établissements non payés (toutes les heures).
- Rappels événements : Notifications en base pour les participants (J-1 et H-1), exécution toutes les 15 minutes.
- Avertissement abonnement : Envoi d’emails J-3 avant expiration aux managers (tous les jours à 9h).
Configuration : quarkus.scheduler.enabled=true (désactivé en test via %test.quarkus.scheduler.enabled=false).
Emails transactionnels
- EmailService : Réinitialisation mot de passe, bienvenue, confirmation de paiement Wave, rappel événement, avertissement expiration abonnement, confirmation de réservation, échec de paiement Wave.
- Configuration SMTP via variables d’environnement (
MAILER_HOST,MAILER_USERNAME,MAILER_PASSWORD, etc.) ; en test le mailer peut être en mode mock.
Paiement Wave (établissements)
- Initiation de paiement (abonnement mensuel/annuel), webhook
POST /webhooks/wavepourpayment.completed,payment.refunded,payment.failed, etc. - Vérification optionnelle de la signature du webhook (header
X-Wave-Signature, HMAC-SHA256) siwave.webhook.secretest configuré. Voir SECURITY.md.
Related Guides
- Hibernate ORM (guide): Define your persistent model with Hibernate ORM and Jakarta Persistence
- SmallRye OpenAPI (guide): Document your REST APIs with OpenAPI - comes with Swagger UI
- RESTEasy Classic (guide): REST endpoint framework implementing Jakarta REST and more
- Logging JSON (guide): Add JSON formatter for console logging
- JDBC Driver - PostgreSQL (guide): Connect to the PostgreSQL database via JDBC
Sécurité et déploiement
- Sécurité : Voir SECURITY.md (auth, webhook Wave, secrets, validation).
- Docker : Voir docker/README.md pour lancer l’app et les dépendances (PostgreSQL, etc.).
Provided Code
Hibernate ORM
Create your first JPA entity
RESTEasy JAX-RS
Easily start your RESTful Web Services