Changement de nom d'une valeur de session + ajout d'un domaine par défaut + ajout de la possibilité d'ajouter/modifier/supprimer des alias virtuels

pull/5/head
ycharbi 3 years ago
parent ed3bb43b07
commit c399aece89

@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS postfix_alias_virtuels (
CREATE TABLE IF NOT EXISTS postfix_domaines ( CREATE TABLE IF NOT EXISTS postfix_domaines (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
domaine TEXT NOT NULL UNIQUE, domaine TEXT NOT NULL UNIQUE,
defaut INTEGER UNIQUE,
active INTEGER active INTEGER
); );
CREATE TABLE IF NOT EXISTS postfix_liste_noire_destinataires ( CREATE TABLE IF NOT EXISTS postfix_liste_noire_destinataires (
@ -37,4 +38,4 @@ CREATE TABLE IF NOT EXISTS postfix_utilisateurs (
gid INTEGER NOT NULL, gid INTEGER NOT NULL,
privilege TEXT NOT NULL, privilege TEXT NOT NULL,
active INTEGER active INTEGER
); );

@ -13,6 +13,33 @@ require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php");
var_dump($_SESSION); var_dump($_SESSION);
echo "</pre>";*/ echo "</pre>";*/
/**
* Affichage d'une bannière d'état sur l'action précedemment effectuée.
*/
if (isset($_GET['erreur']) && !empty($_GET['erreur'])){
switch ($_GET['erreur']) {
case 1:
echo "<p class=\"alias_virtuel_suppr_ko\">Erreur : aucun alias virtuel supprimé.</p>";
break;
case 2:
echo "<p class=\"alias_virtuel_ajout_ko\">Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.</p>";
break;
}
}
elseif (isset($_GET['succes']) && !empty($_GET['succes'])){
switch ($_GET['succes']) {
case 1:
echo "<p class=\"alias_virtuel_suppr_ok\">Succès : alias virtuel supprimé avec succès.</p>";
break;
case 2:
echo "<p class=\"alias_virtuel_modif_ok\">Succès : alias virtuel modifiés avec succès.</p>";
break;
case 3:
echo "<p class=\"alias_virtuel_ajout_ok\">Succès : alias virtuel créé avec succès.</p>";
break;
}
}
if (isset($_GET['page']) && !empty($_GET['page'])) { if (isset($_GET['page']) && !empty($_GET['page'])) {
switch ($_GET['page']) { switch ($_GET['page']) {
case 'alias': case 'alias':
@ -29,4 +56,4 @@ if (isset($_GET['page']) && !empty($_GET['page'])) {
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php");
?> ?>

@ -0,0 +1,26 @@
<?php
session_start();
require_once($_SERVER["DOCUMENT_ROOT"]."/services/utilisateurs/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/alias_virtuels.php");
echo "<pre>";
var_dump($_POST);
echo "</pre>";
if (isset($_POST['prefix_alias']) && isset($_POST['nom_alias']) && isset($_POST['choix_domaine_alias']) && !empty($_POST['nom_alias']) && !empty($_POST['choix_domaine_alias'])) {
ajoutAliasVirtuelsPostfix($pdo);
header ("Location: /pages/gestion/administration.php?page=alias&succes=3");
}
else {
header ("Location: /pages/gestion/administration.php?page=alias&erreur=2");
}
/*if(ajoutAliasVirtuelsPostfix($pdo)) {
header ("Location: /pages/gestion/administration.php?page=alias&succes=1");
}
else {
header ("Location: /pages/gestion/administration.php?page=alias&erreur=1");
}*/
?>

@ -0,0 +1,9 @@
<?php
session_start();
require_once($_SERVER["DOCUMENT_ROOT"]."/services/utilisateurs/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/alias_virtuels.php");
modifEtatAliasVirtuelsPostfix($pdo);
header ("Location: /pages/gestion/administration.php?page=alias&succes=2");
?>

@ -0,0 +1,15 @@
<?php
session_start();
require_once($_SERVER["DOCUMENT_ROOT"]."/services/utilisateurs/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/alias_virtuels.php");
if(supprAliasVirtuelsPostfix($pdo)) {
header ("Location: /pages/gestion/administration.php?page=alias&succes=1");
}
else {
header ("Location: /pages/gestion/administration.php?page=alias&erreur=1");
}
?>

@ -4,7 +4,14 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php");
function listeAliasVirtuelsPostfix($pdo) { function listeAliasVirtuelsPostfix($pdo) {
try { try {
$req = $pdo->query('SELECT * FROM postfix_alias_virtuels'); //$req = $pdo->query('SELECT * FROM postfix_alias_virtuels');
// Filtre des alias virtuels de l'utilisateur courant
/*$reqDomaineDefaut = $pdo->query('SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1');
foreach ($reqDomaineDefaut as $cle => $domaineDefaut) {
$req = $pdo->query('SELECT * FROM postfix_alias_virtuels WHERE courriel='."\"$_SESSION[pseudo_utilisateur]".'@'."$domaineDefaut[domaine]\"");
}*/
$req = $pdo->query('SELECT * FROM postfix_alias_virtuels WHERE courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$liste_alias_virtuels = array(); $liste_alias_virtuels = array();
foreach ($req as $alias_virtuels_bdd => $alias_virtuels) { foreach ($req as $alias_virtuels_bdd => $alias_virtuels) {
array_push($liste_alias_virtuels,$alias_virtuels); array_push($liste_alias_virtuels,$alias_virtuels);
@ -12,8 +19,132 @@ function listeAliasVirtuelsPostfix($pdo) {
return $liste_alias_virtuels; return $liste_alias_virtuels;
} }
catch (\Exception $e) { catch (\Exception $e) {
die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage()); die ("Erreur de requête de selection des alias virtuels : ".$e->getMessage());
}
}
function ajoutAliasVirtuelsPostfix($pdo) {
try {
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/domaines.php");
//foreach ($_GET as $id_alias_virtuel => $etat_alias_virtuel) {
//echo "$id_alias_virtuel et $etat_alias_virtuel";
//echo 'UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
//die();
echo "<pre>";
var_dump($_POST);
echo "</pre>";
//echo afficheDomaineDefautPostfix($pdo);
//die();
//$req = $pdo->query('DELETE FROM postfix_alias_virtuels WHERE id='."$_GET[supprAliasVirtuel]".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req='INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:courriel,:alias_virtuel,1)';
$sql=$pdo->prepare($req);
//$sql->bindParam(':id',$_GET['supprAliasVirtuel'],':pseudo_utilisateur',$_SESSION['pseudo_utilisateur]',':@','@');
//Vérifier que l'utilisateur choisi dans la liste est un choix légitime.
$sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']."@".afficheDomaineDefautPostfix($pdo));
////$sql->bindValue(':courriel',"toto@toto.fr");
if (!empty($_POST['prefix_alias'])) {
$separateur_prefix_alias=".";
}
$sql->bindValue(':alias_virtuel',$_POST['prefix_alias'].$separateur_prefix_alias.$_POST['nom_alias']."@".$_POST['choix_domaine_alias']);
////$sql->bindValue(':alias_virtuel',"y.charbi@toto.fr");
//$sql->bindValue(':@','@');
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
/*if($sql->execute()){
echo "Successfully deleted record ";
echo "<br><br>Number of rows deleted : ".$sql->rowCount();
}*/
else{
return false;
}
//}
//die();
/*/$liste_alias_virtuels = array();
foreach ($req as $alias_virtuels_bdd => $alias_virtuels) {
array_push($liste_alias_virtuels,$alias_virtuels);
}*/
}
catch (\Exception $e) {
die ("Erreur de requête d'ajout d'alias virtuel : ".$e->getMessage());
}
}
//Tester les injections SQL
function modifEtatAliasVirtuelsPostfix($pdo) {
try {
$compteModifs=0;
foreach ($_POST as $id_alias_virtuel => $etat_alias_virtuel) {
//echo "$id_alias_virtuel et $etat_alias_virtuel";
//echo 'UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
//die();
//$req = $pdo->query('UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND courriel=:pseudo_utilisateur||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_alias_virtuel',$etat_alias_virtuel);
$sql->bindValue(':id_alias_virtuel',$id_alias_virtuel);
$sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']."@");
$sql->execute();
/*return true;
die();
}
else{
return false;
}*/
}
//die();
/*/$liste_alias_virtuels = array();
foreach ($req as $alias_virtuels_bdd => $alias_virtuels) {
array_push($liste_alias_virtuels,$alias_virtuels);
}*/
}
catch (\Exception $e) {
die ("Erreur de requête de modification d'état pour les alias virtuels : ".$e->getMessage());
}
}
function supprAliasVirtuelsPostfix($pdo) {
try {
//foreach ($_GET as $id_alias_virtuel => $etat_alias_virtuel) {
//echo "$id_alias_virtuel et $etat_alias_virtuel";
//echo 'UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
//die();
echo $_GET['supprAliasVirtuel'];
//$req = $pdo->query('DELETE FROM postfix_alias_virtuels WHERE id='."$_GET[supprAliasVirtuel]".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req='DELETE FROM postfix_alias_virtuels WHERE id=:id_alias_virtuel AND courriel=:pseudo_utilisateur||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
$sql=$pdo->prepare($req);
//$sql->bindParam(':id',$_GET['supprAliasVirtuel'],':pseudo_utilisateur',$_SESSION['pseudo_utilisateur]',':@','@');
$sql->bindValue(':id_alias_virtuel',$_GET['supprAliasVirtuel']);
$sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']."@");
//$sql->bindValue(':@','@');
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
/*if($sql->execute()){
echo "Successfully deleted record ";
echo "<br><br>Number of rows deleted : ".$sql->rowCount();
}*/
else{
return false;
}
//}
//die();
/*/$liste_alias_virtuels = array();
foreach ($req as $alias_virtuels_bdd => $alias_virtuels) {
array_push($liste_alias_virtuels,$alias_virtuels);
}*/
}
catch (\Exception $e) {
die ("Erreur de requête de modification d'état pour les alias virtuels : ".$e->getMessage());
} }
} }
?> ?>

@ -4,16 +4,32 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php");
function listeDomainesPostfix($pdo) { function listeDomainesPostfix($pdo) {
try { try {
$req = $pdo->query('SELECT domaine FROM postfix_domaines'); $req = $pdo->query('SELECT domaine FROM postfix_domaines ORDER BY defaut DESC');
$liste_domaines = array(); $liste_domaines = array();
foreach ($req as $domaine_bdd => $domaine) { foreach ($req as $domaine_bdd => $domaine) {
array_push($liste_domaines,$domaine); array_push($liste_domaines,$domaine);
} }
return array_reverse($liste_domaines); //return array_reverse($liste_domaines);
return $liste_domaines;
} }
catch (\Exception $e) { catch (\Exception $e) {
die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage()); die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage());
} }
} }
function afficheDomaineDefautPostfix($pdo) {
try {
$req = $pdo->query('SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1');
foreach ($req as $domaine_bdd => $domaine_defaut) {
//echo $domaine_defaut['domaine'];
}
//return array_reverse($liste_domaines);
return $domaine_defaut['domaine'];
}
catch (\Exception $e) {
die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage());
}
}
?> ?>

@ -1,7 +1,7 @@
<div> <div>
<form action="" method="post"> <form action="/services/actions/ajoutAliasVirtuels.php" method="post">
<div> <div>
<h1>Choix de l'utilisateur</h1> <h1>Choix du domaines</h1>
<select name="choix_utilisateur_alias" id=""> <select name="choix_utilisateur_alias" id="">
<?php <?php
@ -13,9 +13,12 @@
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesPostfix($pdo);
$liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo); $liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo);
/**
* Sélection du domaine pour la création d'un alias virtuel.
*/
try { try {
foreach ($liste_utilisateurs as $utilisateur_bdd => $utilisateur) { foreach ($liste_utilisateurs as $utilisateur_bdd => $utilisateur) {
if ($utilisateur['utilisateur']==$_SESSION['identifiant_utilisateur']) { if ($utilisateur['utilisateur']==$_SESSION['pseudo_utilisateur']) {
echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n"; echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n";
} }
elseif ($_SESSION['privilege_utilisateur']=="administrateur") { elseif ($_SESSION['privilege_utilisateur']=="administrateur") {
@ -64,27 +67,38 @@
</div> </div>
<div> <div>
<h1>Ajouter un alias</h1> <h1>Ajouter un alias virtuel</h1>
<label for="prefix_alias">Prefix</label>
<input type="text" name="prefix_alias"> <input type="text" name="prefix_alias">
<input type="text" id="nom_alias" name="nom_alias" onkeyup="myFunction()"> <label for="nom_alias">alias*</label>
<input type="text" id="nom_alias" name="nom_alias" onkeyup="filtreAliasVirtuels()" required>
<p id="domaine_alias"><?php echo $liste_domaines[0]["domaine"]; ?></p> <p id="domaine_alias"><?php echo $liste_domaines[0]["domaine"]; ?></p>
<input type="submit" value="Ajouter"> <input type="submit" value="Ajouter">
</div> </div>
</form> </form>
<h1>Alias de <?php echo $_SESSION['identifiant_utilisateur']; ?></h1> <h1>Alias de <?php echo $_SESSION['pseudo_utilisateur']; ?></h1>
<form class="" action="index.html" method="post"> <form class="" action="/services/actions/editEtatAliasVirtuels.php" method="post">
<ul id="liste_alias_virtuels"> <ul id="liste_alias_virtuels">
<?php <?php
// Faire un filtre des alias (depuis la requête SQL) pour n'afficher que ceux de l'adresse de l'utilisateur connecté. Il faudra donc concaténer son identifiant_utilisateur avec le domaine par défaut de la table qu'utilisera Postfix (ça ne fonctionne pas actuellement) pour les utilisateurs locaux via Sqlite /**
// Réexploiter la fonction du filtre pour s'assurer que la supression d'un alias est légitime * Ajout d'un alias virtuel.
*/
try { try {
foreach ($liste_alias_virtuels as $alias_virtuels_bdd => $alias_virtuels) { foreach ($liste_alias_virtuels as $alias_virtuels_bdd => $alias_virtuels) {
echo "<li><input type=\"checkbox\"; "; /*echo "<pre>";
if (isset($alias_virtuels['active']) && !empty($alias_virtuels['active']) && $alias_virtuels['active']==1) echo "checked"; var_dump($alias_virtuels);
echo "</pre>";*/
//echo "<li><input type=\"checkbox\" name=\"".$alias_virtuels['id']."\" ";
echo "<li><input type=\"radio\" name=\"".$alias_virtuels['id']."\" value=\"1\"";
//if (isset($alias_virtuels['active']) && !empty($alias_virtuels['active']) && $alias_virtuels['active']==1) echo "checked";
if (isset($alias_virtuels['active']) && !empty($alias_virtuels['active']) && $alias_virtuels['active']=="1") echo " checked";
// Lors de la suppression, mettre un message de confirmation avec un avertissement que les données non-enregistrées seront perdues // Lors de la suppression, mettre un message de confirmation avec un avertissement que les données non-enregistrées seront perdues
echo "><p>".$alias_virtuels['destination']."</p><a href=\"unePage.php?supprAliasVirtuel=".$alias_virtuels['id']."\">Supprimer</a></li>\n"; echo "><input type=\"radio\" name=\"".$alias_virtuels['id']."\" value=\"0\"";
if (isset($alias_virtuels['active']) && $alias_virtuels['active']=="0") echo " checked";
echo "><p>".$alias_virtuels['destination']."</p><a href=\"/services/actions/supprAliasVirtuels.php?supprAliasVirtuel=".$alias_virtuels['id']."\">Supprimer</a></li>\n";
//echo "<form action=\"uneAutrePage.php\" method=\"post\"><input type=\"checkbox\" onchange=submit(); checked></form><p>".$alias_virtuels['destination']."<a href=\"unePage.php?supprAliasVirtuel=".$alias_virtuels['id']."\">Supprimer</a></p>\n"; //echo "<form action=\"uneAutrePage.php\" method=\"post\"><input type=\"checkbox\" onchange=submit(); checked></form><p>".$alias_virtuels['destination']."<a href=\"unePage.php?supprAliasVirtuel=".$alias_virtuels['id']."\">Supprimer</a></p>\n";
} }
@ -100,4 +114,4 @@
<script src="/fichiers/js/filtre.js"></script> <script src="/fichiers/js/filtre.js"></script>
</div> </div>

@ -12,15 +12,15 @@ if (isset($_POST['identifiant']) && isset($_POST['mdp']) && !empty($_POST['ident
if($result) { if($result) {
session_start(); session_start();
$_SESSION['id_utilisateur'] = $result[0]['id']; $_SESSION['id_utilisateur'] = $result[0]['id'];
$_SESSION['identifiant_utilisateur'] = $result[0]['utilisateur']; $_SESSION['pseudo_utilisateur'] = $result[0]['utilisateur'];
$_SESSION['nom_utilisateur'] = $result[0]['nom_complet']; $_SESSION['nom_utilisateur'] = $result[0]['nom_complet'];
$_SESSION['privilege_utilisateur'] = $result[0]['privilege']; $_SESSION['privilege_utilisateur'] = $result[0]['privilege'];
if (isset($_SESSION['identifiant_utilisateur']) && !empty($_SESSION['identifiant_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=alias"); header ("location: /pages/gestion/administration.php?message=bienvenue&page=alias");
die(); die();
} }
elseif (isset($_SESSION['identifiant_utilisateur']) && !empty($_SESSION['identifiant_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=alias"); header ("location: /pages/gestion/administration.php?message=bienvenue&page=alias");
die(); die();
} }
@ -40,4 +40,4 @@ else {
die(); die();
} }
?> ?>
Loading…
Cancel
Save