Ajout du nom du site dans la barre de menu + affichage des liens menant vers les pages en fonction des privilèges + réorganisation de l'arborescence + limitation de l'accès à la page domaines.php aux seuls administrateurs

This commit is contained in:
ycharbi
2021-12-28 18:48:43 +01:00
parent 5dfc627b70
commit 7d7b47c69f
18 changed files with 53 additions and 36 deletions
@@ -0,0 +1,54 @@
<?php
/**
* Page de fonctions permettant d'identifier la légitimité d'un utilisateur.
*/
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
/*
* Fonction d'authentification des utilisateurs.
* Elle récupère le couple identifiant/mot de passe renseigné par le visiteur sur la page d'accueil.
* Elle compare ces information avec la ligne correspondante dans la base de donnée (en prenant l'adresse de courriel comme sélecteur).
* Elle hache le mot de passe du formulaire et le compare à celui de l'entrée correspondante en base.
*/
function validationIdentifiants($pdo,$identifiant,$mdp){
try {
$req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
$prep = $pdo->prepare($req);
$prep->bindValue(':identifiant', $identifiant);
$prep->execute();
$result = $prep ->fetchAll(PDO::FETCH_ASSOC);
$comptage = count($result);
}
catch(PDOException $e) {
die ("Erreur lors du traitement de la requête : " . $e->getMessage());
}
if($comptage == 1){
/**
* Les paramètres de la fonction crypt de $mot_de_passe_form sont composés du mot de passe issue du formulaire accueil ainsi que du sel.
* Les signes dollars sont des séparateurs. $mot_de_passe_base[1]=6=SHA512. $mot_de_passe_base[2]=au sel du mot de passe contenu dans la base.
* Les paramètres de sel sont issus du mot de passe haché contenu dans la base.
* L'opération de vérification s'adapte ainsi automatiquement aux algoritmes utilisés par Dovecot lors du hachage du mot de passe utilisateur.
*/
$mot_de_passe_base=explode('$', $result['0']['mot_de_passe']);
$mot_de_passe_form=crypt(trim("$mdp"), "$".$mot_de_passe_base[1]."$".$mot_de_passe_base[2]."$");
if ("$".$mot_de_passe_base[1]."$".$mot_de_passe_base[2]."$".$mot_de_passe_base[3]!=$mot_de_passe_form) {
// Si le mot de passe renseigné n'est le bon, le visiteur est redirigé vers la page d'accueil avec un message explicatif
header('Location: /pages/visiteurs/echec_auth.php');
die();
}
return $result;
}
else
return false;
}
?>
@@ -0,0 +1,16 @@
<?php
/**
* Page permettant la déconnexion d'un utilisateur authentifié.
*/
// Récupération de la session
session_start ();
// Destruction des variables de la session
session_unset ();
// Destruction de la session
session_destroy ();
// Redirection de l'utilisateur vers la page d'authentifiaction
header('location: /pages/visiteurs/formulaire_accueil.php?succes=1');
?>
@@ -0,0 +1,26 @@
<?php
/**
* Page de fonctions permettant la vérification des permission d'un utilisateur ou d'un visiteur.
*/
/**
* Fonction testant le niveau de privilège d'un utilisateur authentifié ou non.
* Elle vérifie le privilège de l'utilisateur connecté et retourne la valeur adéquate.
* Si un visiteur ou un utilisateur ne remplis pas la bonne condition, il est redirigé à la page d'accueil avec un message expllicatif.
* Cette fonction devrait être appelée dans toute page de traitement.
*/
function testPrivileges(){
if (isset($_SESSION['id_utilisateur']) && !empty($_SESSION['id_utilisateur']) && $_SESSION['privilege_utilisateur']=="administrateur") {
return "administrateur";
}
elseif (isset($_SESSION['id_utilisateur']) && !empty($_SESSION['id_utilisateur']) && $_SESSION['privilege_utilisateur']=="utilisateur") {
return "utilisateur";
}
else {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2");
die();
}
}
?>