diff --git a/__cms__/chemin/chemin.php b/__cms__/chemin/chemin.php index ac27e8f..b5bf959 100644 --- a/__cms__/chemin/chemin.php +++ b/__cms__/chemin/chemin.php @@ -53,11 +53,11 @@ class Chemin { } public function get_fs_stockage() { - return Path::combine($config_chemin_base_stockage, $this->get()); + return Path::combine(Config::get('chemin_base_stockage'), $this->get()); } public function get_fs_public() { - return Path::combine($config_chemin_base_public, $this->get()); + return Path::combine(Config::get('chemin_base_public'), $this->get()); } public function enfant($nom) { diff --git a/__cms__/cms.php b/__cms__/cms.php index 54e8b19..88cb8d3 100644 --- a/__cms__/cms.php +++ b/__cms__/cms.php @@ -1,6 +1,13 @@ \ No newline at end of file diff --git a/__cms__/config.php b/__cms__/config.php index 7b548ea..d060b37 100644 --- a/__cms__/config.php +++ b/__cms__/config.php @@ -1,26 +1,29 @@ \ No newline at end of file diff --git a/__cms__/modules/admin/couleurs.php b/__cms__/modules/admin/couleurs.php index 0a98c36..c3547bd 100644 --- a/__cms__/modules/admin/couleurs.php +++ b/__cms__/modules/admin/couleurs.php @@ -5,18 +5,18 @@ class AdminCouleurs { if ($action == "anuler") { return redirect($chemin); } else { - if (is_set($paramètres["Couleur_A"])) { + if (isset($paramètres["Couleur_A"])) { // Stocker couleur A } - if (is_set($paramètres["Couleur_B"])) { + if (isset($paramètres["Couleur_B"])) { // Stocker couleur B } - if (is_set($paramètres["Couleur_C"])) { + if (isset($paramètres["Couleur_C"])) { // Stocker couleur C } // ... - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -45,6 +45,6 @@ class AdminCouleurs { } } -enregister_module("AdminCouleurs", "admin-couleurs"); +Modules::enregister_module("AdminCouleurs", "admin-couleurs"); ?> \ No newline at end of file diff --git a/__cms__/modules/admin/permissions.php b/__cms__/modules/admin/permissions.php index 9a67bbf..2844252 100644 --- a/__cms__/modules/admin/permissions.php +++ b/__cms__/modules/admin/permissions.php @@ -6,11 +6,11 @@ class AdminPermissions { if ($action == "anuler") { return redirect($chemin); } else { - if (is_set($paramètres["regles"])) { + if (isset($paramètres["regles"])) { Stockage::set_prop($singleton, "regles", $paramètres["regles"]); } - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -34,6 +34,6 @@ class AdminPermissions { } } -enregister_module("AdminPermissions", "admin-permissions"); +Modules::enregister_module("AdminPermissions", "admin-permissions"); ?> \ No newline at end of file diff --git a/__cms__/modules/admin/utilisateurs.php b/__cms__/modules/admin/utilisateurs.php index 2432705..bef090c 100644 --- a/__cms__/modules/admin/utilisateurs.php +++ b/__cms__/modules/admin/utilisateurs.php @@ -18,36 +18,36 @@ class AdminUtilisateurs { // Solution B : } else { - if (is_set($paramètres["nouveau_nom"]) && ($action == "nouvelle_page")) { + if (isset($paramètres["nouveau_nom"]) && ($action == "nouvelle_page")) { // TODO : SECURITE : Si l'utilisateur existe déjà, laisser tomber et ne pas faire les set_* qui suivent ! Authentification::nouvel_utilisateur($paramètres["nouveau_nom"]); $paramètres["nom"] = $paramètres["nouveau_nom"]; // TODO : message de confirmation quelque part ? } - if (is_set($paramètres["nom"]) && is_set($paramètres["nouveau_nom"]) && ($action != "nouvelle_page")) { + if (isset($paramètres["nom"]) && isset($paramètres["nouveau_nom"]) && ($action != "nouvelle_page")) { Authentification::renomer_utilisateur($paramètres["nom"], $paramètres["nouveau_nom"]); $paramètres["nom"] = $paramètres["nouveau_nom"]; } - if (is_set($paramètres["nom"]) && is_set($paramètres["mot_de_passe"])) { + if (isset($paramètres["nom"]) && isset($paramètres["mot_de_passe"])) { Authentification::set_mot_de_passe($paramètres["nom"], $paramètres["mot_de_passe"]); } - if (is_set($paramètres["nom"]) && is_set($paramètres["groupe"])) { + if (isset($paramètres["nom"]) && isset($paramètres["groupe"])) { Authentification::set_groupe($paramètres["nom"], $paramètres["groupe"]); } - if (is_set($paramètres["nom"]) && is_set($paramètres["peut_se_connecter"])) { + if (isset($paramètres["nom"]) && isset($paramètres["peut_se_connecter"])) { Authentification::set_peut_se_connecter($paramètres["nom"], ($paramètres["peut_se_connecter"] == "true")); } - if (is_set($paramètres["nom"]) && ($action == "supprimer")) { + if (isset($paramètres["nom"]) && ($action == "supprimer")) { Authentification::supprimer_utilisateur($paramètres["nom"]); // TODO : message de confirmation quelque part ? } - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -87,6 +87,6 @@ class AdminUtilisateurs { } } -enregister_module("AdminUtilisateurs", "admin-utilisateurs"); +Modules::enregister_module("AdminUtilisateurs", "admin-utilisateurs"); ?> \ No newline at end of file diff --git a/__cms__/modules/forum/forum-index.php b/__cms__/modules/forum/forum-index.php index a508d86..9962c14 100644 --- a/__cms__/modules/forum/forum-index.php +++ b/__cms__/modules/forum/forum-index.php @@ -11,7 +11,7 @@ class ForumIndex { Stockage::set_prop($np, "proprietaire", get_utilisateur()); return redirect($np); } else { - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -36,6 +36,6 @@ class ForumIndex { } } -enregister_module("ForumIndex", "forum-index"); +Modules::enregister_module("ForumIndex", "forum-index"); ?> \ No newline at end of file diff --git a/__cms__/modules/forum/forum-message.php b/__cms__/modules/forum/forum-message.php index 36c2d59..e7e7428 100644 --- a/__cms__/modules/forum/forum-message.php +++ b/__cms__/modules/forum/forum-message.php @@ -7,12 +7,12 @@ function action($chemin, $action, $paramètres) { Stockage::supprimer($chemin); return redirect($chemin->parent()); } else { - if (is_set($paramètres["message"])) { + if (isset($paramètres["message"])) { Stockage::set_prop($chemin, "message", $paramètres["message"]); } // TODO ... Quelles sont les interactions entre l'utilisateur et le message, dans quel ordre, ... - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { Modules::vue($chemin->parent(), $paramètres["vue"]); } else { Modules::vue($chemin->parent()); @@ -36,6 +36,6 @@ function vue($chemin, $vue = "normal") { } } -enregister_module("ForumMessage", "forum-message"); +Modules::enregister_module("ForumMessage", "forum-message"); ?> \ No newline at end of file diff --git a/__cms__/modules/forum/forum-sujet.php b/__cms__/modules/forum/forum-sujet.php index 1849e14..575d98d 100644 --- a/__cms__/modules/forum/forum-sujet.php +++ b/__cms__/modules/forum/forum-sujet.php @@ -16,13 +16,13 @@ class ForumSujet { Stockage::supprimer($chemin); return redirect($chemin->parent()); } else { - if (is_set($paramètres["titre"])) { + if (isset($paramètres["titre"])) { Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); // TODO : peut-être redirect($chemin) ? } - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -65,6 +65,6 @@ class ForumSujet { } } -enregister_module("ForumSujet", "forum-sujet"); +Modules::enregister_module("ForumSujet", "forum-sujet"); ?> \ No newline at end of file diff --git a/__cms__/modules/galerie/galerie-evenement.php b/__cms__/modules/galerie/galerie-evenement.php index f595f4b..dcabae1 100644 --- a/__cms__/modules/galerie/galerie-evenement.php +++ b/__cms__/modules/galerie/galerie-evenement.php @@ -12,16 +12,16 @@ class GalerieÉvènement { Stockage::supprimer($chemin); return redirect($chemin->parent()); } else { - if (is_set($paramètres["titre"])) { + if (isset($paramètres["titre"])) { Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); // TODO : peut-être redirect($chemin) ? } - if (is_set($paramètres["description"])) { + if (isset($paramètres["description"])) { Stockage::set_prop($chemin, "description", $paramètres["description"]); } - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -59,12 +59,12 @@ class GalerieÉvènement { return $ret; } else if ($vue == "miniature") { $enfants = Stockage::liste_enfants($chemin); - if (is_set($enfants[0])) return Modules::vue($enfants[0], 'miniature'); + if (isset($enfants[0])) return Modules::vue($enfants[0], 'miniature'); else return "Aucune
photo"; } } } -enregister_module("GalerieÉvènement", "galerie-evenement"); +Modules::enregister_module("GalerieÉvènement", "galerie-evenement"); ?> \ No newline at end of file diff --git a/__cms__/modules/galerie/galerie-index.php b/__cms__/modules/galerie/galerie-index.php index 42ea7eb..8bf4682 100644 --- a/__cms__/modules/galerie/galerie-index.php +++ b/__cms__/modules/galerie/galerie-index.php @@ -12,16 +12,16 @@ class GalerieIndex { Stockage::supprimer($chemin); return redirect($chemin->parent()); } else { - if (is_set($paramètres["titre"])) { + if (isset($paramètres["titre"])) { Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); // TODO : peut-être redirect($chemin) ? } - if (is_set($paramètres["description"])) { + if (isset($paramètres["description"])) { Stockage::set_prop($chemin, "description", $paramètres["description"]); } - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -59,12 +59,12 @@ class GalerieIndex { return $ret; } else if ($vue == "miniature") { $enfants = Stockage::liste_enfants($chemin); - if (is_set($enfants[0])) return Modules::vue($enfants[0], 'miniature'); + if (isset($enfants[0])) return Modules::vue($enfants[0], 'miniature'); else return "Aucune
photo"; } } } -enregister_module("GalerieIndex", "galerie-index"); +Modules::enregister_module("GalerieIndex", "galerie-index"); ?> \ No newline at end of file diff --git a/__cms__/modules/galerie/galerie-periode.php b/__cms__/modules/galerie/galerie-periode.php index d68d13d..0f027ce 100644 --- a/__cms__/modules/galerie/galerie-periode.php +++ b/__cms__/modules/galerie/galerie-periode.php @@ -12,16 +12,16 @@ class GaleriePériode { Stockage::supprimer($chemin); return redirect($chemin->parent()); } else { - if (is_set($paramètres["titre"])) { + if (isset($paramètres["titre"])) { Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); // TODO : peut-être redirect($chemin) ? } - if (is_set($paramètres["description"])) { + if (isset($paramètres["description"])) { Stockage::set_prop($chemin, "description", $paramètres["description"]); } - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -59,12 +59,12 @@ class GaleriePériode { return $ret; } else if ($vue == "miniature") { $enfants = Stockage::liste_enfants($chemin); - if (is_set($enfants[0])) return Modules::vue($enfants[0], 'miniature'); + if (isset($enfants[0])) return Modules::vue($enfants[0], 'miniature'); else return "Aucune
photo"; } } } -enregister_module("GaleriePériode", "galerie-periode"); +Modules::enregister_module("GaleriePériode", "galerie-periode"); ?> \ No newline at end of file diff --git a/__cms__/modules/galerie/galerie-photo.php b/__cms__/modules/galerie/galerie-photo.php index 0fd6c27..fa4c458 100644 --- a/__cms__/modules/galerie/galerie-photo.php +++ b/__cms__/modules/galerie/galerie-photo.php @@ -8,23 +8,23 @@ class GaleriePhoto { Stockage::supprimer($chemin); return redirect($chemin->parent()); } else { - if (is_set($paramètres["fichier_image"])) { + if (isset($paramètres["fichier_image"])) { // redimensionner l'image avec gd, stocker la miniature dans // prop_image_mini (set_prop_fichier()). // Pb : Où est-ce qu'on met temporairement la miniature // avant de la déplacer ??? // stocker le fichier reçu dans prop_image (set_prop_fichier_reçu()). } - /* if (is_set($paramètres["titre"])) { + /* if (isset($paramètres["titre"])) { Stockage::renomer($chemin, $paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]); // TODO : peut-être redirect($chemin) ? }*/ - if (is_set($paramètres["description"])) { + if (isset($paramètres["description"])) { Stockage::set_prop($chemin, "description", $paramètres["description"]); } - if (is_set($paramètres["vue"])) { + if (isset($paramètres["vue"])) { self::vue($chemin, $paramètres["vue"]); } else { self::vue($chemin); @@ -56,6 +56,6 @@ class GaleriePhoto { } } -enregister_module("GaleriePhoto", "galerie-photo"); +Modules::enregister_module("GaleriePhoto", "galerie-photo"); ?> \ No newline at end of file diff --git a/__cms__/modules/include.php b/__cms__/modules/include.php index a8cdace..a6cd774 100644 --- a/__cms__/modules/include.php +++ b/__cms__/modules/include.php @@ -1,5 +1,7 @@ \ No newline at end of file diff --git a/__cms__/securite/authentification.php b/__cms__/securite/authentification.php index 38697ff..b78d96d 100644 --- a/__cms__/securite/authentification.php +++ b/__cms__/securite/authentification.php @@ -6,8 +6,9 @@ class Authentification { } public function connexion($nom_utilisateur, $mdp) { - $mdp_réel = Stockage::get_prop(self::singleton()->enfant($nom_utilisateur), "mot_de_passe"); - $peut_se_connecter = Stockage::get_prop(self::singleton()->enfant($nom_utilisateur), "peut_se_connecter"); + $ch_utilisateur = self::singleton()->enfant($nom_utilisateur); + $mdp_réel = self::get_mot_de_passe($nom_utilisateur, true); // true => forcer permissions. + $peut_se_connecter = self::get_peut_se_connecter($nom_utilisateur, true); // true => forcer permissions. if ($mdp == $mdp_réel && $peut_se_connecter === "true") { // Triple égale. Pas d'entourloupe avec des casts miteux ! // TODO : Vérifier si c'est sécurisé => stocké _uniquement_ sur le serveur. Session::put("utilisateur", $nom_utilisateur); @@ -57,8 +58,8 @@ class Authentification { Stockage::set_pop(self::singleton()->enfant($nom_utilisateur), "groupe", $groupe); } - public function get_groupe($nom_utilisateur) { - return Stockage::get_prop(self::singleton()->enfant($nom_utilisateur), "groupe"); + public function get_groupe($nom_utilisateur, $forcer_permissions = false) { + return Stockage::get_prop(self::singleton()->enfant($nom_utilisateur), "groupe", $forcer_permissions); } public function set_mot_de_passe($nom_utilisateur, $mot_de_passe) { @@ -69,16 +70,17 @@ class Authentification { self::set_mot_de_passe($utilisateur, substr(md5($utilisateur . rand() . microtime()) , 0, 8)); } - public function get_mot_de_passe($nom_utilisateur) { - return Stockage::get_prop(self::singleton()->enfant($nom_utilisateur), "mot_de_passe"); + public function get_mot_de_passe($nom_utilisateur, $forcer_permissions = false) { + return Stockage::get_prop(self::singleton()->enfant($nom_utilisateur), "mot_de_passe", $forcer_permissions); } public function set_peut_se_connecter($nom_utilisateur, $valeur) { Stockage::set_pop(self::singleton()->enfant($nom_utilisateur), "peut_se_connecter", $valeur ? "true" : "false"); } - public function get_peut_se_connecter($nom_utilisateur) { - return (Stockage::get_pop(self::singleton()->enfant($nom_utilisateur), "peut_se_connecter") == "true") ? true : false; + public function get_peut_se_connecter($nom_utilisateur, $forcer_permissions = false) { + $peut_se_connecter = Stockage::get_pop(self::singleton()->enfant($nom_utilisateur), "peut_se_connecter", $forcer_permissions); + return ($peut_se_connecter == "true") ? true : false; } } diff --git a/__cms__/securite/erreur.php b/__cms__/securite/erreur.php new file mode 100644 index 0000000..2f50a73 --- /dev/null +++ b/__cms__/securite/erreur.php @@ -0,0 +1,27 @@ + + + + + Erreur + + +

Erreur

+

Désolé, une erreur est survenue. Contactez le créateur du site SVP : + ' + . htmlspecialchars(Config::get('courriel_admin')) + . '. Indiquez l\'erreur ci-dessous dans votre courriel.

+

' . htmlspecialchars($message) . '

+ +'; + + exit; + } +} + +?> \ No newline at end of file diff --git a/__cms__/securite/include.php b/__cms__/securite/include.php index 6738cb2..6184990 100644 --- a/__cms__/securite/include.php +++ b/__cms__/securite/include.php @@ -1,5 +1,6 @@ forcer permissions. // Parcourt la liste les règles de sécurité (get_regles()), et // sélectionne la première pour laquelle $chemin correspond au motif @@ -50,15 +50,17 @@ class Permissions { $str_regles .= "\n"; // TODO vérifier que la séquence d'échappement est bien comprise. } - return Stockage::get_prop(self::singleton(), "regles", $str_regles); + return Stockage::set_prop(self::singleton(), "regles", $str_regles); } public function get_regles() { // Renvoie un tableau de quadruplets // (chemin, action, groupe, autorisation). // ou false si erreur. - $str_regles = Stockage::get_prop(self::singleton(), "regles"); - // TODO erreur si la propriété n'existe pas. + + $str_regles = Stockage::get_prop(self::singleton(), "regles", true); // true => forcer permissions. + if (!$str_regles) Erreur::fatale("Impossible de lire les règles de sécurité."); + $str_regles = preg_replace('/\r\n|\r/', "\n", $str_regles); $regles = array(); // TODO : ignorer les lignes vides ! diff --git a/__cms__/site/include.php b/__cms__/site/include.php index 5b6f28c..d97fe7d 100644 --- a/__cms__/site/include.php +++ b/__cms__/site/include.php @@ -1,6 +1,5 @@ \ No newline at end of file diff --git a/__cms__/stockage/session.php b/__cms__/stockage/session.php index 587cd97..cbd604f 100644 --- a/__cms__/stockage/session.php +++ b/__cms__/stockage/session.php @@ -2,7 +2,7 @@ class Session { public function démarrer() { - return session_id !== "" || session_start(); + return (session_id() !== "") || session_start(); } public function put($k, $v) { @@ -12,7 +12,7 @@ class Session { public function get($k) { self::démarrer(); - return is_set($_SESSION[$k]) ? $_SESSION[$k] : false; + return isset($_SESSION[$k]) ? $_SESSION[$k] : false; } public function effacer($k) { @@ -21,4 +21,4 @@ class Session { } } -?> \ No newline at end of file +?> diff --git a/__cms__/stockage/stockage.php b/__cms__/stockage/stockage.php index ed7ee74..9b2f2e0 100644 --- a/__cms__/stockage/stockage.php +++ b/__cms__/stockage/stockage.php @@ -63,10 +63,10 @@ class Stockage { // $forcer_permissions permet à vérifier_permission() et ses // dépendances get_regles() et get_groupe() de faire des get_prop // même si l'utilisateur courant n'en a pas le droit. - if ($forcer_permissions || vérifier_permission($chemin, "get_prop")) { - return SystemeFichiers::lire(Path::combine($chemin->get_fs_stockage(), $prop)); + if ($forcer_permissions || Permissions::vérifier_permission($chemin, "get_prop")) { + return SystèmeFichiers::lire(Path::combine($chemin->get_fs_stockage(), $prop)); } else { - return "[Accès interdit]"; + return false; } } diff --git a/__cms__/stockage/systeme-fichiers.php b/__cms__/stockage/systeme-fichiers.php index 07051bc..1f078c5 100644 --- a/__cms__/stockage/systeme-fichiers.php +++ b/__cms__/stockage/systeme-fichiers.php @@ -25,15 +25,15 @@ class SystèmeFichiers { } public function lire($chemin_fs) { - file_get_contents($chermin_fs); + return file_exists($chemin_fs) && file_get_contents($chemin_fs); } public function écrire($chemin_fs, $données) { - file_put_contents($chemin_fs, $données); + return is_dir(dirname($chemin_fs)) && file_put_contents($chemin_fs, $données); } public function liste_fichiers($chemin_fs) { - return scandir($chemin_fs); + return is_dir($chemin_fs) && scandir($chemin_fs); } public function déplacer($chemin_fs_de, $chemin_fs_vers) {