commit 96c1d1d375217bcd640c929b691827c28dc2d3f5
parent ad971299fbb815198dea531fa5351b30fb95faab
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Sun, 1 Aug 2010 00:01:05 +0200
Remplissage des fonctions de Authentification + Session.
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.
Diffstat:
3 files changed, 103 insertions(+), 44 deletions(-)
diff --git 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
@@ -1,41 +1,73 @@
<?php
-function connexion($utilisateur, $mdp) {
- // vérifie si $utilisateur a pour mot de passe $mdp.
- // Si oui, on place une variable de session, et on renvoie true.
- // (Note : session_start doit avoir été exécuté avant.)
- // La variable de session contient $utilisateur (vérifier si c'est sécurisé...)
- // Si non, on renvoie false.
-}
-
-function déconnexion() {
- // Efface la variable de session positionnée par connexion().
-}
-
-function get_utilisateur() {
- // Renvoie $utilisateur s'il est connecté, false sinon.
-}
-
-function nouvel_utilisateur($utilisateur) {
- // Crée un nouvel utilisateur nommé $utilisateur.
- // Lui affecte un mot de passe aléatoire.
- // Positionne son groupe à "anonyme".
-}
-
-function set_groupe($utilisateur, $groupe) {
- // Positionne le groupe de $utilisateur à $groupe.
-}
-
-function get_groupe($utilisateur) {
- // Renvoie le groupe de $utilisateur.
-}
-
-function supprimer_utilisateur($utilisateur) {
- // Supprime l'utilisateur créé par nouvel_utilisateur
-}
-
-function get_mot_de_passe($utilisateur) {
- // Renvoie le mot de passe de $utilisateur
+class Authentification {
+ private $singleton = new Chemin("/admin/utilisateurs/");
+
+ 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");
+ 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
@@ -0,0 +1,24 @@
+<?php
+
+class Session {
+ public function démarrer() {
+ return session_id !== "" || session_start();
+ }
+
+ public function put($k, $v) {
+ self::démarrer();
+ $_SESSION[$k] = $v;
+ }
+
+ public function get($k) {
+ self::démarrer();
+ return is_set($_SESSION[$k]) ? $_SESSION[$k] : false;
+ }
+
+ public function effacer($k) {
+ self::démarrer();
+ unset($_SESSION[$k]);
+ }
+}
+
+?>