Compétences visées | B1.1 Gérer le patrimoine informatique B1.2 Répondre aux incidents et aux demandes d’assistance et d’évolution B1.4 Travailler en mode projet B1.5 Mettre à disposition des utilisateurs un service informatique |
Outils | Virtual Box / Visual Studio Code – Services ssh, apache, mysql |
Présentation du contexte | L’application web de gestion des frais doit être mise en production et validée sur les éléments d’infrastructure du siège social du laboratoire GSB. La version actuelle AppliFrais-v1.0 est uniquement à destination des visiteurs médicaux, qui peuvent consulter l’historique de leurs notes de frais et saisir celle du mois en cours. La validation va se dérouler sur une maquette proche de l’infrastructure réelle système et réseau du siège social du laboratoire GSB. Plusieurs demandes d’évolution concernant cette application web sont également spécifiées et vont constituer la prochaine version AppliFrais-v1.1. L’objectif de cet atelier est de déployer l’application web de gestion des frais des visiteurs médicaux sur l’infrastructure physique système et réseau du laboratoire GSB, et de réaliser parallèlement des demandes d’évolution applicatives. Les serveurs de l’infrastructure seront des machines virtuelles gérées par VirtualBox. |
Besoins / Missions | L’atelier sera mené par des binômes d’étudiants SISR pour l’infrastructure et SLAM pour les demandes d’évolution applicatives. Les étudiants SISR ont pour mission de mettre en place, configurer et tester la maquette proche de l’infrastructure réelle système et réseau du siège social du laboratoire GSB. La version v1.0 de l’application web leur permettra de valider dans un premier temps l’accès des visiteurs médicaux à cette application web hébergée sur le serveur webvislab à partir d’une tablette. Les étudiants SLAM prendront en charge une validation succincte de l’application web v1.0 sous xampp de leur poste de développement W10, puis se répartiront les demandes d’évolutions de l’application web pour fournir la version v1.1 qui sera elle-même déployée sur le serveur webvislab pour la validation finale. |
Ressources fournies | Ressources matérielles : Routeur Cisco 2911 ou 1841 + câble d’alimentation / 4 câbles paires torsadées / 2 câbles console Commutateur Cisco 2911 24 ports + câble d’alimentation Point d’accès Wi-Fi Cisco AIR-LAP1131AG ou LinkSys + câble d’alimentation Tablette ACER 10 pouces ou Samsung 8 pouces / Clé USB Wi-Fi Ressources logicielles OVA : Serveurs virtuels webvislab.ova et labannu.ova obtenus en fin d’AP1-4-GSB-InfraVirtuelle Hôte virtuel Ubuntu Desktop pc02s20.ova obtenu en fin d’AP1-4-GSB-InfraVirtuelle Ou bien les fichiers originaux webvislab.ova, labannu.ova et ud2204.ova Application web AppliFrais-v1.0 : Scripts PHP / scripts SQL Document de spécifications fonctionnelles détaillées GSB-AppliFrais-V1-SpecDetaillees Ressources documentaires : Fiches techniques Ubuntu réseau / Apache / MySql / DHCP sur routeur Cisco / Points d’accès Configuration ssh : Chapitre 1.3 cours Cisco Notions de base sur la commutation, le routage et sans fil Authentification compte Linux par clé RSA et déploiement par commande scp : https://serversforhackers.com/c/ssh-for-easier-deployment |
Productions attendues à déposer sur Moodle | Infrastructure système et réseau : Liste et répartition des taches sur les 2 étudiants option SISR Infrastructure complète telle que demandée dans le cahier des charges (CDC). Voir ci-dessous. Comptes-rendus de configuration des différents services demandés dans le CDC Documents de tests des différents services demandés dans le CDC Application web : Liste et répartition des taches sur les 2 étudiants option SLAM Schéma relationnel de la base de données Dossier de tests de l’application web AppliFrais-v1.0 sur les 3 fonctionnalités Authentification visiteur, consultation des fiches de frais, saisie fiche de frais du mois courant Sur poste de développement W10, application web AppliFrais-v1.1 intégrant les demandes d’évolution DE01 à DE04 fonctionnelles, fournie sous forme d’archive des scripts PHP et scripts SQL Compte-rendu détaillé des différentes demandes applicatives Validation finale : Fonctionnement opérationnel de l’application web AppliFrais-v1.1 sur le serveur webvislab implanté dans l’infrastructure système et réseau GSB à partir d’un poste client fixe ou mobile du réseau DIR/DSI L’accès à la version v1.0 de l’application web sur webvislab sera toujours possible Portefeuille de compétences mis à jour |
Durée | 3 séances de 4h |
Déploiement de l’environnement de développement à l’aide de XAMPP
J’ai tout d’abord lancé les services Apache et MySQL à l’aide de XAMPP

J’ai crée une base de données « gsbfrais » et un utilisateur « userGsb » avec le mot de passe « secret » sur cette base de données possédant tous les droits à l’aide de PhpMyAdmin
Sur cette base de données, j’ai exécuté les trois fichiers SQL suivants :

Ma base de données a bien été importée

J’ai ensuite copié collé le contenu de l’application AppliFrais 1.0 dans htdocs

L’application est dorénavant accessible.

Demande d’évolution DE01
J’ai ajouté une fonction au site internet afin que le mot de passe soit hashé en SHA2 pour plus de sécurité en modifiant la fonction getInfosVisiteur.
J’ai choisi le hashage SHA2 car il est plus sécurisé que les hashages MD5 et SHA1.

Pour tester ma fonction, j’ai créé une table « exemple » en copiant la structure de la table « visiteur » contenant un utilisateur dont le mot de passe est le hash SHA2 256 bits de « mdp »


Je me heurte à une limite de 20 caractères dans la taille du mot de passe qui ne me permet pas de stocker un hash SHA2 qui est représenté par 64 caractères décimaux.
J’ai donc modifié la colonne mdp pour accepter 64 caractères décimaux.

J’ai modifié mon mot de passe pour inclure tous les caractères du hash.

Je peux maintenant me connecter sur mon utilisateur « lvillachane » avec mon mot de passe « mdp »


Pour migrer la fonction sur l’environnement de validation j’ai supprimé la table « exemple », redéfini la requête de la table getInfosVisiteur sur la table Visiteur, modifié la colonne « mdp » de la table Visiteur pour accepter 64 caractères et fait en sorte que le contenu des mots de passe en clair dans la colonne mdp soit remplacés par leur hash pour tous les utilisateurs.


Demande d’évolution DE02
J’ai fait apparaître explicitement le texte Non renseigné lorsque le montant validé est nul.


J’ai fait afficher le total des montants des éléments hors forfait.


Demande d’évolution DE03
Mise au point de la requête SQL permettant d’afficher une ligne par frais, pour un visiteur donné :
select mois, idEtat, dateModif, nbJustificatifs, montantValide,
Etat.libelle as libEtat
from FicheFrais
inner join Etat on FicheFrais.idEtat = Etat.id
where idVisiteur = :idVisiteur
Ajout d’un bouton Synthèse des frais permettant d’accéder à l’affichage de l’ensemble des frais du visiteur.

Affichage sur l’application :

Ajout d’une méthode getLaSyntheseFrais() dans la classe PdoGsb appelant cette la requête SQL mise au point précédemment.

Ajout de la nouvelle action dans le contrôleur c_etatFrais.php.

Affichage sur l’application :

Il s’agit maintenant d’ajouter une colonne pour le montant total des frais hors-forfait par mois et une colonne pour le montant total des frais forfait par mois.
Ajout des frais hors-forfait dans la requête SQL.

Ajout de la colonne Montant Hors-forfait dans le tableau de synthèse.

Affichage sur l’application :

On va maintenant ajouter les frais forfait. Le problème est que l’on ne peut pas ajouter les deux montants de frais (forfait et hors-forfait) dans la même requête SQL, car les sommes contenues dans chaque colonne se multiplient entre elles et cela donne des valeurs bien supérieures à ce qui devrait s’afficher.
Une solution était de créer une vue incluant la requête SQL précédemment mise au point et d’y ajouter une colonne frais forfait et une autre colonne pour les frais engagés.
Vue créée sur phpMyAdmin :

Demande d’évolution DE04
J’ai ajouté un champ fichier sur la page d’ajout des éléments non forfaitisés.


J’ai modifié ma table SQL “fichefraishorsforfait” pour ajouter un champ “pdf” qui indiquera le nom de fichier des éventuels fichiers PDF liés aux élements hors forfait
