Projet de 2ème année BTS SIO SLAM - EPI'Solidaire

Contexte

Ce projet a été réalisé en deuxième année de BTS SIO avec la spécialité SLAM, en collaboration avec un binôme. L'objectif était de développer un intranet pour la mairie de Getcet S/Mer, permettant de gérer les différents rôles des utilisateurs, tels que Maire, Secrétaire, Épicier et Commerçant, en utilisant le pattern MVC.

Besoins et Missions

En tant que chef de projet, j'étais chargé de superviser le développement de l'application et d'assurer la coordination entre les différentes parties. Le projet visait à fournir :

  • Un intranet pour la mairie, avec gestion des rôles et des accès pour différents utilisateurs.
  • Une interface de gestion des dons alimentaires, incluant la validation et l'enregistrement des dons extérieurs.
  • La sécurisation des données via l'utilisation de requêtes préparées pour éviter les injections SQL.
Langages et Outils
  • PHP
  • MySQL
  • JavaScript
  • HTML/CSS
Dates du projet

Du 11/10/24 au 29/11/24

Durée : 1 mois (Terminé)

Annexes Intéressantes du projet
Page d'accueil de l'intranet Structure de la base de données
Spécifications Fonctionnelles

Le projet répond aux besoins spécifiques de chaque rôle utilisateur :

  • Maire : Consultation des statistiques des dons, gestion des commerçants, et visualisation des rapports.
  • Secrétaire : Gestion des acheteurs, ajout et suppression de profils, et vérification des informations.
  • Épicier : Gestion des stocks, des dons reçus, et des ventes à prix réduits.
  • Commerçant : Enregistrement des dons et gestion des produits donnés.
Notions et Concepts Clés

Le projet intègre plusieurs concepts avancés :

  • Navigation par Rôle : La gestion des rôles (Maire, Secrétaire) permet de rediriger les utilisateurs vers les sections spécifiques de l'application, renforçant la sécurité et la personnalisation de l'expérience utilisateur.
  • Sécurisation avec Requêtes Préparées : Utilisation de requêtes préparées pour protéger l'application des attaques par injection SQL, en particulier lors de la connexion et de la gestion des dons.
  • POO et MVC : Utilisation de la Programmation Orientée Objet (POO) et du pattern MVC pour organiser le code de manière modulaire et maintenable.
Gestion de la Connexion Utilisateur

Le système de connexion est sécurisé grâce à l'utilisation de requêtes préparées et d'un chiffrement des mots de passe. Voici un extrait de code montrant cette approche :


$login = $_REQUEST['login'];
$mdp = $_REQUEST['mdp'];
$mdp = md5($mdp); // Chiffrement du mot de passe
$verif = $pdo->testConnexionEmploye($login, $mdp);

if ($verif == 0) {
    ajouterErreur("Login ou mot de passe incorrect");
    include("vues/v_erreurs.php");
    include("vues/v_connexion.php");
} else {
    // Récupérer les informations de l'employé
    $employe = $pdo->getInfosEmploye($login, $mdp);
    $_SESSION['role'] = $employe['role'];
}
                
Gestion des Dons Extérieurs

Le module d'enregistrement des dons extérieurs comporte plusieurs vérifications pour garantir la validité des informations saisies :


$idCommerce = $_REQUEST['idCommerce'] ?? null;
$refProduit = $_REQUEST['refProduit'] ?? null;
$dateduDon = $_REQUEST['dateduDon'] ?? null;
$prixOrigine = $_REQUEST['prixOrigine'] ?? null;
$qte = $_REQUEST['qte'] ?? null;

// Vérification des champs obligatoires
if (empty($idCommerce) || empty($refProduit) || empty($dateduDon) || empty($prixOrigine) || empty($qte)) {
    $errorMessage = "Tous les champs doivent être remplis.";
    include('vues/v_messageErreurDons.php');
    break;
}

// Enregistrer le don
$pdo->ajouterDon($idCommerce, $refProduit, $dateduDon, $prixOrigine, $qte);
$successMessage = "Le don a été enregistré avec succès.";
                
Résumé et Apports du Projet

Ce projet m'a permis de développer mes compétences en tant que chef de projet, notamment dans la gestion d'une équipe et la coordination du travail. J'ai également appris à utiliser des outils et des méthodes pour sécuriser les données des utilisateurs et à m'assurer que les rôles et permissions sont correctement gérés au sein de l'application.

Évolutions Potentielles

Pour l'avenir, plusieurs évolutions pourraient être envisagées :

  • Intégration d'une interface plus moderne et ergonomique en utilisant des frameworks front-end comme Vue.js ou React.
  • Extension du système de gestion des rôles pour inclure d'autres niveaux de permissions (par exemple, un accès restreint pour certains utilisateurs).
  • Optimisation des requêtes SQL pour améliorer les performances, en particulier sur de grandes quantités de données.
  • Ajout d'une fonctionnalité de reporting plus avancée, permettant de générer des rapports détaillés sur les dons et les utilisateurs.
Défis et Difficultés

Le plus grand défi pour moi a été de garder un œil sur l'ensemble du projet en tant que chef de projet, tout en coordonnant les tâches avec mon binôme. La nécessité de regrouper et de maintenir le code de manière cohérente a également été un défi important, en particulier pour s'assurer que chaque module s'intègre bien avec les autres.