Ajout de la fonctionnalité d'export des données de la base pour les administrateurs + correction d'une faille de sécurité permettant à un utilisateur standard de réaliser des tâches administrateur
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -94,12 +94,17 @@ _HEREDOC_;
|
||||
if ($_SESSION['privilege_utilisateur']=="administrateur") {
|
||||
echo <<<_HEREDOC_
|
||||
<p>Sauvegarde de la base de données</p>
|
||||
<form action="/services/traitements/utilisateurs/exportDonneesBdd.php" method="post">
|
||||
<input type="checkbox" name="export_alias_virtuels">
|
||||
<input type="checkbox" name="export_domaines">
|
||||
<input type="checkbox" name="export_listes_noires_destinataires">
|
||||
<input type="checkbox" name="export_listes_noires_exediteurs">
|
||||
<input type="checkbox" name="export_utilisateurs">
|
||||
<form action="/services/traitements/import_export/exportDonneesBdd.php" method="post">
|
||||
<label>Alias virtuels :</label>
|
||||
<input type="checkbox" name="export_alias_virtuels" checked>
|
||||
<label>Domaines :</label>
|
||||
<input type="checkbox" name="export_domaines" checked>
|
||||
<label>Liste noire destinataires :</label>
|
||||
<input type="checkbox" name="export_liste_noire_destinataires" checked>
|
||||
<label>Liste noire expéditeurs :</label>
|
||||
<input type="checkbox" name="export_liste_noire_expediteurs" checked>
|
||||
<label>Utilisateurs :</label>
|
||||
<input type="checkbox" name="export_utilisateurs" checked>
|
||||
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
|
||||
</form>
|
||||
_HEREDOC_;
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Page de traitement permettant l'export des alias virtuels d'un utilisateur.
|
||||
* Elle est appelée par un bouton de la page des paramètres.
|
||||
*/
|
||||
|
||||
session_start();
|
||||
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
|
||||
if (testPrivileges()!="administrateur") {
|
||||
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
|
||||
die();
|
||||
}
|
||||
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/import_export.php");
|
||||
|
||||
$types_donnees_a_exporter=array();
|
||||
if (isset($_POST['export_alias_virtuels']) && $_POST['export_alias_virtuels']==="on") {
|
||||
array_push($types_donnees_a_exporter, 'alias_virtuels');
|
||||
}
|
||||
if (isset($_POST['export_domaines']) && $_POST['export_domaines']==="on") {
|
||||
array_push($types_donnees_a_exporter, 'domaines');
|
||||
}
|
||||
if (isset($_POST['export_liste_noire_destinataires']) && $_POST['export_liste_noire_destinataires']==="on") {
|
||||
array_push($types_donnees_a_exporter, 'liste_noire_destinataires');
|
||||
}
|
||||
if (isset($_POST['export_liste_noire_expediteurs']) && $_POST['export_liste_noire_expediteurs']==="on") {
|
||||
array_push($types_donnees_a_exporter, 'liste_noire_expediteurs');
|
||||
}
|
||||
if (isset($_POST['export_utilisateurs']) && $_POST['export_utilisateurs']==="on") {
|
||||
array_push($types_donnees_a_exporter, 'utilisateurs');
|
||||
}
|
||||
|
||||
exportDonneesMessagerie($pdo,$types_donnees_a_exporter);
|
||||
header ("Location: /pages/gestion/administration.php?page=parametres");
|
||||
die();
|
||||
|
||||
?>
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
@@ -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'])) {
|
||||
|
||||
Reference in New Issue
Block a user