|
|
|
<?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';
|
|
|
|
|
|
|
|
$sql = $pdo->prepare($req);
|
|
|
|
$sql->bindValue(':identifiant', $identifiant);
|
|
|
|
$sql->execute();
|
|
|
|
|
|
|
|
$result = $sql ->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;
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|