Merge pull request 'Ajout code pour affichage du bouton si formulaire modifié' (#7) from nmorin into develop

Reviewed-on: #7
pull/4/head
nmorin 3 years ago
commit 1c6af168a6

@ -1,5 +1,5 @@
body {
background-color: #eee;
background-color: #f8f9fa;
margin-bottom: 100px;
}
@ -45,6 +45,20 @@ body {
width: 60px;
height: 60px;
border: 2px solid #0d6efd;
animation-name: zoom;
animation-duration: .2s;
}
@keyframes zoom {
0% {
transform: scale(0, 0);
}
100% {
transform: scale(1, 1);
}
}
.bouton-flotant.deactivation{
display: none;
}
.contour-pastille {
@ -74,3 +88,16 @@ body {
.interieur-pastille-bleu {
background-color: #cfe2ff;
}
.chevron-dst {
height: 1em;
padding-bottom: 0.1em;
}
.fond-arc-noire{
background-color: #343a40;
}
.max-hauteur-pastille{
height: calc(100% - 1.5em);
}

@ -0,0 +1,20 @@
const listedesentree = [];
function activationBoutonFlotant(lui) {
if (listedesentree.find(function(valeur) {return valeur == lui.name;})) {
for( var i = 0; i < listedesentree.length; i++){
if ( listedesentree[i] === lui.name) {
listedesentree.splice(i, 1);
break;
}
}
} else {
listedesentree.push(lui.name);
};
console.log(listedesentree);
if (listedesentree.length > 0){
document.getElementById("enregistement").classList.remove("deactivation");
}else{
document.getElementById("enregistement").classList.add("deactivation");
}
}

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"><polyline points="9 18 15 12 9 6"></polyline></svg>

After

Width:  |  Height:  |  Size: 270 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-edit"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"></path><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"></path></svg>

After

Width:  |  Height:  |  Size: 357 B

@ -6,7 +6,7 @@
if (isset($_GET['page']) && !empty($_GET['page'])) {
?>
<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #343a40;">
<nav class="navbar navbar-expand-lg navbar-dark fond-arc-noire">
<div class="container-fluid">
<a class="navbar-brand" href="/pages/gestion/administration.php?page=accueil">Courtail</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">

@ -1,3 +1,4 @@
<script src="/fichiers/js/bootstrap.bundle.min.js"></script>
<script src="/fichiers/js/formulaire.js"></script>
</body>
</html>

@ -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);

@ -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");
@ -48,7 +53,7 @@ require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.ph
<script>
const body = document.querySelector('body');
body.style.backgroundColor = '#343a40';
body.classList.add("fond-arc-noire");
</script>
<?php

@ -8,36 +8,34 @@ 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.
* Fonction listant les alias virtuels d'un utilisateur.
*/
function retournePrefixeUtilisateurPostfix($pdo) {
function listeAliasVirtuelsPostfix($pdo) {
try {
$req = 'SELECT prefixe FROM postfix_utilisateurs WHERE utilisateur=:utilisateur';
// Filtre des alias virtuels de l'utilisateur courant
$req = 'SELECT * FROM postfix_alias_virtuels WHERE destination=:destination ORDER BY courriel ASC';
$sql=$pdo->prepare($req);
$sql->bindValue(':utilisateur',$_SESSION['pseudo_utilisateur']);
$sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']);
$sql->execute();
$prefixe_utilisateur=$sql->fetchAll();
return $prefixe_utilisateur[0]['prefixe'];
$liste_alias_virtuels = $sql->fetchAll(PDO::FETCH_ASSOC);
return $liste_alias_virtuels;
}
catch (\Exception $e) {
die ("Erreur de requête de selection des alias virtuels : ".$e->getMessage());
}
}
/**
* Fonction listant les alias virtuels.
* Fonction listant tous les alias virtuels de la base.
*/
function listeAliasVirtuelsPostfix($pdo) {
function listeTousAliasVirtuelsPostfix($pdo) {
try {
// Filtre des alias virtuels de l'utilisateur courant
$req = 'SELECT * FROM postfix_alias_virtuels WHERE destination=:destination ORDER BY courriel ASC';
$req = 'SELECT * FROM postfix_alias_virtuels';
$sql=$pdo->prepare($req);
$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) {
@ -55,7 +53,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){

@ -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) {
@ -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

@ -0,0 +1,323 @@
<?php
/**
* Page de fonctions permettant la la sauvegarde et la restauration des données de la base de la messagerie.
*/
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
/**
* Fonction générant un fichier CSV avec le contenu des alias virtuels d'un utilisateur.
* Ce fichier est créé à la volée et se popose à l'utilisateur pour téléchargement.
*/
function exportAliasVirtuelsUtilisateur($pdo,$utilisateur) {
try {
// Filtre des alias virtuels de l'utilisateur courant
$req = 'SELECT * FROM postfix_alias_virtuels WHERE destination=:destination';
$sql=$pdo->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());
}
}
/**
* 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());
}
}
/**
* 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'import des alias virtuels utilisateur en CSV : ".$e->getMessage());
}
}
}
/**
* 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'import 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());
}
}
?>

@ -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,11 +35,11 @@ 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) {
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());
}
}

@ -14,13 +14,152 @@ function listeUtilisateursPostfix($pdo) {
$req = 'SELECT utilisateur FROM postfix_utilisateurs';
$sql=$pdo->prepare($req);
$sql->execute();
$liste_utilisateurs = $sql->fetchAll();
$liste_utilisateurs = $sql->fetchAll(PDO::FETCH_ASSOC);
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 verificationMotDePasseUtilisateurPostfix($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 de vérification du mot de passe utilisateur : " . $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 changeMotDePasseUtilisateurPostfix($pdo,$utilisateur,$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=:utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':utilisateur', $utilisateur);
$sql->bindValue(':nouveau_mdp', $mot_de_passe_hachis);
$sql->execute();
}
catch (\Exception $e) {
die ("Erreur de requête de changement de mot de passe utilisateur : ".$e->getMessage());
}
return true;
}
else {
return false;
}
}
?>
/**
* 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();
if (isset($prefixe_utilisateurs[0]['prefixe'])) {
return $prefixe_utilisateurs[0]['prefixe'];
}
else {
$prefixe_utilisateurs[0]['prefixe']="";
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());
}
}
/**
* Fonction vérifiant que l'utilisateur connecté au site existe toujours dans la base de données.
*/
function verifUtilisateursExiste($pdo,$utilisateur) {
try {
$req = 'SELECT utilisateur FROM postfix_utilisateurs WHERE utilisateur=:utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':utilisateur', $utilisateur);
$sql->execute();
$liste_utilisateurs = $sql->fetchAll(PDO::FETCH_ASSOC);
if (count($liste_utilisateurs) === 1) {
return TRUE;
}
else {
return FALSE;
}
}
catch (\Exception $e) {
die ("Erreur de requête de vérification d'existence de l'utilisateur connecté : ".$e->getMessage());
}
}
?>

@ -31,7 +31,11 @@ function retourneMessage($type_message,$num_message) {
12 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire expéditeurs a été créée 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>",
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>",
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>",
18 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Vos données ont bien étés importés. Les doublons ainsi que les données erronées ont étés ignorés.</div>",
19 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Vos données ont bien étés importés. Veuillez vous ré-identifier.</div>"),
"erreurs" => array(
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>",
@ -51,7 +55,12 @@ function retourneMessage($type_message,$num_message) {
16 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'entrée de liste noire expéditeurs n'a pas été ajouté car elle est déjà existante.</div>",
17 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Identifiant ou mot de passe incorrecte.</div>",
18 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Vous n'avez pas les privilèges nécessaires.</div>",
19 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Erreur non gérée.</div>"),
19 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Erreur non gérée.</div>",
20 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'ancien mot de passe renseigné est erroné.</div>",
21 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Le mot de passe de confimation n'est pas identique au nouveau mot de passe.</div>",
22 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> 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.</div>",
23 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Votre fichier d'import CSV est plus grand que 2 Mo.</div>",
24 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Auncun type de donnée n'a été spécifié pour l'importation.</div>"),
"messages" => array(
"bienvenue" => "<div class=\"alert alert-primary\" role=\"alert\"><img src=\"/fichiers/svg/info.svg\"/> Bienvenue ".$nom_utilisateur.". Vous êtes authentifié en tant qu'".$privilege_utilisateur.".</div>")
);

@ -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.

@ -15,11 +15,11 @@ $liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo);
/**
* Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur.
*/
if (testPrivileges()=="administrateur") {
if (testPrivileges()==="administrateur") {
echo <<<_HEREDOC_
<div class="row">
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Choix de l'adresse</h5>
<form id="form_choix_utilisateur" action="/services/traitements/utilisateurs/changeUtilisateur.php" method="post">
@ -28,20 +28,21 @@ _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) {
if ($utilisateur['utilisateur']==$_SESSION['pseudo_utilisateur']) {
if ($utilisateur['utilisateur']===$_SESSION['pseudo_utilisateur']) {
echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n";
}
elseif ($_SESSION['privilege_utilisateur']=="administrateur") {
elseif ($_SESSION['privilege_utilisateur']==="administrateur") {
echo "<option value=\"".$utilisateur['utilisateur']."\">".$utilisateur['utilisateur']."</option>\n";
}
}
echo <<<_HEREDOC_
</select>
<input type="hidden" name="page_origine" value="alias">
</form>
</div>
</div>
@ -51,8 +52,8 @@ _HEREDOC_;
?>
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="col-12<?php if ($_SESSION['privilege_utilisateur']==="administrateur") {echo' col-md-6';}?>">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Ajouter un alias virtuel</h5>
<form action="/services/traitements/alias_virtuels/ajoutAliasVirtuels.php" method="post">
@ -62,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 "<span class=\"input-group-text\">$prefixe_utilisateur</span>";
}
@ -120,9 +121,9 @@ _HEREDOC_;
<div class="card contour-pastille">
<div class="d-flex interieur-pastille">
<div class="champ-interrupteur">
<input type="radio" name="{$alias_virtuels_valeurs['id']}" id="allumer{$alias_virtuels_valeurs['id']}" value="1" {$etat_interrupteur_allumer}>
<input type="radio" name="{$alias_virtuels_valeurs['id']}" id="allumer{$alias_virtuels_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="1" {$etat_interrupteur_allumer}>
<label for="allumer{$alias_virtuels_valeurs['id']}" class="interrupteur-allumer"></label>
<input type="radio" name="{$alias_virtuels_valeurs['id']}" id="eteint{$alias_virtuels_valeurs['id']}" value="0" {$etat_interrupteur_eteint}>
<input type="radio" name="{$alias_virtuels_valeurs['id']}" id="eteint{$alias_virtuels_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$alias_virtuels_valeurs['id']}" class="interrupteur-eteint"></label>
</div>
<div class="titre-pastille">
@ -145,7 +146,7 @@ _HEREDOC_;
?>
</div>
<button class="bouton-flotant" type="submit"><img src="/fichiers/svg/save.svg"/></button>
<button id="enregistement" class="bouton-flotant deactivation" type="submit"><img src="/fichiers/svg/save.svg"/></button>
</form>
</div>
</div>

@ -6,7 +6,7 @@
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
if (testPrivileges()!="administrateur") {
if (testPrivileges()!=="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
@ -18,7 +18,7 @@ $liste_domaines = listeDomainesPostfix($pdo);
<!-- Affichage et changement du domaine par défaut -->
<div class="row">
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Domaine par défaut</h5>
<?php
@ -58,7 +58,7 @@ $liste_domaines = listeDomainesPostfix($pdo);
</div>
</div>
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Ajouter un domaine</h5>
<form action="/services/traitements/domaines/ajoutDomaines.php" method="post">
@ -72,7 +72,7 @@ $liste_domaines = listeDomainesPostfix($pdo);
</div>
</div>
<div class="card mt-4">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Domaines du serveur de messagerie</h5>
<form class="" action="/services/traitements/domaines/editEtatDomaines.php" method="post">

@ -2,12 +2,12 @@
<?php
/**
* Page de gestion importé par la page d'administration centrale permettant la gestion des listes noires.
*/
* Page de gestion importé par la page d'administration centrale permettant la gestion des listes noires.
*/
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
if (testPrivileges()!="administrateur") {
if (testPrivileges()!=="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
@ -17,105 +17,157 @@ $liste_entrees_liste_noires_dst=listeEntreeListeNoireDstPostfix($pdo);
$liste_entrees_liste_noires_exp=listeEntreeListeNoireExpPostfix($pdo);
/**
* Permet d'inclure la page d'administration des listes noires déstinataires ou expéditeurs dédiée.
*/
* Permet d'inclure la page d'administration des listes noires déstinataires ou expéditeurs dédiée.
*/
if (isset($_GET['sousPage']) && !empty($_GET['sousPage'])) {
switch ($_GET['sousPage']) {
case 'destinataires':
echo <<<_HEREDOC_
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter une entrée dans la liste noire des destinataires</h5>
<form action="/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php" method="post">
<div class="input-group">
<input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_dst" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
<select class="form-select" name="choix_action_entree_liste_noire_dst">
<option value="REJECT">REJECT</option>
<option value="DEFER">DEFER</option>
</select>
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div>
</form>
</div>
</div>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter une entrée dans la liste noire des destinataires</h5>
<form action="/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php" method="post">
<div class="input-group">
<input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_dst" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
<select class="form-select" name="choix_action_entree_liste_noire_dst">
<option value="REJECT">REJECT</option>
<option value="DEFER">DEFER</option>
</select>
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div>
</form>
</div>
</div>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Entrées de la liste noire des destinataires du serveur de messagerie</h5>
<h1>Entrées de la liste noire des destinataires du serveur de messagerie</h1>
<form class="" action="/services/traitements/liste_noire_dst/editEntreeListeNoireDst.php" method="post">
<ul id="liste_pour_filtre">
_HEREDOC_;
<form class="" action="/services/traitements/liste_noire_dst/editEntreeListeNoireDst.php" method="post">
<div class="row" id="liste_pour_filtre">
_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 "<li><input type=\"radio\" name=\"".$liste_entrees_liste_noires_dst_valeurs['id']."\" value=\"1\"";
if (isset($liste_entrees_liste_noires_dst_valeurs['active']) && !empty($liste_entrees_liste_noires_dst_valeurs['active']) && $liste_entrees_liste_noires_dst_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$liste_entrees_liste_noires_dst_valeurs['id']."\" value=\"0\"";
if (isset($liste_entrees_liste_noires_dst_valeurs['active']) && $liste_entrees_liste_noires_dst_valeurs['active']=="0") echo " checked";
echo "><table><tr><td><p>".$liste_entrees_liste_noires_dst_valeurs['courriel']."</p></td><td><p>".$liste_entrees_liste_noires_dst_valeurs['action']."</p></td></tr></table><label class=\"input-label-supprimer-valeur\" for=\"supprimer-valeur-".$liste_entrees_liste_noires_dst_valeurs['id']."\">Supprimer</label><input type=\"checkbox\" class=\"input-checkbox-supprimer-valeur visuellement-cache\" id=\"supprimer-valeur-".$liste_entrees_liste_noires_dst_valeurs['id']."\"><a class=\"confirmation-suppression\" href=\"/services/traitements/liste_noire_dst/supprEntreeListeNoireDst.php?supprEntreeListeNoireDst=".$liste_entrees_liste_noires_dst_valeurs['id']."\">Confirmer la suppression</a></li>\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_
<div class="col-md-6 col-xl-4">
<div class="card contour-pastille">
<div class="d-flex interieur-pastille">
<div class="champ-interrupteur">
<input type="radio" name="{$liste_entrees_liste_noires_dst_valeurs['id']}" id="allumer{$liste_entrees_liste_noires_dst_valeurs['id']}" value="1" {$etat_interrupteur_allumer}>
<label for="allumer{$liste_entrees_liste_noires_dst_valeurs['id']}" class="interrupteur-allumer"></label>
<input type="radio" name="{$liste_entrees_liste_noires_dst_valeurs['id']}" id="eteint{$liste_entrees_liste_noires_dst_valeurs['id']}" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$liste_entrees_liste_noires_dst_valeurs['id']}" class="interrupteur-eteint"></label>
</div>
<div class="titre-pastille">
<span>{$liste_entrees_liste_noires_dst_valeurs['courriel']} <img class="chevron-dst" src="/fichiers/svg/chevron-right.svg" /> <span class="badge fond-arc-noire">{$liste_entrees_liste_noires_dst_valeurs['action']}</span></span>
</div>
<div>
<label class="input-label-supprimer-valeur btn btn-danger btn-sm" for="supprimer-valeur-{$liste_entrees_liste_noires_dst_valeurs['id']}"><img src="/fichiers/svg/trash-2.svg"></label>
</div>
</div>
<input type="checkbox" class="input-checkbox-supprimer-valeur visuellement-cache" id="supprimer-valeur-{$liste_entrees_liste_noires_dst_valeurs['id']}">
<a class="confirmation-suppression card-footer" href="/services/traitements/liste_noire_dst/supprEntreeListeNoireDst.php?supprEntreeListeNoireDst={$liste_entrees_liste_noires_dst_valeurs['id']}">Confirmer la suppression</a>
</div>
</div>
_HEREDOC_;
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
echo <<<_HEREDOC_
</ul>
<input type="submit" value="Appliquer">
</form>
_HEREDOC_;
break;
</div>
<button class="bouton-flotant" type="submit"><img src="/fichiers/svg/save.svg"/></button>
</form>
</div>
</div>
_HEREDOC_;
break;
case 'expediteurs':
echo <<<_HEREDOC_
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter une entrée dans la liste noire des expéditeurs</h5>
<form action="/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php" method="post">
<div class="input-group">
<input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_exp" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
<select class="form-select" name="choix_code_retour_entree_liste_noire_exp">
<option value="554">REJECT</option>
</select>
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div>
</form>
</div>
</div>
<h1>Entrées de la liste noire des expéditeurs du serveur de messagerie</h1>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter une entrée dans la liste noire des expéditeurs</h5>
<form action="/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php" method="post">
<div class="input-group">
<input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_exp" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
<select class="form-select" name="choix_code_retour_entree_liste_noire_exp">
<option value="554">REJECT</option>
</select>
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div>
</form>
</div>
</div>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Entrées de la liste noire des expéditeurs du serveur de messagerie</h5>
<form class="" action="/services/traitements/liste_noire_exp/editEntreeListeNoireExp.php" method="post">
<ul id="liste_pour_filtre">
_HEREDOC_;
<form class="" action="/services/traitements/liste_noire_exp/editEntreeListeNoireExp.php" method="post">
<div class="row" id="liste_pour_filtre">
_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 "<li><input type=\"radio\" name=\"".$liste_entrees_liste_noires_exp_valeurs['id']."\" value=\"1\"";
if (isset($liste_entrees_liste_noires_exp_valeurs['active']) && !empty($liste_entrees_liste_noires_exp_valeurs['active']) && $liste_entrees_liste_noires_exp_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$liste_entrees_liste_noires_exp_valeurs['id']."\" value=\"0\"";
if (isset($liste_entrees_liste_noires_exp_valeurs['active']) && $liste_entrees_liste_noires_exp_valeurs['active']=="0") echo " checked";
echo "><table><tr><td><p>".$liste_entrees_liste_noires_exp_valeurs['courriel']."</p></td><td><p>".$liste_entrees_liste_noires_exp_valeurs['code_retour']."</p></td></tr></table><label class=\"input-label-supprimer-valeur\" for=\"supprimer-valeur-".$liste_entrees_liste_noires_exp_valeurs['id']."\">Supprimer</label><input type=\"checkbox\" class=\"input-checkbox-supprimer-valeur visuellement-cache\" id=\"supprimer-valeur-".$liste_entrees_liste_noires_exp_valeurs['id']."\"><a class=\"confirmation-suppression\" href=\"/services/traitements/liste_noire_exp/supprEntreeListeNoireExp.php?supprEntreeListeNoireExp=".$liste_entrees_liste_noires_exp_valeurs['id']."\">Confirmer la suppression</a></li>\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_
<div class="col-md-6 col-xl-4">
<div class="card contour-pastille">
<div class="d-flex interieur-pastille">
<div class="champ-interrupteur">
<input type="radio" name="{$liste_entrees_liste_noires_exp_valeurs['id']}" id="allumer{$liste_entrees_liste_noires_exp_valeurs['id']}" value="1" {$etat_interrupteur_allumer}>
<label for="allumer{$liste_entrees_liste_noires_exp_valeurs['id']}" class="interrupteur-allumer"></label>
<input type="radio" name="{$liste_entrees_liste_noires_exp_valeurs['id']}" id="eteint{$liste_entrees_liste_noires_exp_valeurs['id']}" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$liste_entrees_liste_noires_exp_valeurs['id']}" class="interrupteur-eteint"></label>
</div>
<div class="titre-pastille">
<span><span class="badge fond-arc-noire">{$liste_entrees_liste_noires_exp_valeurs['code_retour']}</span> <img class="chevron-dst" src="/fichiers/svg/chevron-right.svg" /> {$liste_entrees_liste_noires_exp_valeurs['courriel']}</span>
</div>
<div>
<label class="input-label-supprimer-valeur btn btn-danger btn-sm" for="supprimer-valeur-{$liste_entrees_liste_noires_exp_valeurs['id']}"><img src="/fichiers/svg/trash-2.svg"></label>
</div>
</div>
<input type="checkbox" class="input-checkbox-supprimer-valeur visuellement-cache" id="supprimer-valeur-{$liste_entrees_liste_noires_exp_valeurs['id']}">
<a class="confirmation-suppression card-footer" href="/services/traitements/liste_noire_exp/supprEntreeListeNoireExp.php?supprEntreeListeNoireExp={$liste_entrees_liste_noires_exp_valeurs['id']}">Confirmer la suppression</a>
</div>
</div>
_HEREDOC_;
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
echo <<<_HEREDOC_
</ul>
<input type="submit" value="Appliquer">
</form>
_HEREDOC_;
break;
</div>
<button class="bouton-flotant" type="submit"><img src="/fichiers/svg/save.svg"/></button>
</form>
</div>
</div>
_HEREDOC_;
break;
default:
echo " <h1>Cette page n'existe pas.</h1>";
break;
break;
}
}
?>
<script src="/fichiers/js/filtre.js"></script>
</div>
<script src="/fichiers/js/filtre.js"></script>

@ -1,7 +1,216 @@
<?php
/**
* Page centrale de gestion des paramètres d'un utilisateur et du portail lui-même.
*/
* Page centrale de gestion des paramètres d'un utilisateur et du portail lui-même.
*/
?>
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
$liste_utilisateurs = listeUtilisateursPostfix($pdo);
$prefixe_utilisateur = retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']);
if ($_SESSION['pseudo_connexion_utilisateur'] !== $_SESSION['pseudo_utilisateur']){
$message_alert_utilisateur="<div class=\"alert alert-warning mt-2 mb-2\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle-warning.svg\"/> Vous allez modifier les paramètres d'un autre utilisateur que vous.</div>";
}else{
$message_alert_utilisateur="";
}
/**
* Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur.
*/
if (testPrivileges()==="administrateur") {
echo <<<_HEREDOC_
<div class="col-12">
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Choix de l'adresse</h5>
<form id="form_choix_utilisateur" action="/services/traitements/utilisateurs/changeUtilisateur.php" method="post">
<select class="form-select" name="choix_utilisateur" onchange="autoSoumission(this);">
_HEREDOC_;
/**
* Remplis un menu déroulant permettant le choix de l'utilisateur par l'administrateur.
* 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) {
if ($utilisateur['utilisateur']===$_SESSION['pseudo_utilisateur']) {
echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n";
}
elseif ($_SESSION['privilege_utilisateur']==="administrateur") {
echo "<option value=\"".$utilisateur['utilisateur']."\">".$utilisateur['utilisateur']."</option>\n";
}
}
echo <<<_HEREDOC_
</select>
<input type="hidden" name="page_origine" value="parametres">
</form>
</div>
</div>
</div>
_HEREDOC_;
}
/**
* Changement du mot de passe d'un utilisateur.
*/
if ($_SESSION['privilege_utilisateur']==="administrateur" && !empty($prefixe_utilisateur)){
$message="<div class=\"mt-2 mb-2 alert alert-primary\" role=\"alert\">Préfixe actuel de ".$_SESSION['pseudo_utilisateur']." : <span class=\"badge bg-primary\">".$prefixe_utilisateur."</span></div>";
}else{
$message="";
}
?>
<div class="row">
<div class="col-12 col-md-12<?php if ($_SESSION['privilege_utilisateur']==="administrateur") {echo ' col-xl-6';}?>">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Modifier le mot de passe<?php if ($_SESSION['privilege_utilisateur']==="administrateur") {echo ' de '.$_SESSION['pseudo_utilisateur'];} ?></h5>
<?php echo $message_alert_utilisateur; ?>
<form action="/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php" method="post">
<div class="input-group">
<?php if ($_SESSION['privilege_utilisateur']==="utilisateur") { echo '<input type="password" class="form-control" name="ancien_mot_de_passe" placeholder="Ancien mot de passe" required>'; } ?>
<input type="password" class="form-control" name="nouveau_mot_de_passe" placeholder="Nouveau mot de passe" required>
<input type="password" class="form-control" name="confirmation_mot_de_passe" placeholder="Confirmation mot de passe" required>
<button class="btn btn-primary bouton-ajout" type="submit">Modifier</button>
</div>
</form>
</div>
</div>
</div>
<?php
if ($_SESSION['privilege_utilisateur']==="administrateur") {
echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Modifier le préfixe de {$_SESSION['pseudo_utilisateur']}</h5>
{$message}
{$message_alert_utilisateur}
<form action="/services/traitements/utilisateurs/changePrefixeUtilisateur.php" method="post">
<div class="input-group">
<input class="form-control" type="text" name="nouveau_prefixe" placeholder="Nouveau prefixe">
<button class="btn btn-primary bouton-ajout" type="submit">Appliquer</button>
</div>
</form>
</div>
</div>
</div>
_HEREDOC_;
}
echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Sauvegarde des alias virtuels de {$_SESSION['pseudo_utilisateur']}</h5>
<form action="/services/traitements/import_export/exportAliasVirtuelsUtilisateur.php" method="post">
<button class="btn btn-primary w-100" type="submit">Sauvegarder</button>
</form>
</div>
</div>
</div>
_HEREDOC_;
echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Restauration des alias virtuels de {$_SESSION['pseudo_utilisateur']}</h5>
<div class="alert alert-primary" role="alert">Les doublons seront omis.</div>
{$message_alert_utilisateur}
<form action="/services/traitements/import_export/importAliasVirtuelsUtilisateur.php" method="post" enctype="multipart/form-data">
<div class="input-group mt-2">
<input type="file" name="import_alias_virtuels_csv" class="form-control">
<button class="btn btn-primary bouton-ajout" type="submit">Restaurer</button>
</div>
</form>
</div>
</div>
</div>
_HEREDOC_;
if ($_SESSION['privilege_utilisateur']==="administrateur") {
echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Sauvegarde de la base de données</h5>
<form action="/services/traitements/import_export/exportDonneesBdd.php" method="post">
<div class="row g-1">
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="export_alias_virtuels" name="export_alias_virtuels" checked>
<label class="form-check-label" for="export_alias_virtuels">Alias virtuels</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="export_domaines" name="export_domaines" checked>
<label class="form-check-label" for="export_domaines">Domaines</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="export_liste_noire_destinataires" name="export_liste_noire_destinataires" checked>
<label class="form-check-label" for="export_liste_noire_destinataires">Liste noire destinataires</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="export_liste_noire_expediteurs" name="export_liste_noire_expediteurs" checked>
<label class="form-check-label" for="export_liste_noire_expediteurs">Liste noire expéditeurs</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="export_utilisateurs" name="export_utilisateurs" checked>
<label class="form-check-label" for="export_utilisateurs">Utilisateurs</label>
</div>
</div>
<button class="btn btn-primary w-100 mt-2" type="submit">Sauvegarder</button>
</form>
</div>
</div>
</div>
_HEREDOC_;
}
if ($_SESSION['privilege_utilisateur']==="administrateur") {
echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Restauration de la base de données</h5>
<div class="alert alert-warning" role="alert"><img src="/fichiers/svg/alert-triangle-warning.svg"/> Toutes les données non sauvegardées dans chaque section sélectionnée et présente dans votre fichier de restauration seront écrasées !</div>
<form action="/services/traitements/import_export/importDonneesBdd.php" method="post" enctype="multipart/form-data">
<div class="row g-1 mt-2 mb-2">
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="import_alias_virtuels" name="import_alias_virtuels">
<label class="form-check-label" for="import_alias_virtuels">Alias virtuels</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="import_domaines" name="import_domaines">
<label class="form-check-label" for="import_domaines">Domaines</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="import_liste_noire_destinataires" name="import_liste_noire_destinataires">
<label class="form-check-label" for="import_liste_noire_destinataires">Liste noire destinataires</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="import_liste_noire_expediteurs" name="import_liste_noire_expediteurs">
<label class="form-check-label" for="import_liste_noire_expediteurs">Liste noire expéditeurs</label>
</div>
<div class="form-check form-switch col-12 col-sm-12 col-md-6">
<input class="form-check-input" type="checkbox" role="switch" id="import_utilisateurs" name="import_utilisateurs">
<label class="form-check-label" for="import_utilisateurs">Utilisateurs</label>
</div>
</div>
<div class="input-group mb-2">
<input type="file" name="import_donnees_csv" class="form-control">
<button class="btn btn-primary bouton-ajout" type="submit">Restaurer</button>
</div>
</form>
</div>
</div>
</div>
_HEREDOC_;
}
?>
</div>
<script src="/fichiers/js/filtre.js"></script>

@ -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");

@ -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,18 @@
<?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");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/import_export.php");
exportAliasVirtuelsUtilisateur($pdo,$_SESSION['pseudo_utilisateur']);
// La suite n'est pas interprété en temps normal
header ("Location: /pages/gestion/administration.php?page=parametres");
die();
?>

@ -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();
?>

@ -0,0 +1,63 @@
<?php
/**
* Page de traitement permettant l'import 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");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/import_export.php");
// Permet le contrôle du domaine des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo);
// Permet le contrôle des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
$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'])) {
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
// Si un utilisateur modifie le contenu du fichier CSV afin d'ajouter des alias virtuels à un autre utilisateur, aucun traitement pour cet alias virtuel n'est effectué
if ($donnees_csv[2]===$_SESSION['pseudo_utilisateur']) {
// 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 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);
if (!in_array($donnees_csv[1],array_column($liste_alias_virtuels,'courriel'))) {
importAliasVirtuelsUtilisateur($pdo,$donnees_csv[1],$_SESSION['pseudo_utilisateur'],$donnees_csv[3]);
}
// Sinon l'alias virtuel doublon est ignoré
}
// Sinon l'alias virtuel contenant un état d'activation erroné est ignoré
}
// Sinon l'alias virtuel contenant un domaine non existant dans la base est ignoré
}
// Sinon l'alias virtuel pointant sur un autre utilisateur est ignoré
}
fclose($fichier_csv);
header ("Location: /pages/gestion/administration.php?page=parametres&succes=18");
die();
}
}
header ("Location: /pages/gestion/administration.php?page=parametres&succes=18");
die();
}
else {
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=23");
die();
}
}
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=22");
die();
?>

@ -0,0 +1,153 @@
<?php
/**
* Page de traitement permettant l'import des données dans la base de données.
* 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");
// Permet le contrôle du domaine des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo);
// Permet le contrôle des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
// Permet le contrôle des listes noires du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
// Permet le contrôle des utilisateurs du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
$types_donnees_a_exporter=array();
// Si aucune case n'est coché pour l'importation, le script ne fait rien et renvoi l'utilisateur sur la page des paramètres
if (!isset($_POST) || empty($_POST)) {
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=24");
die();
}
if (isset($_FILES['import_donnees_csv']) && !empty($_FILES['import_donnees_csv']['name']) && $_FILES['import_donnees_csv']['type']=="text/csv" && $_FILES['import_donnees_csv']['error']===0) {
if ($_FILES['import_donnees_csv']['size']<2000000) {
if (file_exists($_FILES['import_donnees_csv']['tmp_name'])) {
$ligne_fichier_csv=1;
$type_donnees_csv="";
if (($fichier_csv = fopen($_FILES['import_donnees_csv']['tmp_name'], "r")) !== FALSE) {
while (($donnees_csv = fgetcsv($fichier_csv, 1000, ":")) !== FALSE) {
$entete_type_donnees=FALSE;
if (strpos($donnees_csv[0], '#~// ') !== FALSE) {
$type_donnees_csv=explode('#~// ', $donnees_csv[0]);
$entete_type_donnees=TRUE;
}
if (!$entete_type_donnees) {
switch ($type_donnees_csv[1]) {
case "Alias_vituels":
if (isset($_POST['import_alias_virtuels'])) {
if (!isset($purge_table_alias_virtuels)) {
purgeTable($pdo,'postfix_alias_virtuels');
$purge_table_alias_virtuels="";
}
// Vérification de la cohérence des données de l'alias virtuel soumis
if (!empty($donnees_csv[1]) && !empty($donnees_csv[2]) && ($donnees_csv[3]==="0" || $donnees_csv[3]==="1")) {
// Omission des doublons
$liste_alias_virtuels = listeTousAliasVirtuelsPostfix($pdo);
if (!in_array($donnees_csv[1],array_column($liste_alias_virtuels,'courriel'))) {
importDonneesMessagerie($pdo,"alias_virtuels",$donnees_csv);
}
}
}
break;
case "Domaines":
if (isset($_POST['import_domaines'])) {
if (!isset($purge_table_domaines)) {
purgeTable($pdo,'postfix_domaines');
$purge_table_domaines="";
}
// Vérification de la cohérence des données du domaine soumis
if (!empty($donnees_csv[1]) && ($donnees_csv[2]==="0" || $donnees_csv[2]==="1") && ($donnees_csv[3]==="0" || $donnees_csv[3]==="1")) {
// Omission des doublons
$liste_domaines = listeDomainesPostfix($pdo);
if (!in_array($donnees_csv[1],array_column($liste_domaines,'domaine'))) {
importDonneesMessagerie($pdo,"domaines",$donnees_csv);
}
}
break;
}
case "Liste_noire_destinataires":
if (isset($_POST['import_liste_noire_destinataires'])) {
if (!isset($purge_table_postfix_liste_noire_destinataires)) {
purgeTable($pdo,'postfix_liste_noire_destinataires');
$purge_table_postfix_liste_noire_destinataires="";
}
// Vérification de la cohérence des données de la liste noire destinataire soumise
if (!empty($donnees_csv[1]) && ($donnees_csv[2]==="REJECT" || $donnees_csv[2]==="DEFER") && ($donnees_csv[3]==="0" || $donnees_csv[3]==="1")) {
// Omission des doublons
$liste_entrees_liste_noires_dst=listeEntreeListeNoireDstPostfix($pdo);
if (!in_array($donnees_csv[1],array_column($liste_entrees_liste_noires_dst,'courriel'))) {
importDonneesMessagerie($pdo,"liste_noire_destinataires",$donnees_csv);
}
}
break;
}
case "Liste_noire_expéditeur":
if (isset($_POST['import_liste_noire_expediteurs'])) {
if (!isset($purge_table_postfix_liste_noire_expediteurs)) {
purgeTable($pdo,'postfix_liste_noire_expediteurs');
$purge_table_postfix_liste_noire_expediteurs="";
}
// Vérification de la cohérence des données de la liste noire expediteur soumise
if (!empty($donnees_csv[1]) && ($donnees_csv[2]==="554") && !empty($donnees_csv[3]) && ($donnees_csv[4]==="0" || $donnees_csv[4]==="1")) {
// Omission des doublons
$liste_entrees_liste_noires_exp=listeEntreeListeNoireExpPostfix($pdo);
if (!in_array($donnees_csv[1],array_column($liste_entrees_liste_noires_exp,'courriel'))) {
importDonneesMessagerie($pdo,"liste_noire_expediteurs",$donnees_csv);
}
}
break;
}
case "Utilisateurs":
if (isset($_POST['import_utilisateurs'])) {
if (!isset($purge_table_postfix_utilisateurs)) {
purgeTable($pdo,'postfix_utilisateurs');
$purge_table_postfix_utilisateurs="";
}
// Vérification de la cohérence des données de l'utilisateur soumis
if (!empty($donnees_csv[1]) && !empty($donnees_csv[2]) && !empty($donnees_csv[4]) && !empty($donnees_csv[5]) && !empty($donnees_csv[6]) && !empty($donnees_csv[7]) && ($donnees_csv[9]==="0" || $donnees_csv[9]==="1")) {
// Omission des doublons
$liste_utilisateurs=listeUtilisateursPostfix($pdo);
if (!in_array($donnees_csv[1],array_column($liste_utilisateurs,'utilisateur'))) {
importDonneesMessagerie($pdo,"utilisateurs",$donnees_csv);
}
}
break;
}
}
}
}
fclose($fichier_csv);
// Si l'utilisateur ayant importé les données n'existe plus, une déconnexion automatique est effectuée
if (!verifUtilisateursExiste($pdo,$_SESSION['pseudo_connexion_utilisateur'])) {
header ("Location: /services/traitements/utilisateurs/deconnexion.php?succes=19");
die();
}
header ("Location: /pages/gestion/administration.php?page=parametres&succes=18");
die();
}
}
}
else {
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=23");
die();
}
}
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=22");
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'])) {

@ -0,0 +1,45 @@
<?php
/**
* Page de traitement permettant le changement du mot de passe d'un utilisateur.
* Elle est appelée par la page de paramètres.
* Un champ supplémentaire demandant l'ancien mot de passe est affiché et exigé sur cette derniere lorsque la requête provient d'un utilisateur ordinaire.
*/
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_mot_de_passe']) && !empty($_POST['nouveau_mot_de_passe']) && isset($_POST['confirmation_mot_de_passe']) && !empty($_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();
}
else {
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=21");
die();
}
}
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 (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();
}
else {
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=21");
die();
}
}
else {
header ("Location: /pages/gestion/administration.php?page=parametres&erreur=20");
die();
}
}
else {
header ("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
?>

@ -0,0 +1,27 @@
<?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");
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'])) {
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();
}
?>

@ -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");

@ -4,13 +4,22 @@
* Page permettant la déconnexion d'un utilisateur authentifié.
*/
// Récupération de la session
session_start ();
// Destruction des variables de la session
session_unset ();
// Destruction de la session
session_destroy ();
// Redirection de l'utilisateur vers la page d'authentifiaction
header('location: /pages/visiteurs/formulaire_accueil.php?succes=15');
?>
// Récupération de la session
session_start ();
// Affichage d'un message différent dans le cas particulier d'une restauration de la base ne comportant plus l'utilisateur ayant effectué cette importation
if (!empty($_GET['succes'])) {
$succes=$_GET['succes'];
}
// Destruction des variables de la session
session_unset ();
// Destruction de la session
session_destroy ();
// Nous sommes obligés de passer par la variable transitoire $succes car le session_unset détruit $_GET...
if (!empty($succes)) {
header('location: /pages/visiteurs/formulaire_accueil.php?succes='.$succes);
die();
}
// Redirection de l'utilisateur vers la page d'authentifiaction
header('location: /pages/visiteurs/formulaire_accueil.php?succes=15');
die();
?>

@ -17,17 +17,20 @@ 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'];
$_SESSION['nom_utilisateur'] = $result[0]['nom_complet'];
$_SESSION['privilege_utilisateur'] = $result[0]['privilege'];
$_SESSION['pseudo_connexion_utilisateur'] = $result[0]['utilisateur'];
if (isset($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && $_SESSION['privilege_utilisateur']=="administrateur") {
if (isset($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && $_SESSION['privilege_utilisateur']==="administrateur") {
header ("location: /pages/gestion/administration.php?message=bienvenue&page=accueil");
die();
}
elseif (isset($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && $_SESSION['privilege_utilisateur']=="utilisateur") {
elseif (isset($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && $_SESSION['privilege_utilisateur']==="utilisateur") {
header ("location: /pages/gestion/administration.php?message=bienvenue&page=accueil");
die();
}
@ -47,4 +50,4 @@ else {
die();
}
?>
?>

Loading…
Cancel
Save