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:
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