From 96c1d1d375217bcd640c929b691827c28dc2d3f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Sun, 1 Aug 2010 00:01:05 +0200 Subject: [PATCH] Remplissage des fonctions de Authentification + Session. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les fonctions de gestion des données de session on été déplacées dans une classe séparée. Le code de manipulation des comptes utilisateurs a été déplacé depuis le module AdminUtilisateurs vers Authentification. --- __cms__/modules/admin/utilisateurs.php | 19 +++-- __cms__/securite/authentification.php | 104 ++++++++++++++++--------- __cms__/stockage/session.php | 24 ++++++ 3 files changed, 103 insertions(+), 44 deletions(-) create mode 100644 __cms__/stockage/session.php diff --git a/__cms__/modules/admin/utilisateurs.php b/__cms__/modules/admin/utilisateurs.php index 40270a4..593f627 100644 --- a/__cms__/modules/admin/utilisateurs.php +++ b/__cms__/modules/admin/utilisateurs.php @@ -19,23 +19,26 @@ class AdminUtilisateurs { // Solution B : } else { if (is_set($paramètres["nouveau_nom"]) && ($action == "nouvelle_page")) { - // TODO : SECURITE : Si la page existe déjà, laisser tomber ! - Stockage::nouvelle_page($singleton, $paramètres["nouveau_nom"]); + 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["nouveau_nom"]) && is_set($paramètres["nom"])) { - // renomer la page $paramètres["nom"] + if (is_set($paramètres["nom"]) && is_set($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["mot_de_passe"]) && is_set($paramètres["nom"])) { - Stockage::set_pop($singleton->enfant($paramètres["nom"]), "mot_de_passe", $paramètres["mot_de_passe"]); + if (is_set($paramètres["nom"]) && is_set($paramètres["mot_de_passe"])) { + Authentification::set_mot_de_passe($paramètres["nom"], $paramètres["mot_de_passe"]); } - if (is_set($paramètres["peut_se_connecter"]) && is_set($paramètres["nom"])) { - Stockage::set_pop($singleton->enfant($paramètres["nom"]), "peut_se_connecter", $paramètres["peut_se_connecter"]); + if (is_set($paramètres["nom"]) && is_set($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"])) { + Authentification::set_peut_se_connecter($paramètres["nom"], ($paramètres["peut_se_connecter"] == "true")); } if (is_set($paramètres["vue"])) { diff --git a/__cms__/securite/authentification.php b/__cms__/securite/authentification.php index d4fed61..676fd52 100644 --- a/__cms__/securite/authentification.php +++ b/__cms__/securite/authentification.php @@ -1,41 +1,73 @@ enfant($nom_utilisateur), "mot_de_passe"); + $peut_se_connecter = Stockage::get_prop(self::$singleton->enfant($nom_utilisateur), "peut_se_connecter"); + 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); + return true; + } else { + Session::effacer("utilisateur"); + return false; + } + } + + public function déconnexion() { + Session::effacer("utilisateur"); + } + + public function get_utilisateur() { + Session::get("utilisateur"); + } + + public function nouvel_utilisateur($nom_utilisateur) { + // TODO : SECURITE : Si la page existe déjà, laisser tomber ! + Stockage::nouvelle_page(self::$singleton, $nom_utilisateur); + self::set_mot_de_passe_aléatoire($nom_utilisateur); + self::set_groupe($nom_utilisateur, "Anonymes"); + self::set_peut_se_connecter($nom_utilisateur, false); + } + + public function supprimer_utilisateur($nom_utilisateur) { + // Supprime l'utilisateur créé par nouvel_utilisateur + } + + public function renomer_utilisateur($nom_utilisateur, $nouveau_nom) { + Stockage::renomer($chemin->enfant($nom_utilisateur), $nouveau_nom); + } + + public function set_groupe($nom_utilisateur, $groupe) { + // TODO : Vérifier si le groupe existe ? + Stockage::set_pop($singleton->enfant($nom_utilisateur), "groupe", $groupe); + } + + public function get_groupe($nom_utilisateur) { + return Stockage::get_prop($singleton->enfant($nom_utilisateur), "groupe"); + } + + public function set_mot_de_passe($nom_utilisateur, $mot_de_passe) { + Stockage::set_pop($singleton->enfant($nom_utilisateur), "mot_de_passe", $mot_de_passe); + } + + public function set_mot_de_passe_aléatoire($utilisateur) { + 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($singleton->enfant($nom_utilisateur), "mot_de_passe"); + } + + 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; + } } ?> diff --git a/__cms__/stockage/session.php b/__cms__/stockage/session.php new file mode 100644 index 0000000..b4b9395 --- /dev/null +++ b/__cms__/stockage/session.php @@ -0,0 +1,24 @@ +