diff --git a/__cms__/code/modules/admin/connexion.php b/__cms__/code/modules/admin/connexion.php index 97234b6..d2085b2 100644 --- a/__cms__/code/modules/admin/connexion.php +++ b/__cms__/code/modules/admin/connexion.php @@ -3,19 +3,19 @@ class AdminConnexion { public static function action($chemin, $action, $paramètres) { if ($action == "connexion") { - if (connexion($paramètres["utilisateur"], $paramètres["mdp"])) { - return self::vue("connexion réussie"); + if (Authentification::connexion($paramètres["utilisateur"], $paramètres["mdp"])) { + return self::vue($chemin, "connexion réussie"); } else { - return self::vue("connexion échouée"); + return self::vue($chemin, "connexion échouée"); } } else if ($action == "déconnexion") { - déconnexion(); - return self::vue("déconnexion"); + Authentification::déconnexion(); + return self::vue($chemin, "déconnexion"); } else { if (isset($paramètres["vue"])) { - self::vue($chemin, $paramètres["vue"]); + return self::vue($chemin, $paramètres["vue"]); } else { - self::vue($chemin); + return self::vue($chemin); } } } @@ -26,32 +26,45 @@ class AdminConnexion { // Les quatre vues ("connexion réussie", "déconnexion réussie", // formulaire de connexion, formulaire + "mauvais mdp") if ($vue == "normal") { - return formulaire_connexion(); + $ret = self::formulaire_connexion($chemin); + return new Page($ret, "Connexion"); } else if ($vue == "connexion réussie") { $ret = "

Connexion réussie

"; $ret .= "

Pour vous déconnecter, utilisez le lien «déconnexion» en haut à droite.

"; $ret .= "

Retour à la page d'accueil.

"; - return $ret; + return new Page($ret, "Connexion réussie"); }else if ($vue == "connexion échouée") { $msg = "

Mauvais mot de passe et/ou nom d'utilisateur. Ré-essayez ou retournez à la "; $msg .= "page d'accueil"; $msg .= ".

"; - return formulaire_connexion($msg); + + $ret = self::formulaire_connexion($chemin, "Connexion échouée", $msg); + return new Page($ret, "Connexion échouée"); }else if ($vue == "déconnexion") { $ret = "

Déconnexion réussie

"; $ret .= "

Vous êtes déconnecté. Vous pouvez à présent retourner à la "; $ret .= "page d'accueil"; $ret .= ".

"; - return $ret; + return new Page($ret, "Déconnexion réussie"); } } - public static function formulaire_connexion($message = "") { + public static function formulaire_connexion($chemin, $titre = "Connexion", $message = "") { // TODO - return "

Connexion

" . $message . "..."; + $ret = "

" . $titre . "

"; + $ret .= $message; + $ret .= '
'; + $ret .= ''; + $ret .= '
'; + $ret .= ''; + $ret .= '
'; + $ret .= ''; + $ret .= ''; + $ret .= '
'; + return $ret; } } -Modules::enregister_module("AdminConnexion", "admin-connexion", "vue"); +Modules::enregister_module("AdminConnexion", "admin-connexion", "vue", "utilisateur mdp"); ?> \ No newline at end of file diff --git a/__cms__/code/securite/authentification.php b/__cms__/code/securite/authentification.php index f6abd14..c83806e 100644 --- a/__cms__/code/securite/authentification.php +++ b/__cms__/code/securite/authentification.php @@ -9,7 +9,7 @@ class Authentification { $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 ! + if ($mdp == $mdp_réel && $peut_se_connecter) { // TODO : Vérifier si c'est sécurisé => stocké _uniquement_ sur le serveur. Session::put("utilisateur", $nom_utilisateur); return true; @@ -75,12 +75,12 @@ class Authentification { } public static function set_peut_se_connecter($nom_utilisateur, $valeur) { - Stockage::set_pop(self::singleton()->enfant($nom_utilisateur), "peut_se_connecter", $valeur ? "true" : "false"); + Stockage::set_pop(self::singleton()->enfant($nom_utilisateur), "peut_se_connecter", $valeur ? "oui" : "non"); } public static 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; + $peut_se_connecter = Stockage::get_prop(self::singleton()->enfant($nom_utilisateur), "peut_se_connecter", $forcer_permissions); + return ($peut_se_connecter == "oui") ? true : false; } } diff --git a/__cms__/code/stockage/stockage.php b/__cms__/code/stockage/stockage.php index dd042d0..b717bad 100644 --- a/__cms__/code/stockage/stockage.php +++ b/__cms__/code/stockage/stockage.php @@ -73,7 +73,8 @@ class Stockage { if ($forcer_permissions || Permissions::vérifier_permission($chemin, "get_prop")) { return Système_fichiers::lire(self::fichier_prop($chemin, $prop)); } else { - return false; + Erreur::fatale("Permission non accordée pour la lecture de chemin: " . $chemin->get() . " propriété: " . $prop); + // return false; } } diff --git a/__cms__/code/stockage/systeme-fichiers.php b/__cms__/code/stockage/systeme-fichiers.php index ef886f3..7d73859 100644 --- a/__cms__/code/stockage/systeme-fichiers.php +++ b/__cms__/code/stockage/systeme-fichiers.php @@ -25,7 +25,7 @@ class Système_fichiers { } public static function lire($chemin_fs) { - if (!file_exists($chemin_fs)) return false; + if (!file_exists($chemin_fs)) Erreur::fatale("Ne peut lire le fichier " . $chemin_fs); // return false; return file_get_contents($chemin_fs); } diff --git a/__cms__/donnees/admin/connexion/__prop__type b/__cms__/donnees/admin/connexion/__prop__type new file mode 100644 index 0000000..8ee8526 --- /dev/null +++ b/__cms__/donnees/admin/connexion/__prop__type @@ -0,0 +1 @@ +admin-connexion \ No newline at end of file diff --git a/__cms__/donnees/admin/permissions/__prop__regles b/__cms__/donnees/admin/permissions/__prop__regles index 9793a8a..e12f49a 100644 --- a/__cms__/donnees/admin/permissions/__prop__regles +++ b/__cms__/donnees/admin/permissions/__prop__regles @@ -1,7 +1,8 @@ -/**|*|Administrateurs|oui|Les administrateurs ont tous les droits +/**|*|Administrateurs|oui|Les administrateurs ont tous les droits. /admin/**|*|Administrateurs|oui|Les administrateurs peuvent administer (redondant avec la règle ci-dessus). +/admin/connexion/**|*|*|oui|Tout le monde peut se connecter. /admin/**|*|*|non|Les non-administrateur n'ont pas accès à la section "admin". /forum/|nouvelle_page|Utilisateurs|oui|Les utilisateurs peuvent créer de nouveaux sujets de discussion dans le forum. /forum/*|nouvelle_page|Utilisateurs|oui|Les utilisateurs peuvent créer des messages dans les sujets de discussion. -/forum/*/*|set_prop|Propriétaire|oui|L'auteur d'un message peut en définir le contenu (pas les autres, ce n'est pas un wiki). +/forum/*/*|set_prop|Propriétaire|oui|L'auteur d'un message peut en définir le contenu (pas les autres, ce n'est pas un wiki). /**|get_prop|Anonymes|oui|Le reste du monde peut consulter le site. \ No newline at end of file diff --git a/__cms__/donnees/admin/utilisateurs/admin/__prop__groupe b/__cms__/donnees/admin/utilisateurs/admin/__prop__groupe new file mode 100644 index 0000000..f73fa2e --- /dev/null +++ b/__cms__/donnees/admin/utilisateurs/admin/__prop__groupe @@ -0,0 +1 @@ +Administrateurs \ No newline at end of file diff --git a/__cms__/donnees/admin/utilisateurs/admin/__prop__mot_de_passe b/__cms__/donnees/admin/utilisateurs/admin/__prop__mot_de_passe new file mode 100644 index 0000000..f77b004 --- /dev/null +++ b/__cms__/donnees/admin/utilisateurs/admin/__prop__mot_de_passe @@ -0,0 +1 @@ +admin \ No newline at end of file diff --git a/__cms__/donnees/admin/utilisateurs/admin/__prop__peut_se_connecter b/__cms__/donnees/admin/utilisateurs/admin/__prop__peut_se_connecter new file mode 100644 index 0000000..887ff51 --- /dev/null +++ b/__cms__/donnees/admin/utilisateurs/admin/__prop__peut_se_connecter @@ -0,0 +1 @@ +oui \ No newline at end of file diff --git a/admin/connexion/index.php b/admin/connexion/index.php new file mode 100644 index 0000000..9093528 --- /dev/null +++ b/admin/connexion/index.php @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/permissions.sh b/permissions.sh new file mode 100644 index 0000000..e1c515e --- /dev/null +++ b/permissions.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +fichiers="index.php galerie admin __cms__/donnees" + +chgrp -R www-data $fichiers +chmod 664 $fichiers +find $fichiers -type d -print0 | xargs -0 chmod 775