Ajout de la fonctionnalité de changement de préfixe utilisateur + changement du nom de plusieurs fonctions + déplacement et modification de la fonction d'affichage du préfixe d'un utilisateur + suppression ou correction de messages de débogage

pull/7/head
ycharbi 3 years ago
parent 08535603f4
commit b60bf87f07

@ -7,25 +7,6 @@
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
/**
* Fonction listant le préfixe de l'utilisateur courant.
*/
function retournePrefixeUtilisateurPostfix($pdo) {
try {
$req = 'SELECT prefixe FROM postfix_utilisateurs WHERE utilisateur=:utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':utilisateur',$_SESSION['pseudo_utilisateur']);
$sql->execute();
$prefixe_utilisateur=$sql->fetchAll();
return $prefixe_utilisateur[0]['prefixe'];
}
catch (\Exception $e) {
die ("Erreur de requête de selection des alias virtuels : ".$e->getMessage());
}
}
/** /**
* Fonction listant les alias virtuels. * Fonction listant les alias virtuels.
*/ */
@ -55,7 +36,7 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']); $sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']);
$sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurPostfix($pdo).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,100)); $sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,100));
$sql->execute(); $sql->execute();
if ($sql->rowCount() == 1){ if ($sql->rowCount() == 1){

@ -72,8 +72,6 @@ function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) {
catch (\Exception $e) { catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite // Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo(); $code_retour=$sql->errorInfo();
var_dump($code_retour);
die();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data

@ -39,7 +39,7 @@ function listeEntreeListeNoireExpPostfix($pdo) {
return $liste_entree_liste_noire_exp; return $liste_entree_liste_noire_exp;
} }
catch (\Exception $e) { catch (\Exception $e) {
die ("Erreur de requête de selection des entrées de liste noire expéditeurs pour \"$base\" : ".$e->getMessage()); die ("Erreur de requête de selection des entrées de liste noire expéditeurs : ".$e->getMessage());
} }
} }

@ -19,14 +19,14 @@ function listeUtilisateursPostfix($pdo) {
return $liste_utilisateurs; return $liste_utilisateurs;
} }
catch (\Exception $e) { catch (\Exception $e) {
die ("Erreur de requête de selection des utilisateurs pour \"$base\" : ".$e->getMessage()); die ("Erreur de requête de selection des utilisateurs : ".$e->getMessage());
} }
} }
/** /**
* Fonction vérifiant le mot de passe actuel d'un utilisateur. * Fonction vérifiant le mot de passe actuel d'un utilisateur.
*/ */
function verificationMotDePasse($pdo,$identifiant,$mdp) { function verificationMotDePasseUtilisateurPostfix($pdo,$identifiant,$mdp) {
try { try {
$req = 'SELECT mot_de_passe FROM postfix_utilisateurs WHERE utilisateur=:identifiant'; $req = 'SELECT mot_de_passe FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
@ -39,7 +39,7 @@ function verificationMotDePasse($pdo,$identifiant,$mdp) {
} }
catch(PDOException $e) { catch(PDOException $e) {
die ("Erreur lors du traitement de la requête : " . $e->getMessage()); die ("Erreur lors du traitement de la requête de vérification du mot de passe utilisateur : " . $e->getMessage());
} }
if ($comptage == 1) { if ($comptage == 1) {
@ -63,7 +63,7 @@ function verificationMotDePasse($pdo,$identifiant,$mdp) {
/** /**
* Fonction changeant le mot de passe d'un utilisateur. * Fonction changeant le mot de passe d'un utilisateur.
*/ */
function changeMotDePasseUtilisateursPostfix($pdo,$identifiant,$nouveau_mdp,$confirmation_mdp) { function changeMotDePasseUtilisateurPostfix($pdo,$utilisateur,$nouveau_mdp,$confirmation_mdp) {
if ($nouveau_mdp===$confirmation_mdp) { if ($nouveau_mdp===$confirmation_mdp) {
$caracters = '.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $caracters = '.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$chaine_aleatoire = ''; $chaine_aleatoire = '';
@ -78,14 +78,14 @@ function changeMotDePasseUtilisateursPostfix($pdo,$identifiant,$nouveau_mdp,$con
$mot_de_passe_hachis='{SHA512-CRYPT}'.crypt(trim($nouveau_mdp),'$6$'.$chaine_aleatoire); $mot_de_passe_hachis='{SHA512-CRYPT}'.crypt(trim($nouveau_mdp),'$6$'.$chaine_aleatoire);
try { try {
$req = 'UPDATE postfix_utilisateurs SET mot_de_passe=:nouveau_mdp WHERE utilisateur=:identifiant'; $req = 'UPDATE postfix_utilisateurs SET mot_de_passe=:nouveau_mdp WHERE utilisateur=:utilisateur';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':identifiant', $identifiant); $sql->bindValue(':utilisateur', $utilisateur);
$sql->bindValue(':nouveau_mdp', $mot_de_passe_hachis); $sql->bindValue(':nouveau_mdp', $mot_de_passe_hachis);
$sql->execute(); $sql->execute();
} }
catch (\Exception $e) { catch (\Exception $e) {
die ("Erreur de requête de selection des utilisateurs pour \"$base\" : ".$e->getMessage()); die ("Erreur de requête de changement de mot de passe utilisateur : ".$e->getMessage());
} }
return true; return true;
} }
@ -94,4 +94,40 @@ function changeMotDePasseUtilisateursPostfix($pdo,$identifiant,$nouveau_mdp,$con
} }
} }
/**
* 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();
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());
}
}
?> ?>

@ -32,7 +32,8 @@ function retourneMessage($type_message,$num_message) {
13 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'état de l'entrée de liste noire expéditeurs a été modifié avec succès.</div>", 13 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'état de l'entrée de liste noire expéditeurs a été modifié avec succès.</div>",
14 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire expéditeurs a été supprimée avec succès.</div>", 14 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire expéditeurs a été supprimée avec succès.</div>",
15 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Vous avez bien été déconnecté.</div>", 15 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Vous avez bien été déconnecté.</div>",
16 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Le mot de passe de $pseudo_utilisateur a bien été changé.</div>"), 16 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Le mot de passe de $pseudo_utilisateur a bien été changé.</div>",
17 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Le préfixe de $pseudo_utilisateur a bien été changé.</div>"),
"erreurs" => array( "erreurs" => array(
1 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun alias virtuel supprimé.</div>", 1 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun alias virtuel supprimé.</div>",
2 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun alias virtuel créé car une donnée est erronée ou manquante.</div>", 2 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun alias virtuel créé car une donnée est erronée ou manquante.</div>",

@ -63,7 +63,7 @@ _HEREDOC_;
/** /**
* Ajout d'un alias virtuel. * Ajout d'un alias virtuel.
*/ */
$prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo); $prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']);
if (!empty($prefixe_utilisateur)) { if (!empty($prefixe_utilisateur)) {
echo "<span class=\"input-group-text\">$prefixe_utilisateur</span>"; echo "<span class=\"input-group-text\">$prefixe_utilisateur</span>";
} }

@ -7,6 +7,7 @@
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
$liste_utilisateurs = listeUtilisateursPostfix($pdo); $liste_utilisateurs = listeUtilisateursPostfix($pdo);
$prefixe_utilisateur = retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']);
/** /**
* Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur. * Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur.
@ -67,3 +68,20 @@ _HEREDOC_;
</div> </div>
</div> </div>
</div> </div>
<?php
if ($_SESSION['privilege_utilisateur']=="administrateur") {
echo <<<_HEREDOC_
<h5>Préfixe</h5>
<p>Préfixe actuel de {$_SESSION['pseudo_utilisateur']} : {$prefixe_utilisateur}</p>
<form action="/services/traitements/utilisateurs/changePrefixeUtilisateur.php" method="post">
<input type="text" name="nouveau_prefixe" placeholder="Nouveau prefixe">
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</form>
_HEREDOC_;
}
?>
<script src="/fichiers/js/filtre.js"></script>

@ -10,14 +10,12 @@ session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges(); testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
// Permet le contrôle du domaine renseigné par l'utilisateur // Permet le contrôle du domaine renseigné par l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesPostfix($pdo);
var_dump($liste_domaines,$_POST);
//die();
if (isset($_POST['nom_alias_virtuel']) && isset($_POST['choix_domaine_alias_virtuel']) && !empty($_POST['nom_alias_virtuel']) && !empty($_POST['choix_domaine_alias_virtuel']) && in_array($_POST['choix_domaine_alias_virtuel'],array_column($liste_domaines,'domaine'))) { if (isset($_POST['nom_alias_virtuel']) && isset($_POST['choix_domaine_alias_virtuel']) && !empty($_POST['nom_alias_virtuel']) && !empty($_POST['choix_domaine_alias_virtuel']) && in_array($_POST['choix_domaine_alias_virtuel'],array_column($liste_domaines,'domaine'))) {
ajoutAliasVirtuelsPostfix($pdo,$_POST['nom_alias_virtuel'],$_POST['choix_domaine_alias_virtuel']); ajoutAliasVirtuelsPostfix($pdo,$_POST['nom_alias_virtuel'],$_POST['choix_domaine_alias_virtuel']);
header ("Location: /pages/gestion/administration.php?page=alias&succes=1"); header ("Location: /pages/gestion/administration.php?page=alias&succes=1");

@ -12,7 +12,7 @@ testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouveau_mot_de_passe']) && !empty($_POST['nouveau_mot_de_passe']) && isset($_POST['confirmation_mot_de_passe']) && !empty($_POST['confirmation_mot_de_passe'])) { if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouveau_mot_de_passe']) && !empty($_POST['nouveau_mot_de_passe']) && isset($_POST['confirmation_mot_de_passe']) && !empty($_POST['confirmation_mot_de_passe'])) {
if (changeMotDePasseUtilisateursPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['nouveau_mot_de_passe']),trim($_POST['confirmation_mot_de_passe']))) { if (changeMotDePasseUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['nouveau_mot_de_passe']),trim($_POST['confirmation_mot_de_passe']))) {
header ("Location: /pages/gestion/administration.php?page=parametres&succes=16"); header ("Location: /pages/gestion/administration.php?page=parametres&succes=16");
die(); die();
} }
@ -22,8 +22,8 @@ if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouvea
} }
} }
elseif ($_SESSION['privilege_utilisateur']=="utilisateur" && isset($_POST['ancien_mot_de_passe']) && !empty($_POST['ancien_mot_de_passe']) && isset($_POST['nouveau_mot_de_passe']) && !empty($_POST['nouveau_mot_de_passe']) && isset($_POST['confirmation_mot_de_passe']) && !empty($_POST['confirmation_mot_de_passe'])) { elseif ($_SESSION['privilege_utilisateur']=="utilisateur" && isset($_POST['ancien_mot_de_passe']) && !empty($_POST['ancien_mot_de_passe']) && isset($_POST['nouveau_mot_de_passe']) && !empty($_POST['nouveau_mot_de_passe']) && isset($_POST['confirmation_mot_de_passe']) && !empty($_POST['confirmation_mot_de_passe'])) {
if (verificationMotDePasse($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['ancien_mot_de_passe']))) { if (verificationMotDePasseUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['ancien_mot_de_passe']))) {
if (changeMotDePasseUtilisateursPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['nouveau_mot_de_passe']),trim($_POST['confirmation_mot_de_passe']))) { if (changeMotDePasseUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['nouveau_mot_de_passe']),trim($_POST['confirmation_mot_de_passe']))) {
header ("Location: /pages/gestion/administration.php?page=parametres&succes=16"); header ("Location: /pages/gestion/administration.php?page=parametres&succes=16");
die(); die();
} }

@ -0,0 +1,24 @@
<?php
/**
* Page de traitement permettant le changement du préfixe d'un utilisateur.
* Elle est appelée par la page de paramètres.
* Un champ accessible aux seuls administrateurs permet de changer le préfixe d'un utilisateur (peut être vide).
*/
session_start();
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouveau_prefixe'])) {
changePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['nouveau_prefixe']));
header ("Location: /pages/gestion/administration.php?page=parametres&succes=17");
die();
}
else {
header ("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
?>
Loading…
Cancel
Save