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()); } } /** * Fonction vérifiant que l'utilisateur connecté au site existe toujours dans la base de données. */ function verifUtilisateursExiste($pdo,$utilisateur) { try { $req = 'SELECT utilisateur FROM postfix_utilisateurs WHERE utilisateur=:utilisateur'; $sql=$pdo->prepare($req); $sql->bindValue(':utilisateur', $utilisateur); $sql->execute(); $liste_utilisateurs = $sql->fetchAll(PDO::FETCH_ASSOC); if (count($liste_utilisateurs) === 1) { return TRUE; } else { return FALSE; } } catch (\Exception $e) { die ("Erreur de requête de vérification d'existence de l'utilisateur connecté : ".$e->getMessage()); } } ?>