From cd42ba8d01e3abf559618a02f58d54b7bd69c9bd Mon Sep 17 00:00:00 2001 From: ycharbi Date: Fri, 21 Jan 2022 16:32:55 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20fonctionnalit=C3=A9=20permett?= =?UTF-8?q?ant=20l'import=20des=20alias=20virtuels=20d'un=20utilisateur=20?= =?UTF-8?q?+=20precision=20du=20retrour=20des=20fonctions=20de=20listage?= =?UTF-8?q?=20des=20alais=20virtuels,=20domaines,=20listes=20noires=20et?= =?UTF-8?q?=20utilisateurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/fonctions/bdd/alias_virtuels.php | 2 +- services/fonctions/bdd/domaines.php | 2 +- services/fonctions/bdd/import_export.php | 44 +++++++++++++ services/fonctions/bdd/listes_noires.php | 4 +- services/fonctions/bdd/utilisateurs.php | 2 +- services/fonctions/messages/messages.php | 7 +- services/gestion/parametres.php | 10 +++ .../importAliasVirtuelsUtilisateur.php | 65 +++++++++++++++++++ 8 files changed, 129 insertions(+), 7 deletions(-) diff --git a/services/fonctions/bdd/alias_virtuels.php b/services/fonctions/bdd/alias_virtuels.php index b486ad2..1f02a2f 100644 --- a/services/fonctions/bdd/alias_virtuels.php +++ b/services/fonctions/bdd/alias_virtuels.php @@ -18,7 +18,7 @@ function listeAliasVirtuelsPostfix($pdo) { $sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']); $sql->execute(); - $liste_alias_virtuels = $sql->fetchAll(); + $liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC); return $liste_alias_virtuels; } catch (\Exception $e) { diff --git a/services/fonctions/bdd/domaines.php b/services/fonctions/bdd/domaines.php index ad45857..c6fd996 100644 --- a/services/fonctions/bdd/domaines.php +++ b/services/fonctions/bdd/domaines.php @@ -16,7 +16,7 @@ function listeDomainesPostfix($pdo) { $sql=$pdo->prepare($req); $sql->execute(); - $liste_domaines = $sql->fetchAll(); + $liste_domaines = $sql->fetchAll(PDO::FETCH_ASSOC); return $liste_domaines; } catch (\Exception $e) { diff --git a/services/fonctions/bdd/import_export.php b/services/fonctions/bdd/import_export.php index dddef2c..3dce5f2 100644 --- a/services/fonctions/bdd/import_export.php +++ b/services/fonctions/bdd/import_export.php @@ -124,4 +124,48 @@ function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { } } +/** + * Fonction important un fichier d'export d'alias virtuels utilisateur en CSV vers la base de données. + */ +function importAliasVirtuelsUtilisateur($pdo,$alias_virtuel,$utilisateur,$active) { + try { + // Insertion de l'alias virtuels parcouru dans le fichier CSV soumis pas l'utilisateur + // Les contrôles de données ont étés effectués dans la page de traitement + $req = 'INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:destination,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':alias_virtuel',htmlspecialchars($alias_virtuel)); + $sql->bindValue(':destination',htmlspecialchars($utilisateur)); + $sql->bindValue(':active',$active); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + } + catch (\Exception $e) { + // Récupération du code de retour de la commande SQLite + $code_retour=$sql->errorInfo(); + + if ($code_retour[0]=="23000") { + // Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "courriel" de la table "postif_alias_virtuels" est violée. Dans la mesure ou un contrôle d'unicité est effectué par la page de traitement, cette erreur signifie qu'un bogue est présent dans celui-ci + header ("Location: /pages/gestion/administration.php?page=alias&erreur=3"); + die(); + } + elseif ($code_retour[0]=="HY000") { + // Code de retour envoyé par le pilote PDO SQLite lorsque la base de données n'est accessible qu'en lecture seule à www-data + header ("Location: /pages/gestion/administration.php?page=alias&erreur=4"); + die(); + } + else { + // En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur + die ("Erreur de requête d'export des alias virtuels utilisateur en CSV : ".$e->getMessage()); + } + } +} + + ?> \ No newline at end of file diff --git a/services/fonctions/bdd/listes_noires.php b/services/fonctions/bdd/listes_noires.php index 9baa6fb..b1ced4d 100644 --- a/services/fonctions/bdd/listes_noires.php +++ b/services/fonctions/bdd/listes_noires.php @@ -17,7 +17,7 @@ function listeEntreeListeNoireDstPostfix($pdo) { $sql=$pdo->prepare($req); $sql->execute(); - $liste_entree_liste_noire_dst = $sql->fetchAll(); + $liste_entree_liste_noire_dst = $sql->fetchAll(PDO::FETCH_ASSOC); return $liste_entree_liste_noire_dst; } catch (\Exception $e) { @@ -35,7 +35,7 @@ function listeEntreeListeNoireExpPostfix($pdo) { $sql=$pdo->prepare($req); $sql->execute(); - $liste_entree_liste_noire_exp = $sql->fetchAll(); + $liste_entree_liste_noire_exp = $sql->fetchAll(PDO::FETCH_ASSOC); return $liste_entree_liste_noire_exp; } catch (\Exception $e) { diff --git a/services/fonctions/bdd/utilisateurs.php b/services/fonctions/bdd/utilisateurs.php index 8f56f97..0085ca1 100644 --- a/services/fonctions/bdd/utilisateurs.php +++ b/services/fonctions/bdd/utilisateurs.php @@ -15,7 +15,7 @@ function listeUtilisateursPostfix($pdo) { $sql=$pdo->prepare($req); $sql->execute(); - $liste_utilisateurs = $sql->fetchAll(); + $liste_utilisateurs = $sql->fetchAll(PDO::FETCH_ASSOC); return $liste_utilisateurs; } catch (\Exception $e) { diff --git a/services/fonctions/messages/messages.php b/services/fonctions/messages/messages.php index a20c7a1..f44bbd7 100644 --- a/services/fonctions/messages/messages.php +++ b/services/fonctions/messages/messages.php @@ -33,7 +33,8 @@ function retourneMessage($type_message,$num_message) { 14 => "
L'entrée de liste noire expéditeurs a été supprimée avec succès.
", 15 => "
Vous avez bien été déconnecté.
", 16 => "
Le mot de passe de $pseudo_utilisateur a bien été changé.
", - 17 => "
Le préfixe de $pseudo_utilisateur a bien été changé.
"), + 17 => "
Le préfixe de $pseudo_utilisateur a bien été changé.
", + 18 => "
Vos données ont bien étés importés. Les doublons ainsi que les données erronées ont étés ignorés.
"), "erreurs" => array( 1 => "
Aucun alias virtuel supprimé.
", 2 => "
Aucun alias virtuel créé car une donnée est erronée ou manquante.
", @@ -55,7 +56,9 @@ function retourneMessage($type_message,$num_message) { 18 => "
Vous n'avez pas les privilèges nécessaires.
", 19 => "
Erreur non gérée.
", 20 => "
L'ancien mot de passe renseigné est erroné.
", - 21 => "
Le mot de passe de confimation n'est pas identique au nouveau mot de passe.
"), + 21 => "
Le mot de passe de confimation n'est pas identique au nouveau mot de passe.
", + 22 => "
Une erreur s'est produite lors de l'envoi du fichier. Il doit être de type CSV de moins de 2 Mo et avoir été généré par Courtail.
", + 23 => "
Votre fichier d'import CSV est plus grand que 2 Mo.
"), "messages" => array( "bienvenue" => "
Bienvenue ".$nom_utilisateur.". Vous êtes authentifié en tant qu'".$privilege_utilisateur.".
") ); diff --git a/services/gestion/parametres.php b/services/gestion/parametres.php index 1722a34..6ce31d2 100644 --- a/services/gestion/parametres.php +++ b/services/gestion/parametres.php @@ -110,6 +110,16 @@ if ($_SESSION['privilege_utilisateur']=="administrateur") { _HEREDOC_; } +echo <<<_HEREDOC_ +

Restauration

+

Restauration des alias virtuels de l'utilisateur

+
+ + Les doublons seront omis. + +
+_HEREDOC_; + ?> \ No newline at end of file diff --git a/services/traitements/import_export/importAliasVirtuelsUtilisateur.php b/services/traitements/import_export/importAliasVirtuelsUtilisateur.php index e69de29..8c479ed 100644 --- a/services/traitements/import_export/importAliasVirtuelsUtilisateur.php +++ b/services/traitements/import_export/importAliasVirtuelsUtilisateur.php @@ -0,0 +1,65 @@ + \ No newline at end of file