www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 5b3e7db376c1e2b56b1876898fffd5b27f1ab99e
parent a789019f8485ed2c017bd3b7e43ae6de002d5afa
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Wed,  4 Aug 2010 12:01:55 +0200

Connexion (mais pas encore déconnexion :-p)

Diffstat:
M__cms__/code/modules/admin/connexion.php | 41+++++++++++++++++++++++++++--------------
M__cms__/code/securite/authentification.php | 8++++----
M__cms__/code/stockage/stockage.php | 3++-
M__cms__/code/stockage/systeme-fichiers.php | 2+-
A__cms__/donnees/admin/connexion/__prop__type | 2++
M__cms__/donnees/admin/permissions/__prop__regles | 5+++--
A__cms__/donnees/admin/utilisateurs/admin/__prop__groupe | 2++
A__cms__/donnees/admin/utilisateurs/admin/__prop__mot_de_passe | 2++
A__cms__/donnees/admin/utilisateurs/admin/__prop__peut_se_connecter | 2++
Aadmin/connexion/index.php | 8++++++++
Apermissions.sh | 7+++++++
11 files changed, 60 insertions(+), 22 deletions(-)

diff --git 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 = "<h2>Connexion réussie</h2>"; $ret .= "<p>Pour vous déconnecter, utilisez le lien «déconnexion» en haut à droite.</p>"; $ret .= "<p><a href=\"" . Config::get("url_base") . "\">Retour à la page d'accueil</a>.</p>"; - return $ret; + return new Page($ret, "Connexion réussie"); }else if ($vue == "connexion échouée") { $msg = "<p><strong>Mauvais mot de passe et/ou nom d'utilisateur. Ré-essayez ou retournez à la "; $msg .= "<a href=\"" . Config::get("url_base") . "\">page d'accueil</a>"; $msg .= ".</strong></p>"; - 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 = "<h2>Déconnexion réussie</h2>"; $ret .= "<p>Vous êtes déconnecté. Vous pouvez à présent retourner à la "; $ret .= "<a href=\"" . Config::get("url_base") . "\">page d'accueil</a>"; $ret .= ".</p>"; - 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 "<h2>Connexion</h2>" . $message . "<input type=\"text\" name=\"nom\" value=\"Nom\" />..."; + $ret = "<h2>" . $titre . "</h2>"; + $ret .= $message; + $ret .= '<form method="post" action="' . $chemin->get_url() . '">'; + $ret .= '<label for="utilisateur">Nom : </label><input type="text" name="utilisateur" value="" />'; + $ret .= '<br />'; + $ret .= '<label for="mdp">Mot de passe : </label><input type="password" name="mdp" value="" />'; + $ret .= '<br />'; + $ret .= '<input type="hidden" name="action" value="connexion" />'; + $ret .= '<input type="submit" value="Connexion" />'; + $ret .= '</form>'; + 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -0,0 +1 @@ +oui +\ No newline at end of file diff --git a/admin/connexion/index.php b/admin/connexion/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE) . "/./../../__cms__/cms.php"); + +CMS::page("/admin/connexion"); + +?> +\ No newline at end of file diff --git a/permissions.sh 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