Voici le rapport de septembre et octobre réunis.
Je rassemble septembre et octobre dans un seul rapport, les 2 mois ont été assez chargés.
Parmis les gros évènements, on peut citer le retrait de la société Probesys du projet, mon COVID qui m’a cloué au lit un bon moment, le code du backend et l’avancée du code de la gestion des tickets dans le frontend.
On va détailler tout ça dans la suite du rapport.
En septembre, plusieurs réunions ont eu lieu entre moi (David Durieux) et Probesys.
Fin septembre, ils ont décidé d’abandonner le projet pour différentes raisons qui leur sont propres.
On a décidé de se refaire des réunions de temps en temps afin d’échanger sur l’évolution du projet FusionSuite et du logiciel de gestion de ticket qu’ils vont développer.
Je les remercie pour le travail effectué sur le projet.
Plusieurs fois par semaine, je stream du live coding du projet sur ma chaîne Twitch.
Je me demandais si c’était intéressant pour les gens et au final il semble que oui, et pour plusieurs raisons :
Je suis très heureux de streamer, ça crée un lien assez fort avec la communauté, n’hésitez pas à venir ;)
Le projet FusionSuite soufflera sa première bougie le 12 Janvier prochain.
Je suis en train de préparer un live avec une présentation du travail de l’année écoulée, les difficultés, les modifications de planning, une démo de la version de développement.
Pour les tests end-to-end du frontend, on avait besoin de pouvoir supprimer simplement toutes les tables et rejouer l’installation.
Cette commande est désormais intégrée dans le cli php bin/cli reset
.
Comme spécifiée dans le rapport d’août, cette fonctionnalité est finie et a été intégrée.
Les logs d’audit on été intégrés dans le backend. Tous les ajouts, modifications, suppressions, connexions (ok ou fail) sont logués dans la base de données et accessible via l’API REST.
Voici le lien de la documentation pour interroger le backend.
On a certains types d’items qui doivent avoir un nom unique, par exemple les comptes utilisateurs.
Cette option a été ajoutée dans la configuration des types.
En écrivant ce paragraphe, je me rends compte qu’il y a eu un loupé dans la documentation de l’API REST. Correction à prévoir.
L’endpoint pour se loguer et pour rafraîchir le token était complexe, encore plus car c’était dans le même endpoint.
Ces 2 fonctionnalités ont été séparées dans 2 endpoints.
Pour le refresh du token, on a amélioré la sécurité en demandant obligatoirement le token JWT valide (signature) même si périmé (c’est d’ailleurs pour cette raison qu’on a besoin de rafraîchir le token) ainsi que le token du refresh.
Documentation de l’API REST disponible.
Le token de refresh est un peu light en nombre de caractères, une Pull Request sera faite pour le complexifier.
Une Pull Request est en cours pour gérer les mots de passe (chiffrés) dans la base de données, ainsi que les hash de mot de passe (pour le mot de passe des comptes utilisateurs par exemple).
On a actuellement un total de 2257 tests. L’exécution dure environ 2 minutes (il y a des pauses à cause des tests sur les date/heures).
Le backend est codé en PHP et les tests en Javascript.
Fait amusant, on a plus de code pour les tests (58%) que le code en lui-même (34%), forcément l’utilisation des frameworks (Slim & Eloquent) aide à réduire le code du backend.
Les tests end-to-end qui simule un utilisateur dans le navigateur ont été mis en place. On utilise Cypress.
Actuellement, le TOKEN fourni par le backend lors de la connexion expire au bout de 20 minutes pour des raisons de sécurité.
Quand il expire et qu’une requête est effectuée, elle retourne une erreur liée au token, et le rôle du HTTP Interceptor est de redemander un nouveau token à l’aide du refresh token. Une fois le nouveau token reçu, la requête est renvoyée au backend avec ce token valide.
Le système fonctionne parfaitement et c’est transparent pour l’utilisateur.
La gestion des tickets est en cours de développement.
Vous trouverez ci-dessous une vidéo sur le travail en cours.
Malgré le départ de Probesys, le projet avance bien sur le frontend et la gestion de ticket.
Tout le travail côté backend depuis ces derniers mois (gestion d’API, types dynamiques, propriétés dynamiques…) permet d’avancer rapidement sur le code et l’intégration côté frontend.
La dynamique est bonne ^_^
David Durieux - Leader du projet FusionSuite