Début du travail sur la page des paramètres : adaptation de la redirection du choix utilisateur + fonctionnalité de changement de mot de passe utilisateur
This commit is contained in:
@@ -23,4 +23,75 @@ function listeUtilisateursPostfix($pdo) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction vérifiant le mot de passe actuel d'un utilisateur.
|
||||
*/
|
||||
function verificationMotDePasse($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 : " . $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 changeMotDePasseUtilisateursPostfix($pdo,$identifiant,$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=:identifiant';
|
||||
$sql=$pdo->prepare($req);
|
||||
$sql->bindValue(':identifiant', $identifiant);
|
||||
$sql->bindValue(':nouveau_mdp', $mot_de_passe_hachis);
|
||||
$sql->execute();
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
die ("Erreur de requête de selection des utilisateurs pour \"$base\" : ".$e->getMessage());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user