diff --git a/README.md b/README.md index 6a96157..23647e0 100644 --- a/README.md +++ b/README.md @@ -1 +1,57 @@ -# SAE_203_Gestion_des_sauveteurs \ No newline at end of file +# SAE 2.3 - Gestion des sauveteurs SSF + +--- + +## 1. Installation + +1. Copier le dossier dans le répertoire web +2. Modifier `config/config.php` avec les identifiants de votre base MariaDB/MySQL + +--- + +**Modifications ALTER par rapport au schéma initial :** +- `Utilisateur` : ajout de `nom`, `prenom`, `nomdep`, `num_tel` +- `Mission` : ajout de `Lieu` + +--- + +## 2. Rôles + +| Rôle | Permissions | Redirection après connexion | +|---|---|---| +| **lecture** | Planning uniquement | `planning` | +| **gestionnaire** | Planning + Missions + Ajout sauveteur | `operations` | +| **administration** | Tout + Gestion des comptes | `modif_utilisateurs_form` | + +--- + +## 3. Comptes de test + +| Login | Mot de passe | Rôle | +|---|---|---| +| `vverdon` | `gtrnet` | administration | +| `admin` | `admin` | administration | +| `gestionnaire` | `gestionnaire` | gestionnaire | +| `lecture` | `lecture` | lecture | + +--- + +## 4. Sécurité + +- **PDO** avec requêtes préparées et paramètres nommés (`:login`, `:date`) +- **password_hash()** (bcrypt) pour le stockage des mots de passe +- **password_verify()** pour la vérification à la connexion +- **session_regenerate_id(true)** après authentification +- **Regex** de validation des routes : `preg_match('#^[a-zA-Z0-9 _]*$#')` +- **htmlentities()** sur toutes les sorties utilisateur (protection XSS) + +--- + +## 5. Planning — Fonctionnement + +- 48 créneaux de 30 minutes (00:00 à 23:30) +- 1 ligne par sauveteur +- Test de chevauchement créneau/mission avec `DateTime` +- 7 couleurs correspondant aux 7 statuts SSF +- Opacité réduite (0.4) + lettre "P" pour les missions en préparation +- Durée indéterminée : date de fin = `2099-12-31` diff --git a/base.sql b/base.sql new file mode 100644 index 0000000..288ad8f --- /dev/null +++ b/base.sql @@ -0,0 +1,59 @@ +CREATE TABLE Utilisateur ( + ID INT AUTO_INCREMENT PRIMARY KEY, + login VARCHAR(50) NOT NULL UNIQUE, + passwd VARCHAR(255) NOT NULL, + type VARCHAR(50) NOT NULL DEFAULT 'lecture', + nom VARCHAR(100), + prenom VARCHAR(100), + nomdep VARCHAR(10), + num_tel VARCHAR(20) +); + + +CREATE TABLE Sauveteur ( + ID INT AUTO_INCREMENT PRIMARY KEY, + nom VARCHAR(100) NOT NULL, + prenom VARCHAR(100) NOT NULL, + departement VARCHAR(10) NOT NULL, + specialite VARCHAR(100) NOT NULL, + NumTel VARCHAR(20), + DateHeureEngagement DATETIME NOT NULL +); + + +CREATE TABLE Statut ( + ID INT AUTO_INCREMENT PRIMARY KEY, + TypeStatut VARCHAR(50) NOT NULL, + couleur VARCHAR(20) NOT NULL +); + + +CREATE TABLE Mission ( + ID INT AUTO_INCREMENT PRIMARY KEY, + DateHeureDebut DATETIME NOT NULL, + DateHeureFin DATETIME, + EnPrepa BOOLEAN NOT NULL DEFAULT 0, + Lieu VARCHAR(255), + ID_Sauveteur INT NOT NULL, + ID_statut INT NOT NULL, + ID_Utilisateur INT NOT NULL, + CONSTRAINT fk_mission_sauveteur + FOREIGN KEY (ID_Sauveteur) REFERENCES Sauveteur(ID) + ON DELETE CASCADE, + CONSTRAINT fk_mission_statut + FOREIGN KEY (ID_statut) REFERENCES Statut(ID) + ON DELETE RESTRICT, + CONSTRAINT fk_mission_utilisateur + FOREIGN KEY (ID_Utilisateur) REFERENCES Utilisateur(ID) + ON DELETE RESTRICT +); + + +INSERT INTO Statut (TypeStatut, couleur) VALUES +('Sauveteur disponible', 'vert'), +('Sauveteur en approche de la cavite', 'violet'), +('Sauveteur sous terre', 'marron'), +('Sauveteur equipe de gestion', 'jaune'), +('Sauveteur en mission a l exterieur', 'orange'), +('Sauveteur en repos', 'bleu'), +('Sauveteur en brancardage civiere', 'rouge'); diff --git a/index.php~ b/index.php~ deleted file mode 100644 index 302f8b6..0000000 --- a/index.php~ +++ /dev/null @@ -1,78 +0,0 @@ -