Dans le cadre de notre SAE du Semestre 3 pour notre BUT, trois collègues et moi-même avons eu pour tâche de réaliser un site Web complet permettant aux Directeurs d’Étude de générer des avis de passages personnalisés basés sur les notes des élèves, que nous avons nommé Evaluxe. Le site a été réalisé en HTML/CSS/PHP, avec quelques touches de JavaScript, le tout lié à une Base de Donnée MariaDB hébergé directement sur les serveurs de l’IUT.
Pour comprendre ce que nous devions réaliser, nous avons adopté une méthode agile SCRUM, et en tant que Product Owner de l’équipe, je me suis renseigné auprès de notre cliente pour connaître ses besoins et les exécuter.
Le code source de la SAE est disponible à cette adresse sur Github.
Pour organiser le Product Backlog, nous avons utilisé l’application Hive, afin de pouvoir dynamiquement choisir nos tâches et se les répartir équitablement.
Pour le projet en lui même, nous avons dû appliquer nos compétences de PHP acquises en cours, pour créer un site web fonctionnel lié à une base de donnée MariaDB (ci-contre, un code que j’ai réalisé pour générer les avis automatiques du site).
Ci-dessous sont présenté différentes captures d’écran pour montrer différentes pages d’Evaluxe.
Écran de connexion
Affichage de la liste des étudiants
Affichage des notes d’un étudiant
PDF généré pour voir les avis donné à un étudiant ainsi que le nombre d’avis pour l’entièreté de la promotion
Pour ma part du travail, j’ai réalisé entre autre la génération des avis, la création d’agrégation par défaut, et j’ai géré ce qui entourait la sécurité et la gestion des droits d’utilisateurs. J’ai aussi été beaucoup chargé de refactorer le code afin que les fonctionnalités des uns et des autres n’entre pas en conflits, et que le code reste de bonne qualité.
Traces
Trace 1
Il s'agit d'une fonction présente dans le projet Evaluxe dans notre dossier Repository, servant à faire le lien entre la base de donnée et le code PHP grâce à l'utilisation de PDO. On voit ligne 134 l'appel au PDO connecté à notre Base de Donnée ainsi que la fonction "prepare", permettant de préparer la requête SQL pour éviter une attaque de type injection SQL dans le code. Après avoir récupéré le résultat de la base de donnée, on vérifie évidemment que celui-ci n'est pas null avant de construire l'élément (Étudiant) avant de le faire renvoyer par notre fonction.
Trace 2
Screenshot de l'interface de Docker, ainsi que du container utilisé pour tester le site web en local. Celui-ci est fourni par l'IUT, j'ai pu apprendre à l'utiliser grâce à mes cours.
Trace 3
Un des exemples de concept de sécurité appris en cours et appliqué dans Evaluxe est l'échappement des variables. Dans ma vue "detailEtudiant.php" permettant d'afficher les informations personnelles des étudiants, nous affichons ici les variables $agregation['nom_agregation'] et $agregation['note_finale']. Dans le cas de la première variable, celle-ci contient du texte, qu'une personne mal intentionnée pourrait remplacer par du code malveillant pour voler des données au site par exemple. Le risque est prévenu par la fonction htmlspecialchars() qui échappe les données, bloquant tout code malveillant.
Trace 4
Comme on peut le voir ci-dessus, les mots de passes des utilisateurs du site sont hachés et non reconnaissable, même pour les administrateurs, avec l'utilisation d'un poivre et d'un seul lors du hachage.
Trace 5
Ceci est l'arborescence d'Evaluxe, respectant le modèle MVC (Modèle / Vue / Controleur). Il y a en plus un dossier Configuration permettant entre autres de garder les paramètres du site et les informations de connexion à la base de donnée. Il y a aussi le dossier Lib regroupant les librairies externes utilisées dans le projet.
Trace 6
Il s'agit du modèle Entité Association que nous avons réalisé pour la Base de Donnée de la SAE grâce aux apprentissages que nous avons reçus à l'IUT.
Trace 7
Notre application génère des PDF de ce format, permettant de rendre de façon lisible les résultats de la formation aux directeurs d'étude. Cette génération utilise la bibliothèque tPDF, permettant de créer de façon programmatique en PHP un fichier PDF.
Trace 8
Ce fichier est le genre de fichier que j'ai eu à analyser pour savoir comment créer la base de donnée en évitant le plus de répétition possible.
Trace 9
Durant toute la SAE Evaluxe, nous avons utilisé les méthodes agiles de SCRUM. J'étais le Product Owner de mon équipe, donc celui qui communiquait avec la cliente et aussi celui qui réalisait les users stories et le planning général des sprints. Cette image est extraite du tableau blanc en ligne utilisé par l'équipe pour regrouper les informations, et j'ai réalisé ce tableau pour regrouper les stories que nous allions réaliser pour le site web.
Trace 10
Ceci est un mail que j'ai envoyé à ma cliente durant la SAE Evaluxe, pour lui faire le détail des stories que nous allions entreprendre pour le dernier sprint du projet. J'envoyais toujours ces mails à chaque début de sprint pour tenir informé ma cliente de l'avancement du projet.
Trace 11
Screenshot des conditions générales que nous avons incluses sur notre site. Les conditions générales complètes sont disponibles à cette adresse.