From 3b369122645b07b290f7fcc7bccb4787745cd5ea Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 24 Mar 2026 22:39:29 +0100 Subject: =?UTF-8?q?mode=20maintenance,=20optimisation=20moins=20de=20contr?= =?UTF-8?q?=C3=B4les=20en=20mode=20run,=20dossier=20service=20et=20d=C3=A9?= =?UTF-8?q?placement=20fichiers,=20sessions=20et=20entit=C3=A9=20User=20pr?= =?UTF-8?q?=C3=A9par=C3=A9es=20=C3=A0=20l'impl=C3=A9mentation=20hypoth?= =?UTF-8?q?=C3=A9tique=20des=20r=C3=B4les,=20entit=C3=A9=20AppMetadata,=20?= =?UTF-8?q?meilleure=20s=C3=A9curit=C3=A9=20de=20fillStartingDatabase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/index.php | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) (limited to 'public') diff --git a/public/index.php b/public/index.php index be2e85b..a12bc47 100644 --- a/public/index.php +++ b/public/index.php @@ -8,17 +8,16 @@ A - 2/ routeur structuré: méthodes GET et POST, content-type, admin 3/ routeur amélioré: pré-routage avec méthodes HTTP: GET, HEAD, POST, PUT, PATCH, DELETE, etc 4/ réécriture avec les classes Request et Response sans toucher les liens + 5/ http-foundation possède aussi une classe Session. intéressant! B - 1/ passer à des chemins modernes "ciblant des ressources" genre /chemin/de/la/page le mode modification de page doit thérioquement être appelé comme ça: /chemin/de/la/page/modif_page apparemment, le from=nom_page pour les formulaires ne se fait pas... - 2/ utiliser le routeur de symfony: nécéssite que tous les contrôleurs soient des classes avec un namespace - 3/ http-foundation possède aussi une classe Session. intéressant! */ + 2/ utiliser le routeur de symfony: nécéssite que tous les contrôleurs soient des classes avec un namespace */ declare(strict_types=1); use Symfony\Component\HttpFoundation\Request; -//use Symfony\Component\HttpFoundation\Session\Session; /* -- partie 1: prétraitement -- @@ -35,32 +34,36 @@ URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443 URL::setPort(Config::$port); URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path); -// les messages d'erreur de déploiement qu'on aime -require('../src/installation.php'); -phpDependancies(); -installation(); // droits des dossiers et fichier config.ini - // $entityManager require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter +// mode de fonctionnement +AppMode::load($entityManager); + +// tests de bon fonctionnement +if(AppMode::is('maintenance')){ + Installation::phpDependancies(); + Installation::checkFilesAndFoldersRights(); + + // si appelée pour la 1ère fois, remplit la BDD et active le mode "run" + Installation::fillStartingDatabase($entityManager); +} + $request = Request::createFromGlobals(); // session -// (symfony/http-foundation pourrait nous aider avec les sessions) -ini_set('session.cookie_samesite', 'Strict'); -ini_set('session.cookie_httponly', 'On'); -ini_set('session.use_strict_mode', 'On'); -ini_set('session.cookie_secure', 'On'); -session_start(); - -$_SESSION['admin'] = $_SESSION['admin'] ?? false; -if($_SESSION['admin'] === false || empty($_SESSION['user'])){ // OUT !! - $_SESSION['user'] = ''; - $_SESSION['admin'] = false; +require('../src/service/session.php'); + +// en mode maintenance laisser la possibilité de se logger, bloquer le reste du site aux visiteurs +if(AppMode::is('maintenance') && !IS_ADMIN + && !($request->query->has('page') && $request->query->get('page') === 'connection') + && !($request->query->has('action') && $request->query->get('action') === 'connection')){ + require '../src/view/templates/maintenance.php'; + die; } /* -- partie 2: routage et contrôleurs -- */ define('CURRENT_PAGE', htmlspecialchars($request->query->get('page') ?? '')); -require '../src/router.php'; \ No newline at end of file +require '../src/service/router.php'; \ No newline at end of file -- cgit v1.2.3