|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Page de fonctions permettant la gestion des utilisateurs.
|
|
|
|
*/
|
|
|
|
|
|
|
|
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction listant les utilisateurs.
|
|
|
|
*/
|
|
|
|
function listeUtilisateursPostfix($pdo) {
|
|
|
|
try {
|
|
|
|
$req = 'SELECT utilisateur FROM postfix_utilisateurs';
|
|
|
|
$sql=$pdo->prepare($req);
|
|
|
|
$sql->execute();
|
|
|
|
|
|
|
|
$liste_utilisateurs = $sql->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
return $liste_utilisateurs;
|
|
|
|
}
|
|
|
|
catch (\Exception $e) {
|
|
|
|
die ("Erreur de requête de selection des utilisateurs : ".$e->getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction vérifiant le mot de passe actuel d'un utilisateur.
|
|
|
|
*/
|
|
|
|
function verificationMotDePasseUtilisateurPostfix($pdo,$identifiant,$mdp) {
|
|
|
|
try {
|
|
|
|
$req = 'SELECT mot_de_passe 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 de vérification du mot de passe utilisateur : " . $e->getMessage());
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($comptage == 1) {
|
|
|
|
|
|
|
|
$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
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction changeant le mot de passe d'un utilisateur.
|
|
|
|
*/
|
|
|
|
function changeMotDePasseUtilisateurPostfix($pdo,$utilisateur,$nouveau_mdp,$confirmation_mdp) {
|
|
|
|
if ($nouveau_mdp===$confirmation_mdp) {
|
|
|
|
$caracters = '.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
|
|
$chaine_aleatoire = '';
|
|
|
|
|
|
|
|
// Génération d'un sel à 16 caractères
|
|
|
|
for ($i = 0; $i < 16; $i++) {
|
|
|
|
$index = rand(0, strlen($caracters) - 1);
|
|
|
|
$chaine_aleatoire .= $caracters[$index];
|
|
|
|
}
|
|
|
|
|
|
|
|
// Construction d'un mot de passe haché compatible avec Dovecot
|
|
|
|
$mot_de_passe_hachis='{SHA512-CRYPT}'.crypt(trim($nouveau_mdp),'$6$'.$chaine_aleatoire);
|
|
|
|
|
|
|
|
try {
|
|
|
|
$req = 'UPDATE postfix_utilisateurs SET mot_de_passe=:nouveau_mdp WHERE utilisateur=:utilisateur';
|
|
|
|
$sql=$pdo->prepare($req);
|
|
|
|
$sql->bindValue(':utilisateur', $utilisateur);
|
|
|
|
$sql->bindValue(':nouveau_mdp', $mot_de_passe_hachis);
|
|
|
|
$sql->execute();
|
|
|
|
}
|
|
|
|
catch (\Exception $e) {
|
|
|
|
die ("Erreur de requête de changement de mot de passe utilisateur : ".$e->getMessage());
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction listant le préfixe de l'utilisateur courant.
|
|
|
|
*/
|
|
|
|
function retournePrefixeUtilisateurPostfix($pdo,$utilisateur) {
|
|
|
|
try {
|
|
|
|
$req = 'SELECT prefixe FROM postfix_utilisateurs WHERE utilisateur=:utilisateur';
|
|
|
|
$sql=$pdo->prepare($req);
|
|
|
|
$sql->bindValue(':utilisateur', $utilisateur);
|
|
|
|
$sql->execute();
|
|
|
|
|
|
|
|
$prefixe_utilisateurs = $sql->fetchAll();
|
|
|
|
|
|
|
|
if (isset($prefixe_utilisateurs[0]['prefixe']) {
|
|
|
|
return $prefixe_utilisateurs[0]['prefixe'];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
$prefixe_utilisateurs[0]['prefixe']="";
|
|
|
|
return $prefixe_utilisateurs[0]['prefixe'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (\Exception $e) {
|
|
|
|
die ("Erreur de requête de changement de préfixe utilisateur : ".$e->getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fonction changeant le préfixe d'un utilisateur.
|
|
|
|
*/
|
|
|
|
function changePrefixeUtilisateurPostfix($pdo,$utilisateur,$nouveau_prefixe) {
|
|
|
|
try {
|
|
|
|
$req = 'UPDATE postfix_utilisateurs SET prefixe=:nouveau_prefixe WHERE utilisateur=:utilisateur';
|
|
|
|
$sql=$pdo->prepare($req);
|
|
|
|
$sql->bindValue(':utilisateur', $utilisateur);
|
|
|
|
$sql->bindValue(':nouveau_prefixe', $nouveau_prefixe);
|
|
|
|
$sql->execute();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
catch (\Exception $e) {
|
|
|
|
die ("Erreur de requête de changement de préfixe utilisateur : ".$e->getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|