Annuaire + HAPI trail
Octobre 2024 - Décembre 2024
Conception d'un annuaire pour voir les événements auxquels on participe, automatiquement relié au site des événements via son API
Contributors:
Clément Garro, Daniil Hirchyts, Marius Brouty
Project Overview
Annuaire est une application web conçue pour permettre aux utilisateurs de voir les événements auxquels ils participent. L'application est automatiquement reliée au site des événements via son API, ce qui permet aux utilisateurs de consulter les détails des événements, les dates et les lieux, ainsi que les informations sur les participants. L'application est conçue pour être évolutive et maintenable grâce à son API, facilitant son intégration dans l'infrastructure existante du site des événements. Chaque utilisateur peut créer un profil, gérer ses informations, et personnaliser la visibilité de son profil (visible ou masqué).
Key Features
- Inscription et authentification des utilisateurs avec gestion de profils
- Gestion des événements via une API REST développée en Symfony
- Affichage des détails des événements : nom, dates, lieux, nombre de participants, etc.
- Possibilité pour les organisateurs de créer, modifier et supprimer des événements
- Gestion de la visibilité des profils (visible/masqué) et des listes publiques des participants
- Système d'inscription et de désinscription aux événements avec vérification des conflits d'horaires
- Authentification sécurisée via JWT
- Interface utilisateur moderne et responsive
- Validation en temps réel des données (codes uniques, disponibilités, etc.)
- Connexion API avec génération automatique de groupes de validation et sérialisation
Context
Projet universitaire réalisé en trinôme pour développer une application d'annuaire en ligne couplée à une API de gestion d'événements. Ce projet repose sur l'utilisation du Gesdinet JWT Refresh Token Bundle pour une gestion efficace et sécurisée des tokens, en s'appuyant sur une base de données PostgreSQL.
Mission
- Concevoir une application web d'annuaire en ligne avec Symfony et Twig
- Créer une API REST pour gérer les événements et les utilisateurs avec Symfony et API Platform
- Assurer la communication entre le site web et l'API pour une synchronisation fluide des données
Fonctionnalités Principales
- Création de profils d'utilisateurs avec gestion de visibilité
- Affichage des profils listés sur la page principale
- Consultation des événements et des inscriptions pour chaque utilisateur
- Possibilité de désinscription et gestion des places disponibles
- Système de rôles (utilisateurs, organisateurs, administrateurs) pour contrôler les actions disponibles
Les Enseignements Tirés de cette Expérience
- J'ai pue approfondi ma maîtrise de Symfony, un framework PHP réputé pour sa flexibilité et ses outils intégrés, en le combinant avec API Platform. API Platform, grâce à ses fonctionnalités avancées (comme la documentation automatique via Swagger ou l’intégration de GraphQL), a permis de structurer une API REST robuste et respectueuse des standards modernes. Ce processus a également impliqué des réflexions approfondies sur les concepts de REST, tels que la structuration des endpoints, l’utilisation des méthodes HTTP appropriées (GET, POST, PUT, DELETE), et la gestion des codes de réponse HTTP pour une meilleure communication entre le client et le serveur.
- La sécurisation de l’authentification a été un axe majeur du projet. En implémentant les JSON Web Tokens (JWT), l’équipe a garanti une gestion sécurisée et scalable des sessions utilisateurs. Ce choix a permis d’éviter les failles liées aux approches traditionnelles basées sur les cookies ou les sessions serveur. De plus, le JWT offre des avantages significatifs, notamment la possibilité de stocker des informations codées directement dans le token (claims), ce qui optimise la vérification des droits d’accès. L’équipe a également travaillé sur l’intégration de tokens de rafraîchissement pour offrir une expérience utilisateur fluide tout en maintenant un haut niveau de sécurité.
- Un des défis majeurs a été de modéliser et de gérer les relations complexes entre les entités du projet, comme les relations entre utilisateurs, commentaires, et autres données associées. L’équipe a utilisé les annotations Doctrine pour établir ces relations (OneToMany, ManyToOne, ManyToMany, etc.), tout en veillant à respecter les principes REST. Par exemple, l’utilisation d’identifiants dans les relations et la sérialisation a permis de minimiser la taille des réponses et d’améliorer la lisibilité de l’API.
- J'ai pue apprendre à tirer parti des groupes de sérialisation offerts par Symfony pour répondre aux besoins spécifiques des clients. Cette approche a permis de personnaliser les données renvoyées par l’API en fonction des contextes (exemple : un utilisateur authentifié voit plus de détails qu’un utilisateur non authentifié). Par ailleurs, la dénormalisation a été utilisée pour optimiser les performances lors de la récupération de données complexes, notamment dans les scénarios où des requêtes imbriquées étaient nécessaires. Ces techniques ont non seulement amélioré les performances, mais ont également rendu l’API plus adaptable aux besoins des consommateurs front-end.
Relations entre les réalisations personnelles et le programme de BUT Informatique
AC 31.01 : Choisir et implémenter les architectures adaptées
Niveau: Compris
Lien avec le projet
Ce projet nécessite le choix d’une architecture adaptée pour gérer à la fois le front-end et le back-end de l'application avec Symfony, en choisissant les ressources techniques appropriées aux besoins du projet.
CE 1.04 : Choisir les ressources techniques appropriées
Utilisation de Symfony et Twig pour le développement du site, en choisissant les ressources techniques adaptées aux besoins du projet.
AC 31.02 : Faire évoluer une application existante
Niveau: Acquis
Lien avec le projet
Ce projet implique de créer une application web et de la faire évoluer en ajoutant de nouvelles fonctionnalités, en modélisant les profils utilisateurs et les situations complexes.
CE 2.01 : Formaliser et modéliser des situations complexes
Modélisation des profils utilisateurs et des fonctionnalités associées pour faire évoluer l'application.
AC 32.02 : Profiler, analyser et justifier le comportement d'un code existant
Niveau: Compris
Lien avec le projet
Il est nécessaire d'analyser les performances du code et de justifier les choix techniques pour optimiser le projet, en validant les résultats.
CE 2.04 : Justifier les choix et valider les résultats
Analyse des performances du code et justification des choix techniques pour optimiser le comportement des différentes fonctions.
AC 33.03 : Appliquer une politique de sécurité au niveau de l'infrastructure
Niveau: Maîtrisé
Lien avec le projet
Étant donné que ce projet traite des données personnelles, il est essentiel de mettre en place des pratiques de sécurité robustes pour sécuriser le système d'information.
CE 3.01 : Sécuriser le système d'information
Mise en place de pratiques de sécurité robustes pour protéger les données personnelles des utilisateurs.
AC 34.02 : Préparer et extraire les données pour l'exploitation
Niveau: Acquis
Lien avec le projet
Le projet nécessite l'extraction de données utilisateur, qui doivent être structurées et manipulées efficacement, en respectant les réglementations sur la vie privée.
CE 4.01 : Respecter les réglementations sur la vie privée et la protection des données personnelles
Extraction et manipulation des données utilisateur tout en respectant les réglementations sur la protection des données personnelles.
AC 36.01 : Organiser et partager une veille technologique et informationnelle
Niveau: Compris
Lien avec le projet
Il est nécessaire d'organiser une veille technologique pour rester à jour avec les bonnes pratiques et intégrer des solutions innovantes, en communiquant efficacement avec les différents acteurs du projet.
CE 5.01 : Communiquer efficacement avec les différents acteurs d'un projet
Organisation d'une veille technologique pour rester à jour avec les bonnes pratiques et intégrer des solutions innovantes.
AC 31.01 : Choisir et implémenter les architectures adaptées
Niveau: Compris
Lien avec le projet
Ce projet nécessite le choix d’une architecture adaptée pour gérer à la fois le front-end et le back-end de l'application avec Symfony, en choisissant les ressources techniques appropriées aux besoins du projet.
CE 1.04 : Choisir les ressources techniques appropriées
Utilisation de Symfony et API Platform pour le développement de l'API, en choisissant les ressources techniques adaptées aux besoins du projet.
AC 31.02 : Faire évoluer une application existante
Niveau: Acquis
Lien avec le projet
Ce projet implique de créer une application web et de la faire évoluer en ajoutant de nouvelles fonctionnalités, en modélisant les événements et les interactions entre utilisateurs.
CE 2.01 : Formaliser et modéliser des situations complexes
Modélisation des événements et des interactions entre utilisateurs et événements pour faire évoluer l'application.
AC 32.02 : Profiler, analyser et justifier le comportement d'un code existant
Niveau: Compris
Lien avec le projet
Il est nécessaire d'analyser les performances du code et de justifier les choix techniques pour optimiser le projet, en validant les résultats.
CE 2.04 : Justifier les choix et valider les résultats
Analyse des performances du code et justification des choix techniques pour optimiser le comportement des différentes fonctions.
AC 33.03 : Appliquer une politique de sécurité au niveau de l'infrastructure
Niveau: Maîtrisé
Lien avec le projet
Étant donné que ce projet traite des données personnelles, il est essentiel de mettre en place des pratiques de sécurité robustes pour sécuriser le système d'information.
CE 3.01 : Sécuriser le système d'information
Mise en place de pratiques de sécurité robustes pour protéger les données personnelles des utilisateurs.
AC 34.02 : Préparer et extraire les données pour l'exploitation
Niveau: Acquis
Lien avec le projet
Le projet nécessite l'extraction de données utilisateur, qui doivent être structurées et manipulées efficacement, en respectant les réglementations sur la vie privée.
CE 4.01 : Respecter les réglementations sur la vie privée et la protection des données personnelles
Extraction et manipulation des données utilisateur tout en respectant les réglementations sur la protection des données personnelles.
AC 35.02 : Savoir intégrer un projet informatique dans le système d'information d'une organisation
Niveau: Compris
Lien avec le projet
L'intégration de l'API dans un système d'information global est essentielle pour réussir ce projet, en communiquant efficacement avec les différents acteurs.
CE 5.01 : Communiquer efficacement avec les différents acteurs d'un projet
Intégration de l'API dans un système d'information global, en communiquant efficacement avec les différents acteurs du projet.
AC 36.01 : Organiser et partager une veille technologique et informationnelle
Niveau: Compris
Lien avec le projet
Il est nécessaire d'organiser une veille technologique pour rester à jour avec les bonnes pratiques et intégrer des solutions innovantes, en communiquant efficacement avec les différents acteurs du projet.
CE 5.01 : Communiquer efficacement avec les différents acteurs d'un projet
Organisation d'une veille technologique pour rester à jour avec les bonnes pratiques et intégrer des solutions innovantes.