From 08535603f4b93b55cf069a53ee19107d357dbc2b Mon Sep 17 00:00:00 2001 From: ycharbi Date: Wed, 19 Jan 2022 18:23:15 +0100 Subject: [PATCH 01/17] =?UTF-8?q?D=C3=A9but=20du=20travail=20sur=20la=20pa?= =?UTF-8?q?ge=20des=20param=C3=A8tres=20:=20adaptation=20de=20la=20redirec?= =?UTF-8?q?tion=20du=20choix=20utilisateur=20+=20fonctionnalit=C3=A9=20de?= =?UTF-8?q?=20changement=20de=20mot=20de=20passe=20utilisateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/fonctions/bdd/utilisateurs.php | 71 +++++++++++++++++++ services/fonctions/messages/messages.php | 7 +- .../fonctions/sessions/authentification.php | 12 ++-- services/gestion/alias_virtuels.php | 3 +- services/gestion/parametres.php | 64 ++++++++++++++++- .../changeMotDePasseUtilisateur.php | 45 ++++++++++++ .../utilisateurs/changeUtilisateur.php | 10 ++- 7 files changed, 200 insertions(+), 12 deletions(-) create mode 100644 services/traitements/utilisateurs/changeMotDePasseUtilisateur.php diff --git a/services/fonctions/bdd/utilisateurs.php b/services/fonctions/bdd/utilisateurs.php index b580507..c6da1ef 100644 --- a/services/fonctions/bdd/utilisateurs.php +++ b/services/fonctions/bdd/utilisateurs.php @@ -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; + } +} + ?> \ No newline at end of file diff --git a/services/fonctions/messages/messages.php b/services/fonctions/messages/messages.php index 4b5a27a..45f79c4 100644 --- a/services/fonctions/messages/messages.php +++ b/services/fonctions/messages/messages.php @@ -31,7 +31,8 @@ function retourneMessage($type_message,$num_message) { 12 => "
L'entrée de liste noire expéditeurs a été créée avec succès.
", 13 => "
L'état de l'entrée de liste noire expéditeurs a été modifié avec succès.
", 14 => "
L'entrée de liste noire expéditeurs a été supprimée avec succès.
", - 15 => "
Vous avez bien été déconnecté.
"), + 15 => "
Vous avez bien été déconnecté.
", + 16 => "
Le mot de passe de $pseudo_utilisateur a bien été changé.
"), "erreurs" => array( 1 => "
Aucun alias virtuel supprimé.
", 2 => "
Aucun alias virtuel créé car une donnée est erronée ou manquante.
", @@ -51,7 +52,9 @@ function retourneMessage($type_message,$num_message) { 16 => "
L'entrée de liste noire expéditeurs n'a pas été ajouté car elle est déjà existante.
", 17 => "
Identifiant ou mot de passe incorrecte.
", 18 => "
Vous n'avez pas les privilèges nécessaires.
", - 19 => "
Erreur non gérée.
"), + 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.
"), "messages" => array( "bienvenue" => "
Bienvenue ".$nom_utilisateur.". Vous êtes authentifié en tant qu'".$privilege_utilisateur.".
") ); diff --git a/services/fonctions/sessions/authentification.php b/services/fonctions/sessions/authentification.php index 9d562ef..bcdc3d3 100644 --- a/services/fonctions/sessions/authentification.php +++ b/services/fonctions/sessions/authentification.php @@ -12,15 +12,15 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php") * Elle compare ces information avec la ligne correspondante dans la base de donnée (en prenant l'adresse de courriel comme sélecteur). * Elle hache le mot de passe du formulaire et le compare à celui de l'entrée correspondante en base. */ -function validationIdentifiants($pdo,$identifiant,$mdp){ +function validationIdentifiants($pdo,$identifiant,$mdp) { try { $req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant'; - $prep = $pdo->prepare($req); - $prep->bindValue(':identifiant', $identifiant); - $prep->execute(); + $sql = $pdo->prepare($req); + $sql->bindValue(':identifiant', $identifiant); + $sql->execute(); - $result = $prep ->fetchAll(PDO::FETCH_ASSOC); + $result = $sql ->fetchAll(PDO::FETCH_ASSOC); $comptage = count($result); } @@ -28,7 +28,7 @@ function validationIdentifiants($pdo,$identifiant,$mdp){ die ("Erreur lors du traitement de la requête : " . $e->getMessage()); } - if($comptage == 1){ + if ($comptage == 1) { /** * Les paramètres de la fonction crypt de $mot_de_passe_form sont composés du mot de passe issue du formulaire accueil ainsi que du sel. diff --git a/services/gestion/alias_virtuels.php b/services/gestion/alias_virtuels.php index 6ccf833..2b64747 100644 --- a/services/gestion/alias_virtuels.php +++ b/services/gestion/alias_virtuels.php @@ -28,7 +28,7 @@ _HEREDOC_; /** * Remplis un menu déroulant permettant le choix de l'utilisateur par l'administrateur. - * Ce choix permettra de modifier les alias virtuels y étant rattachés. + * Ce choix permettra de modifier les données y étant rattachés. * La valeur par défaut du menu est positionnée sur le compte administrateur actuellement connecté. */ foreach ($liste_utilisateurs as $utilisateur_bdd => $utilisateur) { @@ -42,6 +42,7 @@ _HEREDOC_; echo <<<_HEREDOC_ + diff --git a/services/gestion/parametres.php b/services/gestion/parametres.php index 320a1ef..0c3571e 100644 --- a/services/gestion/parametres.php +++ b/services/gestion/parametres.php @@ -4,4 +4,66 @@ * Page centrale de gestion des paramètres d'un utilisateur et du portail lui-même. */ -?> \ No newline at end of file + require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); + + $liste_utilisateurs = listeUtilisateursPostfix($pdo); + +/** +* Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur. +*/ +if (testPrivileges()=="administrateur") { + echo <<<_HEREDOC_ +
+
+
+
+
Choix de l'adresse
+
+ + +
+
+
+
+_HEREDOC_; +} + +/** +* Changement du mot de passe d'un utilisateur. +*/ + +?> +
+
+
+
Mot de passe
+
+
+ '; } ?> + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php b/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php new file mode 100644 index 0000000..a76b752 --- /dev/null +++ b/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php @@ -0,0 +1,45 @@ + \ No newline at end of file diff --git a/services/traitements/utilisateurs/changeUtilisateur.php b/services/traitements/utilisateurs/changeUtilisateur.php index 239af60..f44ae27 100644 --- a/services/traitements/utilisateurs/changeUtilisateur.php +++ b/services/traitements/utilisateurs/changeUtilisateur.php @@ -11,8 +11,14 @@ require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges. if (testPrivileges()=="administrateur" && isset($_POST['choix_utilisateur']) && !empty($_POST['choix_utilisateur'])) { $_SESSION['pseudo_utilisateur'] = $_POST['choix_utilisateur']; - header ("Location: /pages/gestion/administration.php?page=alias&succes=4"); - die(); + if (isset($_POST['page_origine']) && !empty($_POST['page_origine'])) { + header ("Location: /pages/gestion/administration.php?page=".$_POST['page_origine']."&succes=4"); + die(); + } + else { + header ("Location: /pages/gestion/administration.php?page=accueil&succes=4"); + die(); + } } else { header ("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); From b60bf87f07a7b8eb42d70761f49014fa330ebb11 Mon Sep 17 00:00:00 2001 From: ycharbi Date: Wed, 19 Jan 2022 23:09:46 +0100 Subject: [PATCH 02/17] =?UTF-8?q?Ajout=20de=20la=20fonctionnalit=C3=A9=20d?= =?UTF-8?q?e=20changement=20de=20pr=C3=A9fixe=20utilisateur=20+=20changeme?= =?UTF-8?q?nt=20du=20nom=20de=20plusieurs=20fonctions=20+=20d=C3=A9placeme?= =?UTF-8?q?nt=20et=20modification=20de=20la=20fonction=20d'affichage=20du?= =?UTF-8?q?=20pr=C3=A9fixe=20d'un=20utilisateur=20+=20suppression=20ou=20c?= =?UTF-8?q?orrection=20de=20messages=20de=20d=C3=A9bogage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/fonctions/bdd/alias_virtuels.php | 21 +------- services/fonctions/bdd/domaines.php | 2 - services/fonctions/bdd/listes_noires.php | 2 +- services/fonctions/bdd/utilisateurs.php | 50 ++++++++++++++++--- services/fonctions/messages/messages.php | 3 +- services/gestion/alias_virtuels.php | 2 +- services/gestion/parametres.php | 20 +++++++- .../alias_virtuels/ajoutAliasVirtuels.php | 4 +- .../changeMotDePasseUtilisateur.php | 6 +-- .../utilisateurs/changePrefixeUtilisateur.php | 24 +++++++++ 10 files changed, 95 insertions(+), 39 deletions(-) create mode 100644 services/traitements/utilisateurs/changePrefixeUtilisateur.php diff --git a/services/fonctions/bdd/alias_virtuels.php b/services/fonctions/bdd/alias_virtuels.php index a175de8..b486ad2 100644 --- a/services/fonctions/bdd/alias_virtuels.php +++ b/services/fonctions/bdd/alias_virtuels.php @@ -7,25 +7,6 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.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. */ @@ -55,7 +36,7 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_ $sql=$pdo->prepare($req); $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(); if ($sql->rowCount() == 1){ diff --git a/services/fonctions/bdd/domaines.php b/services/fonctions/bdd/domaines.php index 5f4294c..ad45857 100644 --- a/services/fonctions/bdd/domaines.php +++ b/services/fonctions/bdd/domaines.php @@ -72,8 +72,6 @@ function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) { catch (\Exception $e) { // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); - var_dump($code_retour); - die(); if ($code_retour[0]=="HY000") { // Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data diff --git a/services/fonctions/bdd/listes_noires.php b/services/fonctions/bdd/listes_noires.php index bfd607d..9baa6fb 100644 --- a/services/fonctions/bdd/listes_noires.php +++ b/services/fonctions/bdd/listes_noires.php @@ -39,7 +39,7 @@ function listeEntreeListeNoireExpPostfix($pdo) { return $liste_entree_liste_noire_exp; } 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()); } } diff --git a/services/fonctions/bdd/utilisateurs.php b/services/fonctions/bdd/utilisateurs.php index c6da1ef..8f56f97 100644 --- a/services/fonctions/bdd/utilisateurs.php +++ b/services/fonctions/bdd/utilisateurs.php @@ -19,14 +19,14 @@ function listeUtilisateursPostfix($pdo) { return $liste_utilisateurs; } 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. */ -function verificationMotDePasse($pdo,$identifiant,$mdp) { +function verificationMotDePasseUtilisateurPostfix($pdo,$identifiant,$mdp) { try { $req = 'SELECT mot_de_passe FROM postfix_utilisateurs WHERE utilisateur=:identifiant'; @@ -39,7 +39,7 @@ function verificationMotDePasse($pdo,$identifiant,$mdp) { } 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) { @@ -63,7 +63,7 @@ function verificationMotDePasse($pdo,$identifiant,$mdp) { /** * 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) { $caracters = '.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $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); 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->bindValue(':identifiant', $identifiant); + $sql->bindValue(':utilisateur', $utilisateur); $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()); + die ("Erreur de requête de changement de mot de passe utilisateur : ".$e->getMessage()); } 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()); + } +} + ?> \ No newline at end of file diff --git a/services/fonctions/messages/messages.php b/services/fonctions/messages/messages.php index 45f79c4..a20c7a1 100644 --- a/services/fonctions/messages/messages.php +++ b/services/fonctions/messages/messages.php @@ -32,7 +32,8 @@ function retourneMessage($type_message,$num_message) { 13 => "
L'état de l'entrée de liste noire expéditeurs a été modifié avec succès.
", 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é.
"), + 16 => "
Le mot de passe de $pseudo_utilisateur a bien été changé.
", + 17 => "
Le préfixe de $pseudo_utilisateur a bien été changé.
"), "erreurs" => array( 1 => "
Aucun alias virtuel supprimé.
", 2 => "
Aucun alias virtuel créé car une donnée est erronée ou manquante.
", diff --git a/services/gestion/alias_virtuels.php b/services/gestion/alias_virtuels.php index 2b64747..12c5231 100644 --- a/services/gestion/alias_virtuels.php +++ b/services/gestion/alias_virtuels.php @@ -63,7 +63,7 @@ _HEREDOC_; /** * Ajout d'un alias virtuel. */ - $prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo); + $prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']); if (!empty($prefixe_utilisateur)) { echo "$prefixe_utilisateur"; } diff --git a/services/gestion/parametres.php b/services/gestion/parametres.php index 0c3571e..5f72a92 100644 --- a/services/gestion/parametres.php +++ b/services/gestion/parametres.php @@ -7,6 +7,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); $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. @@ -66,4 +67,21 @@ _HEREDOC_; - \ No newline at end of file + + +Préfixe +

Préfixe actuel de {$_SESSION['pseudo_utilisateur']} : {$prefixe_utilisateur}

+
+ + +
+_HEREDOC_; +} + +?> + + \ No newline at end of file diff --git a/services/traitements/alias_virtuels/ajoutAliasVirtuels.php b/services/traitements/alias_virtuels/ajoutAliasVirtuels.php index 53fd5a7..19ce9c0 100644 --- a/services/traitements/alias_virtuels/ajoutAliasVirtuels.php +++ b/services/traitements/alias_virtuels/ajoutAliasVirtuels.php @@ -10,14 +10,12 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); testPrivileges(); 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 require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); $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'))) { ajoutAliasVirtuelsPostfix($pdo,$_POST['nom_alias_virtuel'],$_POST['choix_domaine_alias_virtuel']); header ("Location: /pages/gestion/administration.php?page=alias&succes=1"); diff --git a/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php b/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php index a76b752..5c9381c 100644 --- a/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php +++ b/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php @@ -12,7 +12,7 @@ testPrivileges(); 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 (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"); 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'])) { - if (verificationMotDePasse($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 (verificationMotDePasseUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['ancien_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"); die(); } diff --git a/services/traitements/utilisateurs/changePrefixeUtilisateur.php b/services/traitements/utilisateurs/changePrefixeUtilisateur.php new file mode 100644 index 0000000..fe89286 --- /dev/null +++ b/services/traitements/utilisateurs/changePrefixeUtilisateur.php @@ -0,0 +1,24 @@ + \ No newline at end of file From 0c4db5280595a2e1d16c92687a9c1508d6a70d9f Mon Sep 17 00:00:00 2001 From: ycharbi Date: Thu, 20 Jan 2022 20:16:37 +0100 Subject: [PATCH 03/17] =?UTF-8?q?Ajout=20de=20la=20fonctionnalit=C3=A9=20d?= =?UTF-8?q?'exportation=20des=20alias=20virtuels=20d'un=20utilisateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/fonctions/bdd/import_export.php | 41 +++++++++++++++++++ services/gestion/parametres.php | 23 +++++++++++ .../exportAliasVirtuelsUtilisateur.php | 18 ++++++++ .../import_export/exportDonneesBdd.php | 0 .../importAliasVirtuelsUtilisateur.php | 0 .../import_export/importDonneesBdd.php | 0 6 files changed, 82 insertions(+) create mode 100644 services/fonctions/bdd/import_export.php create mode 100644 services/traitements/import_export/exportAliasVirtuelsUtilisateur.php create mode 100644 services/traitements/import_export/exportDonneesBdd.php create mode 100644 services/traitements/import_export/importAliasVirtuelsUtilisateur.php create mode 100644 services/traitements/import_export/importDonneesBdd.php diff --git a/services/fonctions/bdd/import_export.php b/services/fonctions/bdd/import_export.php new file mode 100644 index 0000000..0e7cb27 --- /dev/null +++ b/services/fonctions/bdd/import_export.php @@ -0,0 +1,41 @@ +prepare($req); + $sql->bindValue(':destination',$utilisateur); + $sql->execute(); + + $liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC); + $nom_fichier_csv="Alias-virtuels_".$utilisateur."_".date('d-m-Y').".csv"; + + // Entêtes HTTP permettant le téléchargement à la volée du CSV + header("Content-Disposition: attachment; filename=\"$nom_fichier_csv\""); + header("Content-Type: text/csv"); + + foreach ($liste_alias_virtuels as $alias_virtuel => $champ_alias_virtuel) { + echo implode(":", $champ_alias_virtuel)."\n"; + } + + // Le fait de tuer la page enclenche la demande de téléchargement à l'utilisateur qui ne quitte visuellement jamais la page des paramètres + die(); + } + catch (\Exception $e) { + 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/gestion/parametres.php b/services/gestion/parametres.php index 5f72a92..818b725 100644 --- a/services/gestion/parametres.php +++ b/services/gestion/parametres.php @@ -82,6 +82,29 @@ if ($_SESSION['privilege_utilisateur']=="administrateur") { _HEREDOC_; } +echo <<<_HEREDOC_ +
Sauvegarde et restauration des données
+

Sauvegarde

+

Sauvegarde des alias virtuels de l'utilisateur

+
+ +
+_HEREDOC_; + +if ($_SESSION['privilege_utilisateur']=="administrateur") { + echo <<<_HEREDOC_ +

Sauvegarde de la base de données

+
+ + + + + + +
+_HEREDOC_; +} + ?> \ No newline at end of file diff --git a/services/traitements/import_export/exportAliasVirtuelsUtilisateur.php b/services/traitements/import_export/exportAliasVirtuelsUtilisateur.php new file mode 100644 index 0000000..1a6febd --- /dev/null +++ b/services/traitements/import_export/exportAliasVirtuelsUtilisateur.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/services/traitements/import_export/exportDonneesBdd.php b/services/traitements/import_export/exportDonneesBdd.php new file mode 100644 index 0000000..e69de29 diff --git a/services/traitements/import_export/importAliasVirtuelsUtilisateur.php b/services/traitements/import_export/importAliasVirtuelsUtilisateur.php new file mode 100644 index 0000000..e69de29 diff --git a/services/traitements/import_export/importDonneesBdd.php b/services/traitements/import_export/importDonneesBdd.php new file mode 100644 index 0000000..e69de29 From 7c8d7a0d32168822f08080bf2002bcf6eed1b9b7 Mon Sep 17 00:00:00 2001 From: ycharbi Date: Thu, 20 Jan 2022 22:43:56 +0100 Subject: [PATCH 04/17] =?UTF-8?q?Ajout=20de=20la=20fonctionnalit=C3=A9=20d?= =?UTF-8?q?'export=20des=20donn=C3=A9es=20de=20la=20base=20pour=20les=20ad?= =?UTF-8?q?ministrateurs=20+=20correction=20d'une=20faille=20de=20s=C3=A9c?= =?UTF-8?q?urit=C3=A9=20permettant=20=C3=A0=20un=20utilisateur=20standard?= =?UTF-8?q?=20de=20r=C3=A9aliser=20des=20t=C3=A2ches=20administrateur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/fonctions/bdd/import_export.php | 90 ++++++++++++++++++- services/gestion/parametres.php | 19 ++-- .../traitements/domaines/ajoutDomaines.php | 5 +- .../domaines/changeDomaineDefaut.php | 5 +- .../traitements/domaines/editEtatDomaines.php | 5 +- .../traitements/domaines/supprDomaines.php | 5 +- .../import_export/exportDonneesBdd.php | 37 ++++++++ .../ajoutEntreeListeNoireDst.php | 5 +- .../editEntreeListeNoireDst.php | 5 +- .../supprEntreeListeNoireDst.php | 5 +- .../ajoutEntreeListeNoireExp.php | 5 +- .../editEntreeListeNoireExp.php | 5 +- .../supprEntreeListeNoireExp.php | 5 +- .../utilisateurs/changePrefixeUtilisateur.php | 5 +- 14 files changed, 181 insertions(+), 20 deletions(-) diff --git a/services/fonctions/bdd/import_export.php b/services/fonctions/bdd/import_export.php index 0e7cb27..dddef2c 100644 --- a/services/fonctions/bdd/import_export.php +++ b/services/fonctions/bdd/import_export.php @@ -23,8 +23,8 @@ function exportAliasVirtuelsUtilisateur($pdo,$utilisateur) { $nom_fichier_csv="Alias-virtuels_".$utilisateur."_".date('d-m-Y').".csv"; // Entêtes HTTP permettant le téléchargement à la volée du CSV - header("Content-Disposition: attachment; filename=\"$nom_fichier_csv\""); - header("Content-Type: text/csv"); + header("Content-Disposition: attachment; filename=\"$nom_fichier_csv\""); + header("Content-Type: text/csv"); foreach ($liste_alias_virtuels as $alias_virtuel => $champ_alias_virtuel) { echo implode(":", $champ_alias_virtuel)."\n"; @@ -38,4 +38,90 @@ function exportAliasVirtuelsUtilisateur($pdo,$utilisateur) { } } +/** + * Fonction générant un fichier CSV avec le contenu de la base Sqlite demandé par un administrateur. + * Ce fichier est créé à la volée et se popose à l'administrateur pour téléchargement. + */ +function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { + try { + $nom_fichier_csv="Données_Courtail_".date('d-m-Y').".csv"; + + // Entêtes HTTP permettant le téléchargement à la volée du CSV + header("Content-Disposition: attachment; filename=\"$nom_fichier_csv\""); + header("Content-Type: text/csv"); + + foreach ($types_donnees_a_exporter as $cle_donnees_a_exporter => $type_donnee_a_exporter) { + switch ($type_donnee_a_exporter) { + case "alias_virtuels": + $req = 'SELECT * FROM postfix_alias_virtuels'; + $sql=$pdo->prepare($req); + $sql->execute(); + + $liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC); + + echo "#~// Alias vituels\n"; + foreach ($liste_alias_virtuels as $alias_virtuel => $champ_alias_virtuel) { + echo implode(":", $champ_alias_virtuel)."\n"; + } + break; + case "domaines": + $req = 'SELECT * FROM postfix_domaines'; + $sql=$pdo->prepare($req); + $sql->execute(); + + $liste_domaines = $sql->fetchAll(PDO::FETCH_ASSOC); + + echo "#~// Domaines\n"; + foreach ($liste_domaines as $domaine => $champ_domaine) { + echo implode(":", $champ_domaine)."\n"; + } + break; + case "liste_noire_destinataires": + $req = 'SELECT * FROM postfix_liste_noire_destinataires'; + $sql=$pdo->prepare($req); + $sql->execute(); + + $liste_liste_noire_destinataires = $sql->fetchAll(PDO::FETCH_ASSOC); + + echo "#~// Liste noire destinataires\n"; + foreach ($liste_liste_noire_destinataires as $liste_noire_destinataire => $champ_liste_noire_destinataire) { + echo implode(":", $champ_liste_noire_destinataire)."\n"; + } + break; + case "liste_noire_expediteurs": + $req = 'SELECT * FROM postfix_liste_noire_expediteurs'; + $sql=$pdo->prepare($req); + $sql->execute(); + + $liste_liste_noire_expediteurs = $sql->fetchAll(PDO::FETCH_ASSOC); + + echo "#~// Liste noire expéditeur\n"; + foreach ($liste_liste_noire_expediteurs as $liste_noire_expediteur => $champ_liste_noire_expediteur) { + echo implode(":", $champ_liste_noire_expediteur)."\n"; + } + break; + case "utilisateurs": + $req = 'SELECT * FROM postfix_utilisateurs'; + $sql=$pdo->prepare($req); + $sql->execute(); + + $liste_utilisateurs = $sql->fetchAll(PDO::FETCH_ASSOC); + + echo "#~// Utilisateurs\n"; + foreach ($liste_utilisateurs as $liste_utilisateur => $champ_utilisateur) { + echo implode(":", $champ_utilisateur)."\n"; + } + break; + } + + } + + // Le fait de tuer la page enclenche la demande de téléchargement à l'utilisateur qui ne quitte visuellement jamais la page des paramètres + die(); + } + catch (\Exception $e) { + die ("Erreur de requête d'export des données de la base en CSV : ".$e->getMessage()); + } +} + ?> \ No newline at end of file diff --git a/services/gestion/parametres.php b/services/gestion/parametres.php index 818b725..1722a34 100644 --- a/services/gestion/parametres.php +++ b/services/gestion/parametres.php @@ -94,13 +94,18 @@ _HEREDOC_; if ($_SESSION['privilege_utilisateur']=="administrateur") { echo <<<_HEREDOC_

Sauvegarde de la base de données

-
- - - - - - + + + + + + + + + + + +
_HEREDOC_; } diff --git a/services/traitements/domaines/ajoutDomaines.php b/services/traitements/domaines/ajoutDomaines.php index 26fc5ec..a16a796 100644 --- a/services/traitements/domaines/ajoutDomaines.php +++ b/services/traitements/domaines/ajoutDomaines.php @@ -8,7 +8,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); if (isset($_POST['nom_domaine']) && !empty($_POST['nom_domaine'])) { diff --git a/services/traitements/domaines/changeDomaineDefaut.php b/services/traitements/domaines/changeDomaineDefaut.php index 4ee69b5..ee9ec5d 100644 --- a/services/traitements/domaines/changeDomaineDefaut.php +++ b/services/traitements/domaines/changeDomaineDefaut.php @@ -7,7 +7,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); $liste_domaines = listeDomainesPostfix($pdo); diff --git a/services/traitements/domaines/editEtatDomaines.php b/services/traitements/domaines/editEtatDomaines.php index dc5c9a4..6ebfe49 100644 --- a/services/traitements/domaines/editEtatDomaines.php +++ b/services/traitements/domaines/editEtatDomaines.php @@ -6,7 +6,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); modifEtatDomainesPostfix($pdo,$_POST); diff --git a/services/traitements/domaines/supprDomaines.php b/services/traitements/domaines/supprDomaines.php index 5961d6e..60c4d75 100644 --- a/services/traitements/domaines/supprDomaines.php +++ b/services/traitements/domaines/supprDomaines.php @@ -6,7 +6,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); if(isset($_GET['supprDomaine']) && !empty($_GET['supprDomaine']) && supprDomainesPostfix($pdo,$_GET['supprDomaine'])) { diff --git a/services/traitements/import_export/exportDonneesBdd.php b/services/traitements/import_export/exportDonneesBdd.php index e69de29..c0d094d 100644 --- a/services/traitements/import_export/exportDonneesBdd.php +++ b/services/traitements/import_export/exportDonneesBdd.php @@ -0,0 +1,37 @@ + \ No newline at end of file diff --git a/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php b/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php index f006f21..e2bb545 100644 --- a/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php +++ b/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php @@ -8,7 +8,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); if (isset($_POST['courriel_entree_liste_noire_dst']) && isset($_POST['choix_action_entree_liste_noire_dst']) && !empty($_POST['courriel_entree_liste_noire_dst']) && !empty($_POST['choix_action_entree_liste_noire_dst'])) { diff --git a/services/traitements/liste_noire_dst/editEntreeListeNoireDst.php b/services/traitements/liste_noire_dst/editEntreeListeNoireDst.php index 69e6603..64f2227 100644 --- a/services/traitements/liste_noire_dst/editEntreeListeNoireDst.php +++ b/services/traitements/liste_noire_dst/editEntreeListeNoireDst.php @@ -6,7 +6,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); if (isset($_POST) && !empty($_POST)) { diff --git a/services/traitements/liste_noire_dst/supprEntreeListeNoireDst.php b/services/traitements/liste_noire_dst/supprEntreeListeNoireDst.php index 62e017e..055f319 100644 --- a/services/traitements/liste_noire_dst/supprEntreeListeNoireDst.php +++ b/services/traitements/liste_noire_dst/supprEntreeListeNoireDst.php @@ -6,7 +6,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); if(isset($_GET['supprEntreeListeNoireDst']) && !empty($_GET['supprEntreeListeNoireDst']) && supprEntreeListeNoireDstPostfix($pdo,$_GET['supprEntreeListeNoireDst'])) { diff --git a/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php b/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php index 9f22dd1..444a9a2 100644 --- a/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php +++ b/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php @@ -8,7 +8,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); if (isset($_POST['courriel_entree_liste_noire_exp']) && isset($_POST['choix_code_retour_entree_liste_noire_exp']) && !empty($_POST['courriel_entree_liste_noire_exp']) && !empty($_POST['choix_code_retour_entree_liste_noire_exp'])) { diff --git a/services/traitements/liste_noire_exp/editEntreeListeNoireExp.php b/services/traitements/liste_noire_exp/editEntreeListeNoireExp.php index d9f6462..34c25de 100644 --- a/services/traitements/liste_noire_exp/editEntreeListeNoireExp.php +++ b/services/traitements/liste_noire_exp/editEntreeListeNoireExp.php @@ -6,7 +6,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); if (isset($_POST) && !empty($_POST)) { diff --git a/services/traitements/liste_noire_exp/supprEntreeListeNoireExp.php b/services/traitements/liste_noire_exp/supprEntreeListeNoireExp.php index c5b076a..b8ece39 100644 --- a/services/traitements/liste_noire_exp/supprEntreeListeNoireExp.php +++ b/services/traitements/liste_noire_exp/supprEntreeListeNoireExp.php @@ -6,7 +6,10 @@ session_start(); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); if(isset($_GET['supprEntreeListeNoireExp']) && !empty($_GET['supprEntreeListeNoireExp']) && supprEntreeListeNoireExpPostfix($pdo,$_GET['supprEntreeListeNoireExp'])) { diff --git a/services/traitements/utilisateurs/changePrefixeUtilisateur.php b/services/traitements/utilisateurs/changePrefixeUtilisateur.php index fe89286..0da1460 100644 --- a/services/traitements/utilisateurs/changePrefixeUtilisateur.php +++ b/services/traitements/utilisateurs/changePrefixeUtilisateur.php @@ -8,7 +8,10 @@ session_start(); require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); -testPrivileges(); +if (testPrivileges()!="administrateur") { + header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18"); + die(); +} require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouveau_prefixe'])) { From cd42ba8d01e3abf559618a02f58d54b7bd69c9bd Mon Sep 17 00:00:00 2001 From: ycharbi Date: Fri, 21 Jan 2022 16:32:55 +0100 Subject: [PATCH 05/17] =?UTF-8?q?Ajout=20de=20la=20fonctionnalit=C3=A9=20p?= =?UTF-8?q?ermettant=20l'import=20des=20alias=20virtuels=20d'un=20utilisat?= =?UTF-8?q?eur=20+=20precision=20du=20retrour=20des=20fonctions=20de=20lis?= =?UTF-8?q?tage=20des=20alais=20virtuels,=20domaines,=20listes=20noires=20?= =?UTF-8?q?et=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 From 820512ced724fbee506bef5ac6681febcc48c5b1 Mon Sep 17 00:00:00 2001 From: ycharbi Date: Sat, 22 Jan 2022 19:31:09 +0100 Subject: [PATCH 06/17] =?UTF-8?q?Ajout=20de=20la=20fonctionnalit=C3=A9=20p?= =?UTF-8?q?ermettant=20l'import=20des=20donn=C3=A9es=20de=20la=20base=20pr?= =?UTF-8?q?=C3=A9c=C3=A9demment=20export=C3=A9s=20via=20la=20fonction=20id?= =?UTF-8?q?oine=20+=20correction=20du=20formatage=20des=20utilisateurs=20p?= =?UTF-8?q?r=C3=A9sents=20dans=20le=20fichier=20de=20provision=20SQL=20pou?= =?UTF-8?q?r=20Docker=20+=20changement=20de=20formatage=20des=20ent=C3=AAt?= =?UTF-8?q?es=20de=20type=20de=20donn=C3=A9es=20pour=20la=20sauvegarde=20d?= =?UTF-8?q?es=20donn=C3=A9es=20de=20la=20base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- outils/postfix_données.sql | 6 +- services/fonctions/bdd/import_export.php | 158 +++++++++++++++++- services/fonctions/messages/messages.php | 3 +- services/gestion/parametres.php | 21 +++ .../importAliasVirtuelsUtilisateur.php | 4 +- .../import_export/importDonneesBdd.php | 148 ++++++++++++++++ 6 files changed, 329 insertions(+), 11 deletions(-) diff --git a/outils/postfix_données.sql b/outils/postfix_données.sql index 8b98754..5d00b70 100644 --- a/outils/postfix_données.sql +++ b/outils/postfix_données.sql @@ -28,7 +28,5 @@ INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("roland@tata.fr",554,"Parle à ma main, ma tête est malade.",1); -- Listes utilisateurs -INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,active) VALUES ("toto@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto -Dupont","exemple.fr/toto/",3000,3000,"administrateur",1); -INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES ("tata@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto -Dupont","exemple.fr/tata/",3000,3000,"utilisateur","ta.",1) +INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,active) VALUES ("toto@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto Dupont","exemple.fr/toto/",3000,3000,"administrateur",1); +INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES ("tata@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Tata Dupuis","exemple.fr/tata/",3000,3000,"utilisateur","ta.",1); diff --git a/services/fonctions/bdd/import_export.php b/services/fonctions/bdd/import_export.php index 3dce5f2..1c7916c 100644 --- a/services/fonctions/bdd/import_export.php +++ b/services/fonctions/bdd/import_export.php @@ -59,7 +59,7 @@ function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { $liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC); - echo "#~// Alias vituels\n"; + echo "#~// Alias_vituels\n"; foreach ($liste_alias_virtuels as $alias_virtuel => $champ_alias_virtuel) { echo implode(":", $champ_alias_virtuel)."\n"; } @@ -83,7 +83,7 @@ function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { $liste_liste_noire_destinataires = $sql->fetchAll(PDO::FETCH_ASSOC); - echo "#~// Liste noire destinataires\n"; + echo "#~// Liste_noire_destinataires\n"; foreach ($liste_liste_noire_destinataires as $liste_noire_destinataire => $champ_liste_noire_destinataire) { echo implode(":", $champ_liste_noire_destinataire)."\n"; } @@ -95,7 +95,7 @@ function exportDonneesMessagerie($pdo,$types_donnees_a_exporter) { $liste_liste_noire_expediteurs = $sql->fetchAll(PDO::FETCH_ASSOC); - echo "#~// Liste noire expéditeur\n"; + echo "#~// Liste_noire_expéditeur\n"; foreach ($liste_liste_noire_expediteurs as $liste_noire_expediteur => $champ_liste_noire_expediteur) { echo implode(":", $champ_liste_noire_expediteur)."\n"; } @@ -167,5 +167,157 @@ function importAliasVirtuelsUtilisateur($pdo,$alias_virtuel,$utilisateur,$active } } +/** + * Fonction important les données sauvegardées dans un fichier CSV par un administrateur avec la fonction exportDonneesMessagerie(). + */ +function importDonneesMessagerie($pdo,$type_donnees_csv,$donnees_csv) { + try { + switch ($type_donnees_csv) { + case "alias_virtuels": + $req = 'INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:destination,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':alias_virtuel',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':destination',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':active',$donnees_csv[3]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "domaines": + $req = 'INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,:defaut,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':domaine',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':defaut',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':active',$donnees_csv[3]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "liste_noire_destinataires": + $req = 'INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES (:courriel,:action,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':courriel',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':action',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':active',$donnees_csv[3]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "liste_noire_expediteurs": + $req = 'INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES (:courriel,:code_retour,:message,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':courriel',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':code_retour',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':message',htmlspecialchars($donnees_csv[3])); + $sql->bindValue(':active',$donnees_csv[4]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + case "utilisateurs": + $req = 'INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES (:utilisateur,:mot_de_passe,:nom_complet,:rep_perso,:uid,:gid,:privilege,:prefixe,:active)'; + $sql=$pdo->prepare($req); + $sql->bindValue(':utilisateur',htmlspecialchars($donnees_csv[1])); + $sql->bindValue(':mot_de_passe',htmlspecialchars($donnees_csv[2])); + $sql->bindValue(':nom_complet',htmlspecialchars($donnees_csv[3])); + $sql->bindValue(':rep_perso',$donnees_csv[4]); + $sql->bindValue(':uid',$donnees_csv[5]); + $sql->bindValue(':gid',$donnees_csv[6]); + $sql->bindValue(':privilege',$donnees_csv[7]); + $sql->bindValue(':prefixe',$donnees_csv[8]); + $sql->bindValue(':active',$donnees_csv[9]); + $sql->execute(); + + if ($sql->rowCount() == 1){ + return true; + } + + else { + return false; + } + break; + } + } + catch (\Exception $e) { + die ("Erreur de requête d'export des données de la base en CSV : ".$e->getMessage()); + } +} + +/** + * Fonction de purge des tables permettant une importation fidèle des données contenues dans un ficher d'export CSV généré par la fonction exportDonneesMessagerie(). + */ +function purgeTable($pdo,$table) { + try { + switch ($table) { + case "postfix_alias_virtuels": + $sql = $pdo->prepare('DELETE FROM postfix_alias_virtuels'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_alias_virtuels"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_domaines": + $sql = $pdo->prepare('DELETE FROM postfix_domaines'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_domaines"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_liste_noire_destinataires": + $sql = $pdo->prepare('DELETE FROM postfix_liste_noire_destinataires'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_liste_noire_destinataires"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_liste_noire_expediteurs": + $sql = $pdo->prepare('DELETE FROM postfix_liste_noire_expediteurs'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_liste_noire_expediteurs"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + case "postfix_utilisateurs": + $sql = $pdo->prepare('DELETE FROM postfix_utilisateurs'); + $sql->execute(); + $sql = $pdo->prepare('UPDATE sqlite_sequence SET seq = 0 WHERE name = "postfix_utilisateurs"'); + $sql->execute(); + $sql = $pdo->prepare('VACUUM'); + $sql->execute(); + break; + } + } + catch (\Exception $e) { + die ("Erreur de requête de purge d'une table : ".$e->getMessage()); + } +} ?> \ No newline at end of file diff --git a/services/fonctions/messages/messages.php b/services/fonctions/messages/messages.php index f44bbd7..8e3a998 100644 --- a/services/fonctions/messages/messages.php +++ b/services/fonctions/messages/messages.php @@ -58,7 +58,8 @@ function retourneMessage($type_message,$num_message) { 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.
", 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.
"), + 23 => "
Votre fichier d'import CSV est plus grand que 2 Mo.
", + 24 => "
Auncun type de donnée n'a été spécifié pour l'importation.
"), "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 6ce31d2..9f1e44e 100644 --- a/services/gestion/parametres.php +++ b/services/gestion/parametres.php @@ -120,6 +120,27 @@ echo <<<_HEREDOC_ _HEREDOC_; +if ($_SESSION['privilege_utilisateur']=="administrateur") { + echo <<<_HEREDOC_ +

Restauration de la base de données

+

Attention, toutes les données non sauvegardés dans chaque section sélectionnée et présente dans votre fichier de restauration seront écrasées !

+
+ + + + + + + + + + + + +
+_HEREDOC_; +} + ?> \ No newline at end of file diff --git a/services/traitements/import_export/importAliasVirtuelsUtilisateur.php b/services/traitements/import_export/importAliasVirtuelsUtilisateur.php index 8c479ed..121162c 100644 --- a/services/traitements/import_export/importAliasVirtuelsUtilisateur.php +++ b/services/traitements/import_export/importAliasVirtuelsUtilisateur.php @@ -19,9 +19,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels. $types_donnees_a_exporter=array(); if (isset($_FILES['import_alias_virtuels_csv']) && !empty($_FILES['import_alias_virtuels_csv']['name']) && $_FILES['import_alias_virtuels_csv']['type']=="text/csv" && $_FILES['import_alias_virtuels_csv']['error']===0) { if ($_FILES['import_alias_virtuels_csv']['size']<2000000) { - if (file_exists($_FILES['import_alias_virtuels_csv']['tmp_name'])) { - echo "Le fichier ".$_FILES['import_alias_virtuels_csv']['tmp_name']." existe.\n"; if (($fichier_csv = fopen($_FILES['import_alias_virtuels_csv']['tmp_name'], "r")) !== FALSE) { while (($donnees_csv = fgetcsv($fichier_csv, 1000, ":")) !== FALSE) { // Vérification de la légitimité des alais virtuels importés @@ -30,7 +28,7 @@ if (isset($_FILES['import_alias_virtuels_csv']) && !empty($_FILES['import_alias_ // Vérification de l'existence du domaine de l'alias virtuel soumis $domaine_alias_virtuel_csv=explode('@', $donnees_csv[1]); if (in_array($domaine_alias_virtuel_csv[1],array_column($liste_domaines,'domaine'))) { - // Vérification de la coérence de l'état d'activation de l'alias virtuel soumis + // Vérification de la cohérence de l'état d'activation de l'alias virtuel soumis if ($donnees_csv[3]==0 || $donnees_csv[3]==1) { // Omission des doublons $liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo); diff --git a/services/traitements/import_export/importDonneesBdd.php b/services/traitements/import_export/importDonneesBdd.php index e69de29..baa05dc 100644 --- a/services/traitements/import_export/importDonneesBdd.php +++ b/services/traitements/import_export/importDonneesBdd.php @@ -0,0 +1,148 @@ + \ No newline at end of file From fc62455f51565abbdd251c5aac1a79a47789bcaf Mon Sep 17 00:00:00 2001 From: ycharbi Date: Tue, 25 Jan 2022 17:41:00 +0100 Subject: [PATCH 07/17] Tentative de persistence de la session utilisateur pour 30 jours --- pages/visiteurs/formulaire_accueil.php | 5 +++++ services/traitements/utilisateurs/identification.php | 2 ++ 2 files changed, 7 insertions(+) diff --git a/pages/visiteurs/formulaire_accueil.php b/pages/visiteurs/formulaire_accueil.php index bd8415e..b7e21d3 100644 --- a/pages/visiteurs/formulaire_accueil.php +++ b/pages/visiteurs/formulaire_accueil.php @@ -5,6 +5,11 @@ * Impose une authentification du visiteur pour continuer. * Redirige les tentative d'identification pour traitement et test de légitimité. */ +session_start(); +if (isset($_SESSION['id_utilisateur']) && isset($_SESSION['pseudo_utilisateur']) && isset($_SESSION['nom_utilisateur']) && isset($_SESSION['privilege_utilisateur']) && !empty($_SESSION['id_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['nom_utilisateur']) && !empty($_SESSION['privilege_utilisateur'])) { + header ("location: /pages/gestion/administration.php?page=accueil"); + die(); +} require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.php"); diff --git a/services/traitements/utilisateurs/identification.php b/services/traitements/utilisateurs/identification.php index 9e52245..5812370 100644 --- a/services/traitements/utilisateurs/identification.php +++ b/services/traitements/utilisateurs/identification.php @@ -17,6 +17,8 @@ if (isset($_POST['identifiant']) && isset($_POST['mdp']) && !empty($_POST['ident $result = validationIdentifiants($pdo,$_POST['identifiant'],trim($_POST['mdp'])); if($result) { + $duree_session=2592000; + session_set_cookie_params($duree_session); session_start(); $_SESSION['id_utilisateur'] = $result[0]['id']; $_SESSION['pseudo_utilisateur'] = $result[0]['utilisateur']; From 6d754656974b4af5f1a59143b88e3c303ebefcfd Mon Sep 17 00:00:00 2001 From: Nicolas MORIN Date: Wed, 19 Jan 2022 17:24:39 +0100 Subject: [PATCH 08/17] =?UTF-8?q?R=C3=A9-indentation=20du=20code=20pour=20?= =?UTF-8?q?le=20fichier=20services/gestion/listes=5Fnoires.php?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/gestion/listes_noires.php | 214 ++++++++++++++++++----------- 1 file changed, 133 insertions(+), 81 deletions(-) diff --git a/services/gestion/listes_noires.php b/services/gestion/listes_noires.php index 3bb6454..e2eec1f 100644 --- a/services/gestion/listes_noires.php +++ b/services/gestion/listes_noires.php @@ -2,8 +2,8 @@ -
-
Ajouter une entrée dans la liste noire des destinataires
-
-
- - - -
-
-
- +
+
+
Ajouter une entrée dans la liste noire des destinataires
+
+
+ + + +
+
+
+
+
+
+
Entrées de la liste noire des destinataires du serveur de messagerie
-

Entrées de la liste noire des destinataires du serveur de messagerie

- -
-
    -_HEREDOC_; + +
    + _HEREDOC_; /** * Liste des entrées de la liste noire des destinataires. */ - try { - foreach ($liste_entrees_liste_noires_dst as $liste_entrees_liste_noires_dst_cles => $liste_entrees_liste_noires_dst_valeurs) { - echo "
  • ".$liste_entrees_liste_noires_dst_valeurs['courriel']."

    ".$liste_entrees_liste_noires_dst_valeurs['action']."

    Confirmer la suppression
  • \n"; - } - } - catch (\Exception $e) { - die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage()); - } + try { + foreach ($liste_entrees_liste_noires_dst as $liste_entrees_liste_noires_dst_cles => $liste_entrees_liste_noires_dst_valeurs) { + if (isset($liste_entrees_liste_noires_dst_valeurs['active']) && $liste_entrees_liste_noires_dst_valeurs['active']=="1") { + $etat_interrupteur_allumer="checked"; + $etat_interrupteur_eteint=""; + } else { + $etat_interrupteur_eteint="checked"; + $etat_interrupteur_allumer=""; + } + echo <<<_HEREDOC_ +
    +
    +
    +
    + + + + +
    +
    + {$liste_entrees_liste_noires_dst_valeurs['courriel']} -> {$liste_entrees_liste_noires_dst_valeurs['action']} +
    +
    + +
    +
    + + Confirmer la suppression +
    +
    + _HEREDOC_; + } + } + catch (\Exception $e) { + die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage()); + } echo <<<_HEREDOC_ -
- -
-_HEREDOC_; - break; +
+ + +
+ + _HEREDOC_; + break; case 'expediteurs': echo <<<_HEREDOC_ -
-
-
Ajouter une entrée dans la liste noire des expéditeurs
-
-
- - - -
-
-
-
- -

Entrées de la liste noire des expéditeurs du serveur de messagerie

+
+
+
Ajouter une entrée dans la liste noire des expéditeurs
+
+
+ + + +
+
+
+
+
+
+
Entrées de la liste noire des expéditeurs du serveur de messagerie
-
-
    -_HEREDOC_; + +
    + _HEREDOC_; /** * Liste des entrées de la liste noire des destinataires. */ - try { - foreach ($liste_entrees_liste_noires_exp as $liste_entrees_liste_noires_exp_cles => $liste_entrees_liste_noires_exp_valeurs) { - echo "
  • ".$liste_entrees_liste_noires_exp_valeurs['courriel']."

    ".$liste_entrees_liste_noires_exp_valeurs['code_retour']."

    Confirmer la suppression
  • \n"; - } - } - catch (\Exception $e) { - die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage()); - } + try { + foreach ($liste_entrees_liste_noires_exp as $liste_entrees_liste_noires_exp_cles => $liste_entrees_liste_noires_exp_valeurs) { + if (isset($liste_entrees_liste_noires_exp_valeurs['active']) && $liste_entrees_liste_noires_exp_valeurs['active']=="1") { + $etat_interrupteur_allumer="checked"; + $etat_interrupteur_eteint=""; + } else { + $etat_interrupteur_eteint="checked"; + $etat_interrupteur_allumer=""; + } + echo <<<_HEREDOC_ +
    +
    +
    +
    + + + + +
    +
    + {$liste_entrees_liste_noires_exp_valeurs['courriel']} +
    +
    + +
    +
    + + Confirmer la suppression +
    +
    + _HEREDOC_; + } + } + catch (\Exception $e) { + die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage()); + } echo <<<_HEREDOC_ -
- -
-_HEREDOC_; - break; +
+ + +
+ + _HEREDOC_; + break; default: echo "

Cette page n'existe pas.

"; - break; + break; } } - ?> - - + From 70e77dc11c9c1183c7f9559e52f97638eacbce99 Mon Sep 17 00:00:00 2001 From: Nicolas MORIN Date: Wed, 19 Jan 2022 17:25:27 +0100 Subject: [PATCH 09/17] Modification de la couleur de fond des pages --- fichiers/css/personalisation.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fichiers/css/personalisation.css b/fichiers/css/personalisation.css index a401c0f..edbcd02 100644 --- a/fichiers/css/personalisation.css +++ b/fichiers/css/personalisation.css @@ -1,5 +1,5 @@ body { - background-color: #eee; + background-color: #f8f9fa; margin-bottom: 100px; } From 5d28535b3f20994eff1934553f9ac79dc1460989 Mon Sep 17 00:00:00 2001 From: Nicolas MORIN Date: Tue, 25 Jan 2022 21:17:36 +0100 Subject: [PATCH 10/17] Officialisation couleur Arc noire + Ajout badges sur pages liste noire dest et exp avec fleche dans liste --- fichiers/css/personalisation.css | 9 +++++++++ fichiers/svg/chevron-right.svg | 1 + inclusions/barre_menu.php | 2 +- pages/visiteurs/formulaire_accueil.php | 2 +- services/gestion/listes_noires.php | 4 ++-- 5 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 fichiers/svg/chevron-right.svg diff --git a/fichiers/css/personalisation.css b/fichiers/css/personalisation.css index edbcd02..63f1d63 100644 --- a/fichiers/css/personalisation.css +++ b/fichiers/css/personalisation.css @@ -74,3 +74,12 @@ body { .interieur-pastille-bleu { background-color: #cfe2ff; } + +.chevron-dst { + height: 1em; + padding-bottom: 0.1em; +} + +.fond-arc-noire{ + background-color: #343a40; +} diff --git a/fichiers/svg/chevron-right.svg b/fichiers/svg/chevron-right.svg new file mode 100644 index 0000000..258de41 --- /dev/null +++ b/fichiers/svg/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/inclusions/barre_menu.php b/inclusions/barre_menu.php index ed8608c..8985dec 100644 --- a/inclusions/barre_menu.php +++ b/inclusions/barre_menu.php @@ -6,7 +6,7 @@ if (isset($_GET['page']) && !empty($_GET['page'])) { ?> -