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

This commit is contained in:
Georges Dupéron 2010-08-04 12:01:55 +02:00
parent a789019f84
commit 5b3e7db376
11 changed files with 55 additions and 22 deletions

View File

@ -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");
?>

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -0,0 +1 @@
admin-connexion

View File

@ -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.

View File

@ -0,0 +1 @@
Administrateurs

View File

@ -0,0 +1 @@
admin

View File

@ -0,0 +1 @@
oui

View File

@ -0,0 +1,7 @@
<?php
require_once(dirname(__FILE) . "/./../../__cms__/cms.php");
CMS::page("/admin/connexion");
?>

7
permissions.sh Normal file
View File

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