diff --git a/outils/postfix.sql b/outils/postfix.sql index e98993b..757d7df 100644 --- a/outils/postfix.sql +++ b/outils/postfix.sql @@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS postfix_alias_virtuels ( CREATE TABLE IF NOT EXISTS postfix_domaines ( id INTEGER PRIMARY KEY AUTOINCREMENT, domaine TEXT NOT NULL UNIQUE, + defaut INTEGER UNIQUE, active INTEGER ); CREATE TABLE IF NOT EXISTS postfix_liste_noire_destinataires ( @@ -37,4 +38,4 @@ CREATE TABLE IF NOT EXISTS postfix_utilisateurs ( gid INTEGER NOT NULL, privilege TEXT NOT NULL, active INTEGER -); +); \ No newline at end of file diff --git a/pages/gestion/administration.php b/pages/gestion/administration.php index 7050acd..21da11e 100644 --- a/pages/gestion/administration.php +++ b/pages/gestion/administration.php @@ -13,6 +13,33 @@ require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php"); var_dump($_SESSION); echo "";*/ +/** + * 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 "

Erreur : aucun alias virtuel supprimé.

"; + break; + case 2: + echo "

Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.

"; + break; + } +} +elseif (isset($_GET['succes']) && !empty($_GET['succes'])){ + switch ($_GET['succes']) { + case 1: + echo "

Succès : alias virtuel supprimé avec succès.

"; + break; + case 2: + echo "

Succès : alias virtuel modifiés avec succès.

"; + break; + case 3: + echo "

Succès : alias virtuel créé avec succès.

"; + break; + } +} + if (isset($_GET['page']) && !empty($_GET['page'])) { switch ($_GET['page']) { case 'alias': @@ -29,4 +56,4 @@ if (isset($_GET['page']) && !empty($_GET['page'])) { require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php"); -?> +?> \ No newline at end of file diff --git a/services/actions/ajoutAliasVirtuels.php b/services/actions/ajoutAliasVirtuels.php new file mode 100644 index 0000000..e2771a8 --- /dev/null +++ b/services/actions/ajoutAliasVirtuels.php @@ -0,0 +1,26 @@ +"; +var_dump($_POST); +echo ""; + +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"); +}*/ + + +?> \ No newline at end of file diff --git a/services/actions/editEtatAliasVirtuels.php b/services/actions/editEtatAliasVirtuels.php new file mode 100644 index 0000000..5bf0340 --- /dev/null +++ b/services/actions/editEtatAliasVirtuels.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/services/actions/supprAliasVirtuels.php b/services/actions/supprAliasVirtuels.php new file mode 100644 index 0000000..5c4b0c0 --- /dev/null +++ b/services/actions/supprAliasVirtuels.php @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/services/bdd/alias_virtuels.php b/services/bdd/alias_virtuels.php index 9911f0b..66769d2 100644 --- a/services/bdd/alias_virtuels.php +++ b/services/bdd/alias_virtuels.php @@ -4,7 +4,14 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php"); function listeAliasVirtuelsPostfix($pdo) { 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(); foreach ($req as $alias_virtuels_bdd => $alias_virtuels) { array_push($liste_alias_virtuels,$alias_virtuels); @@ -12,8 +19,132 @@ function listeAliasVirtuelsPostfix($pdo) { return $liste_alias_virtuels; } 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 "
";
+			var_dump($_POST);
+			echo "
"; + //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 "

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 "

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()); } } -?> +?> \ No newline at end of file diff --git a/services/bdd/domaines.php b/services/bdd/domaines.php index 3adb478..12709f4 100644 --- a/services/bdd/domaines.php +++ b/services/bdd/domaines.php @@ -4,16 +4,32 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php"); function listeDomainesPostfix($pdo) { try { - $req = $pdo->query('SELECT domaine FROM postfix_domaines'); + $req = $pdo->query('SELECT domaine FROM postfix_domaines ORDER BY defaut DESC'); $liste_domaines = array(); foreach ($req as $domaine_bdd => $domaine) { array_push($liste_domaines,$domaine); } - return array_reverse($liste_domaines); + //return array_reverse($liste_domaines); + return $liste_domaines; } catch (\Exception $e) { 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()); + } +} + + ?> diff --git a/services/gestion/alias.php b/services/gestion/alias.php index 9feea76..4ecd547 100644 --- a/services/gestion/alias.php +++ b/services/gestion/alias.php @@ -1,7 +1,7 @@
-
+
-

Choix de l'utilisateur

+

Choix du domaines

- + +

-

Alias de

+

Alias de

-
+
+ \ No newline at end of file diff --git a/services/utilisateurs/identification.php b/services/utilisateurs/identification.php index 9531d99..2a1f6a9 100644 --- a/services/utilisateurs/identification.php +++ b/services/utilisateurs/identification.php @@ -12,15 +12,15 @@ if (isset($_POST['identifiant']) && isset($_POST['mdp']) && !empty($_POST['ident if($result) { session_start(); $_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['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"); 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"); die(); } @@ -40,4 +40,4 @@ else { die(); } -?> +?> \ No newline at end of file