diff --git a/fichiers/css/confirmation.css b/fichiers/css/confirmation.css index 3aec415..bfc46ff 100644 --- a/fichiers/css/confirmation.css +++ b/fichiers/css/confirmation.css @@ -3,11 +3,11 @@ display: none; color: #e23026; } -.input-checkbox-supprimer-alias:checked ~ .confirmation-suppression { +.input-checkbox-supprimer-valeur:checked ~ .confirmation-suppression { display: inline; } -.input-label-supprimer-alias { +.input-label-supprimer-valeur { color: #ffffff; background: #e23026; padding: 0.5rem 1rem; diff --git a/fichiers/js/filtre.js b/fichiers/js/filtre.js index e09095f..00c3be1 100644 --- a/fichiers/js/filtre.js +++ b/fichiers/js/filtre.js @@ -5,12 +5,12 @@ /* * Fonction permettant de filtrer la liste des alias virtuels d'un utilisateur au file des caractères entrés dans le formulaire de création idoine. **/ -function filtreAliasVirtuels() { +function filtreValeurs() { // Déclaration des variables var input, filter, ul, li, a, i, txtValue; - input = document.getElementById('nom_alias'); + input = document.getElementById('nom_pour_filtre'); filter = input.value.toUpperCase(); - ul = document.getElementById("liste_alias_virtuels"); + ul = document.getElementById("liste_pour_filtre"); li = ul.getElementsByTagName('li'); // Pour chaque "
" qu'il contient diff --git a/pages/gestion/administration.php b/pages/gestion/administration.php index 434579d..d4f14e1 100644 --- a/pages/gestion/administration.php +++ b/pages/gestion/administration.php @@ -6,48 +6,67 @@ */ session_start(); -require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); +require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); testPrivileges(); -require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php"); -require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php"); - -/*echo "
"; -var_dump($_SESSION); -echo "";*/ +require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php"); +require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php"); /** * Affichage d'une bannière d'état sur l'action précedemment effectuée. */ -if (isset($_GET['erreur']) && !empty($_GET['erreur'])){ +if (isset($_GET['erreur']) && !empty($_GET['erreur'])) { switch ($_GET['erreur']) { case 1: - echo "
Erreur : aucun alias virtuel supprimé.
"; + echo " "; break; case 2: - echo "Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.
"; + echo " "; break; case 3: - echo "Erreur : L'alias virtuel est déjà existant.
"; + echo " "; break; case 4: - echo "Erreur : La base SQLite n'est pas accessible en écriture. Il faut que la base et le répertoire bdd appartiennent à www-data.
"; + echo " "; + break; + case 5: + echo " "; + break; + case 6: + echo " "; + break; + case 7: + echo " "; + break; + case 8: + echo " "; break; - } } -elseif (isset($_GET['succes']) && !empty($_GET['succes'])){ +elseif (isset($_GET['succes']) && !empty($_GET['succes'])) { switch ($_GET['succes']) { case 1: - echo "Succès : alias virtuel supprimé avec succès.
"; + echo " "; break; case 2: - echo "Succès : alias virtuel modifiés avec succès.
"; + echo " "; break; case 3: - echo "Succès : alias virtuel créé avec succès.
"; + echo " "; break; case 4: - echo "Succès : utilisateur changé en ".$_SESSION['pseudo_utilisateur']." avec succès.
"; + echo " "; + break; + case 5: + echo " "; + break; + case 6: + echo " "; + break; + case 7: + echo " "; + break; + case 8: + echo " "; break; } } @@ -58,7 +77,7 @@ elseif (isset($_GET['succes']) && !empty($_GET['succes'])){ if (isset($_GET['page']) && !empty($_GET['page'])) { switch ($_GET['page']) { case 'alias': - require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/alias.php"); + require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/alias_virtuels.php"); break; case 'domaines': require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/domaines.php"); diff --git a/services/fonctions/bdd/alias_virtuels.php b/services/fonctions/bdd/alias_virtuels.php index 7a962c1..ac93fc1 100644 --- a/services/fonctions/bdd/alias_virtuels.php +++ b/services/fonctions/bdd/alias_virtuels.php @@ -37,10 +37,7 @@ function listeAliasVirtuelsPostfix($pdo) { $sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']); $sql->execute(); - $liste_alias_virtuels = array(); - foreach ($sql->fetchAll() as $alias_virtuels_bdd => $alias_virtuels) { - array_push($liste_alias_virtuels,$alias_virtuels); - } + $liste_alias_virtuels = $sql->fetchAll(); return $liste_alias_virtuels; } catch (\Exception $e) { @@ -61,25 +58,25 @@ function ajoutAliasVirtuelsPostfix($pdo) { $sql->bindValue(':alias_virtuel',retournePrefixeUtilisateurPostfix($pdo).$_POST['nom_alias']."@".$_POST['choix_domaine_alias']); $sql->execute(); - if($sql->rowCount() == 1){ + if ($sql->rowCount() == 1){ return true; } - else{ + else { return false; } } catch (\Exception $e) { - // Récupération du code de retour de la commande SQLite. + // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); 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é. L'alias envoyé via le formulaire par l'utilisateur a déjà été renseigné + // 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. L'alias envoyé via le formulaire par l'utilisateur a déjà été renseigné dans la base 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 est accessible en lecture seule à www-data + // 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(); } @@ -92,8 +89,8 @@ function ajoutAliasVirtuelsPostfix($pdo) { /** * Fonction d'activation/désactivation d'un alias virtuel. - * Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des alias d'un utilisateur. - * Elle occasionnera peut-être des baisses de performance si un très grand nombre d'alias existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée). + * Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des alias virtuels d'un utilisateur. + * Elle occasionnera peut-être des baisses de performance si un très grand nombre d'alias virtuels existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée). */ function modifEtatAliasVirtuelsPostfix($pdo) { try { @@ -109,7 +106,7 @@ function modifEtatAliasVirtuelsPostfix($pdo) { } } catch (\Exception $e) { - // Récupération du code de retour de la commande SQLite. + // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); if ($code_retour[0]=="HY000") { @@ -139,12 +136,12 @@ function supprAliasVirtuelsPostfix($pdo) { if($sql->rowCount() == 1){ return true; } - else{ + else { return false; } } catch (\Exception $e) { - // Récupération du code de retour de la commande SQLite. + // Récupération du code de retour de la commande SQLite $code_retour=$sql->errorInfo(); if ($code_retour[0]=="HY000") { diff --git a/services/fonctions/bdd/domaines.php b/services/fonctions/bdd/domaines.php index e22f2f2..f14006d 100644 --- a/services/fonctions/bdd/domaines.php +++ b/services/fonctions/bdd/domaines.php @@ -11,7 +11,8 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php") */ function listeDomainesPostfix($pdo) { try { - $req = 'SELECT domaine FROM postfix_domaines ORDER BY defaut DESC'; + $req = 'SELECT * FROM postfix_domaines ORDER BY defaut DESC'; + $sql=$pdo->prepare($req); $sql->execute(); @@ -29,6 +30,7 @@ function listeDomainesPostfix($pdo) { function retourneDomaineDefautPostfix($pdo) { try { $req = 'SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1'; + $sql=$pdo->prepare($req); $sql->execute(); @@ -40,4 +42,149 @@ function retourneDomaineDefautPostfix($pdo) { } } +/** + * Fonction changeant le domaine par défaut. + */ +function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) { + try { + // suppression du status de domaine par défaut sur tous les domaines pour s'assurer de l'unicité de ce paramètre à la requête suivante + $req = 'UPDATE postfix_domaines SET defaut=0'; + + $sql=$pdo->prepare($req); + $sql->execute(); + + // Définition du domaine renseigné par l'utilisateur et activation de celui-ci (au cas-où il ne l'était pas) + $req = 'UPDATE postfix_domaines SET defaut=1, active=1 WHERE domaine=:domaine'; + + $sql=$pdo->prepare($req); + $sql->bindValue(':domaine',$choix_domaine_defaut); + $sql->execute(); + } + 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 + header ("Location: /pages/gestion/administration.php?page=domaines&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 de modification d'état pour les alias virtuels : ".$e->getMessage()); + } + } +} + + +/** + * Fonction d'ajout d'un alias virtuel. + */ +function ajoutDomainePostfix($pdo,$nom_domaine) { + try { + // Insertion du domaine entré par l'administrateur + $req='INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,0,1)'; + + $sql=$pdo->prepare($req); + $sql->bindValue(':domaine',$nom_domaine); + $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 "domaine" de la table "postfix_domaines" est violée. Le domaine envoyé via le formulaire par l'administrateur a déjà été renseigné dans la base + header ("Location: /pages/gestion/administration.php?page=domaines&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=domaines&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'ajout d'alias virtuel : ".$e->getMessage()); + } + } +} + +/** + * Fonction d'activation/désactivation d'un domaine. + * Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des domaines d'un utilisateur. + * Elle occasionnera peut-être des baisses de performance si un très grand nombre de domaines existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée). + */ +function modifEtatDomainesPostfix($pdo) { + try { + $compteModifs=0; + foreach ($_POST as $id_domaine => $etat_domaine) { + $req='UPDATE postfix_domaines SET active=:etat_domaine WHERE id=:id_domaine AND defaut!=1'; + + $sql=$pdo->prepare($req); + $sql->bindValue(':etat_domaine',$etat_domaine); + $sql->bindValue(':id_domaine',$id_domaine); + $sql->execute(); + } + } + catch (\Exception $e) { + // Récupération du code de retour de la commande SQLite + $code_retour=$sql->errorInfo(); + + if ($code_retour[0]=="HY000") { + // Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data + header ("Location: /pages/gestion/administration.php?page=domaines&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 de modification d'état pour les alias virtuels : ".$e->getMessage()); + } + } +} + +/** + * Fonction de suppression d'un domaine. + */ +function supprDomainesPostfix($pdo) { + try { + $req='DELETE FROM postfix_domaines WHERE id=:id_domaine AND defaut!=1'; + + $sql=$pdo->prepare($req); + $sql->bindValue(':id_domaine',$_GET['supprDomaine']); + $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]=="HY000") { + // Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data + header ("Location: /pages/gestion/administration.php?page=domaines&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 de suppression d'un alias virtuel : ".$e->getMessage()); + } + } +} + ?> \ No newline at end of file diff --git a/services/gestion/alias.php b/services/gestion/alias_virtuels.php similarity index 69% rename from services/gestion/alias.php rename to services/gestion/alias_virtuels.php index a859a9f..defaec2 100644 --- a/services/gestion/alias.php +++ b/services/gestion/alias_virtuels.php @@ -49,26 +49,30 @@ _HEREDOC_; ?>