summaryrefslogtreecommitdiff
path: root/public/index.php
blob: 170c23dc5ac45d550e0955e3ee97609110907269 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
// public/index/php

declare(strict_types=1);


/* -- partie 1: prétraitement -- */

// une nouvelle classe? taper: composer dump-autoload -o
require "../vendor/autoload.php";

// configuration possible par l'utilisateur
Config::load('../config/config.ini');

// les messages d'erreur de déploiement qu'on aime
require('../src/controller/installation.php');
//installation(); // des mkdir et chmod, chiant en dev

// $entityManager
require '../src/model/doctrine-bootstrap.php'; // isDevMode est sur "true", DSN à adapter

URL::setProtocol(Config::$protocol); // utile si port autre que 80 ou 443
URL::setPort(Config::$port);
URL::setHost($_SERVER['HTTP_HOST'] . Config::$index_path);

//require('controller/Session.php');
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'] = !isset($_SESSION['admin']) ? false : $_SESSION['admin']; // intialisation sur faux

// login, mot de passe et captcha
require '../src/controller/password.php';
existUsers($entityManager); // si la table user est vide, on en crée un


/* -- partie 2: affichage d'une page ou traitement d'un POST -- */

// navigation avec les GET
define('CURRENT_PAGE', !empty($_GET['page']) ? htmlspecialchars($_GET['page']) : 'accueil');

// traitement des POST (formulaires et AJAX)
require '../src/controller/post.php';

// id des articles
$id = '';
if(!empty($_GET['id']))
{
    //$id = (int)$_GET['id']; // (int) = moyen basique d'éviter les injections
    $id = Security::secureString($_GET['id']);
}

if(isset($_GET['action']) && $_GET['action'] === 'deconnexion')
{
    disconnect($entityManager);
}
elseif(isset($_GET['action']) && $_GET['action'] === 'modif_mdp')
{
    changePassword($entityManager);
}
elseif($_SESSION['admin'] && isset($_GET['page']) && isset($_GET['action']) && $_GET['action'] === 'modif_page'
    && $_GET['page'] !== 'connexion' && $_GET['page'] !== 'article' && $_GET['page'] !== 'nouvelle_page' && $_GET['page'] !== 'menu_chemins')
{
    // les contrôles de la 2è ligne devraient utiliser un tableau
    MainBuilder::$modif_mode = true;
}

// contrôleur principal
$director = new Director($entityManager, true);
$director->makeRootNode($id);
$node = $director->getNode();

// vues
$view_builder = new ViewBuilder($node);
echo $view_builder->render(); // et voilà!