Support exclusif des mots de passe hachés avec la fonction crypt pour l'authentification des utilisateurs + adaptation du format des identifiants utilisateurs de "nom" en "nom@domaine" + ajout de la possibilité pour un administrateur de gérer les possessions des autres utilisateurs + ajout d'une confirmation pour la suppression d'un alias virtuel + nettoyage du code + ajout de commentaires au format PHPDoc + gestion de certaines exceptions du pilote PDO SQLite + suppression du fichier testObjet.php + suppression des fins de lignes vides sur tous les fichiers
This commit is contained in:
+105
-104
@@ -1,17 +1,19 @@
|
||||
<?php
|
||||
|
||||
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php");
|
||||
/**
|
||||
* Page de fonctions permettant la gestion des alias virtuels.
|
||||
*/
|
||||
|
||||
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php");
|
||||
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/utilisateurs/privileges.php");
|
||||
|
||||
/**
|
||||
* Fonction listant les alias virtuels.
|
||||
*/
|
||||
function listeAliasVirtuelsPostfix($pdo) {
|
||||
try {
|
||||
//$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)');
|
||||
$req = $pdo->query('SELECT * FROM postfix_alias_virtuels WHERE destination='."\"$_SESSION[pseudo_utilisateur]\"");
|
||||
$liste_alias_virtuels = array();
|
||||
foreach ($req as $alias_virtuels_bdd => $alias_virtuels) {
|
||||
array_push($liste_alias_virtuels,$alias_virtuels);
|
||||
@@ -23,127 +25,126 @@ function listeAliasVirtuelsPostfix($pdo) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction d'ajout d'un alias virtuel.
|
||||
*/
|
||||
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);
|
||||
}*/
|
||||
// Insertion de l'alias virtuel entré par l'utilisateur et lié avec son adresse
|
||||
$req='INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:courriel,1)';
|
||||
|
||||
$sql=$pdo->prepare($req);
|
||||
$sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']);
|
||||
|
||||
// Si l'utilisateur spécifie un préfixe à son alias, un "." est ajouté pour lé séparé du reste afin d'avoir "préfixe.alias@NdD"
|
||||
if (!empty($_POST['prefix_alias'])) {
|
||||
$separateur_prefix_alias=".";
|
||||
}
|
||||
// Permet de ne pas renvoyer le message "Notice: Undefined variable: separateur_prefix_alias" lors de lexécution du "bindValue" suivant
|
||||
else {
|
||||
$separateur_prefix_alias="";
|
||||
}
|
||||
|
||||
$sql->bindValue(':alias_virtuel',$_POST['prefix_alias'].$separateur_prefix_alias.$_POST['nom_alias']."@".$_POST['choix_domaine_alias']);
|
||||
$sql->execute();
|
||||
|
||||
if($sql->rowCount() == 1){
|
||||
return true;
|
||||
}
|
||||
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
die ("Erreur de requête d'ajout d'alias virtuel : ".$e->getMessage());
|
||||
// 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é
|
||||
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
|
||||
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'ajout d'alias virtuel : ".$e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Tester les injections SQL
|
||||
/**
|
||||
* 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).
|
||||
*/
|
||||
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)';
|
||||
$req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
|
||||
|
||||
$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->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());
|
||||
// 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=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 de modification d'état pour les alias virtuels : ".$e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction de suppression d'un alias virtuel.
|
||||
*/
|
||||
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);
|
||||
}*/
|
||||
//$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 destination=:pseudo_utilisateur';
|
||||
//$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(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']);
|
||||
$sql->execute();
|
||||
if($sql->rowCount() == 1){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
die ("Erreur de requête de modification d'état pour les alias virtuels : ".$e->getMessage());
|
||||
// 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=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 de suppression d'un alias virtuel : ".$e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
/**
|
||||
* Connexion à la base SQLite3.
|
||||
*/
|
||||
$base = "/etc/postfix/db/postfix.sqlite";
|
||||
|
||||
$base = "/etc/postfix/bdd/postfix.sqlite";
|
||||
|
||||
try{
|
||||
$pdo = new PDO("sqlite:$base");
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Page de fonctions concernant la gestion des domaines.
|
||||
*/
|
||||
|
||||
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php");
|
||||
|
||||
/**
|
||||
* Fonction listant les domaines.
|
||||
*/
|
||||
function listeDomainesPostfix($pdo) {
|
||||
try {
|
||||
$req = $pdo->query('SELECT domaine FROM postfix_domaines ORDER BY defaut DESC');
|
||||
@@ -9,7 +16,6 @@ function listeDomainesPostfix($pdo) {
|
||||
foreach ($req as $domaine_bdd => $domaine) {
|
||||
array_push($liste_domaines,$domaine);
|
||||
}
|
||||
//return array_reverse($liste_domaines);
|
||||
return $liste_domaines;
|
||||
}
|
||||
catch (\Exception $e) {
|
||||
@@ -17,13 +23,14 @@ function listeDomainesPostfix($pdo) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction affichant le domaine par défaut.
|
||||
*/
|
||||
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) {
|
||||
@@ -32,4 +39,4 @@ function afficheDomaineDefautPostfix($pdo) {
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
?>
|
||||
@@ -1,7 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Page de fonctions permettant la gestion des utilisateurs.
|
||||
*/
|
||||
|
||||
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/bdd/connexion.php");
|
||||
|
||||
/**
|
||||
* Fonction listant les utilisateurs.
|
||||
*/
|
||||
function listeUtilisateursPostfix($pdo) {
|
||||
try {
|
||||
$req = $pdo->query('SELECT utilisateur FROM postfix_utilisateurs');
|
||||
@@ -16,4 +23,4 @@ function listeUtilisateursPostfix($pdo) {
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
Reference in New Issue
Block a user