Version 1.1.0 #10

Merged
nmorin merged 16 commits from develop into master 1 year ago

@ -11,6 +11,7 @@ COPY . /var/www/html/
RUN mv /var/www/html/outils/conf/php.ini /etc/php/7.4/apache2 && \ RUN mv /var/www/html/outils/conf/php.ini /etc/php/7.4/apache2 && \
mv /var/www/html/outils/conf/apache2.conf /etc/apache2/ && \ mv /var/www/html/outils/conf/apache2.conf /etc/apache2/ && \
chmod +x /var/www/html/outils/genenv.sh && \ chmod +x /var/www/html/outils/genenv.sh && \
/var/www/html/outils/genenv.sh /var/www/html/outils/genenv.sh && \
chown -R www-data:www-data /var/www/html/
CMD /usr/sbin/apachectl -D FOREGROUND CMD /usr/sbin/apachectl -D FOREGROUND

@ -9,7 +9,7 @@ L'objectif de Courtail est de permettre le paramétrage de certaines fonctionnal
* ajout, activation/désactivation, suppression des alias virtuels * ajout, activation/désactivation, suppression des alias virtuels
* ajout, activation/désactivation, suppression des domaines * ajout, activation/désactivation, suppression des domaines
* ajout, activation/désactivation, suppression des adresses en liste noire * ajout, activation/désactivation, suppression des adresses en liste noire
* changement de mot de passe des utilisateurs * ajout, activation/désactivation, suppression, changement de préfixe, changement de mot de passe, changement de privilège des utilisateurs
* exportation/importation des alias virtuels d'un utilisateur * exportation/importation des alias virtuels d'un utilisateur
* exportation/importation des données (à la carte) du site * exportation/importation des données (à la carte) du site
@ -46,7 +46,7 @@ Plusieurs utilisateurs sont créés dans notre exemple :
|---------------|------------|--------------| |---------------|------------|--------------|
|demo@exemple.fr|demo |Administrateur| |demo@exemple.fr|demo |Administrateur|
|toto@exemple.fr|toto |Administrateur| |toto@exemple.fr|toto |Administrateur|
|tata@exemple.fr|tata |Utilisateur | |tata@tata.fr |tata |Utilisateur |
*La définition d'un domaine par défaut dans la section dédiée du site permet l'usage d'identifiants courts (demo = demo@exemple.fr).* *La définition d'un domaine par défaut dans la section dédiée du site permet l'usage d'identifiants courts (demo = demo@exemple.fr).*
@ -62,4 +62,6 @@ Plusieurs utilisateurs sont créés dans notre exemple :
![Page liste noire des expéditeurs](outils/galerie/courtail-galerie-5.png) ![Page liste noire des expéditeurs](outils/galerie/courtail-galerie-5.png)
![Page des paramètres](outils/galerie/courtail-galerie-6.png) ![Page des utilisateurs](outils/galerie/courtail-galerie-6.png)
![Page des paramètres](outils/galerie/courtail-galerie-7.png)

@ -1,4 +1,4 @@
/* Style concernant la confirmation de suppression d'un alias virtuel */ /* Style concernant les menus déroulants d'une pastille */
.confirmation-suppression { .confirmation-suppression {
display: none; display: none;
color: #fff; color: #fff;
@ -17,20 +17,33 @@
display: inline; display: inline;
} }
/*.input-label-supprimer-valeur {
color: #ffffff;
background: #e23026;
padding: 0.5rem 1rem;
border-radius: 0.5rem;
}*/
.visuellement-cache { .visuellement-cache {
position: absolute; position: absolute;
left: -100vw; left: -100vw;
} }
.detail-utilisateur {
display: none;
color: #fff;
text-align: center;
text-decoration: none;
}
.input-checkbox-detail-utilisateur:checked ~ .detail-utilisateur {
display: block;
}
/* Sources : /* Sources :
* https://stackoverflow.com/questions/6019845/show-hide-div-on-click-with-css * https://stackoverflow.com/questions/6019845/show-hide-div-on-click-with-css
* https://dabblet.com/gist/1506530 * https://dabblet.com/gist/1506530
* https://css-tricks.com/the-checkbox-hack/ * https://css-tricks.com/the-checkbox-hack/
*/ */
/* Style concernant le message d'avertissement concernant les fichiers d'un utilisateur après sa suppression dans les menus déroulants d'une pastille */
.confirmation-avertissement-info {
display: none;
}
.input-checkbox-supprimer-valeur:checked ~ .confirmation-avertissement-info {
display: inline;
}

@ -113,3 +113,30 @@ body {
.max-hauteur-pastille{ .max-hauteur-pastille{
height: calc(100% - 1.5em); height: calc(100% - 1.5em);
} }
.survol{
display: inline-block;
}
.survol:hover .message-survol {
overflow: hidden;
padding: 12px 12px;
height: auto;
width: auto;
opacity: 1;
}
.message-survol {
opacity: 0;
position: absolute;
z-index: 7;
background: #343a40;
color: #FFFFFF;
border: 1px solid transparent;
border-radius: 6px;
height: 0px;
width: 0px;
padding: 0 12px;
overflow: hidden;
/*-webkit-transition: all 500ms;
transition: all 500ms;*/
}

@ -5,8 +5,9 @@
/* /*
* Fonction permettant d'afficher et de masquer le bouton d'enregistrement d'un changement d'état pour les alias virtuels, domaines et entrées de liste noire d'un utilisateur. * Fonction permettant d'afficher et de masquer le bouton d'enregistrement d'un changement d'état pour les alias virtuels, domaines et entrées de liste noire d'un utilisateur.
**/ **/
const listedesentrees = [];
function activationBoutonFlotant(lui) { function activationBoutonFlotant(lui) {
const listedesentrees = [];
if (listedesentrees.find(function(valeur) {return valeur == lui.name;})) { if (listedesentrees.find(function(valeur) {return valeur == lui.name;})) {
for( var i = 0; i < listedesentrees.length; i++){ for( var i = 0; i < listedesentrees.length; i++){
if ( listedesentrees[i] === lui.name) { if ( listedesentrees[i] === lui.name) {
@ -16,7 +17,7 @@ function activationBoutonFlotant(lui) {
} }
} else { } else {
listedesentrees.push(lui.name); listedesentrees.push(lui.name);
}; }
if (listedesentrees.length > 0){ if (listedesentrees.length > 0){
document.getElementById("enregistrer-interrupteur").classList.remove("desactiver"); document.getElementById("enregistrer-interrupteur").classList.remove("desactiver");

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevrons-up"><polyline points="17 11 12 6 7 11"></polyline><polyline points="17 18 12 13 7 18"></polyline></svg>

After

Width:  |  Height:  |  Size: 311 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>

After

Width:  |  Height:  |  Size: 357 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-menu"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>

After

Width:  |  Height:  |  Size: 338 B

@ -22,14 +22,15 @@ if (isset($_GET['page']) && !empty($_GET['page'])) {
<a class="nav-link <?php if ($_GET['page'] == 'domaines') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=domaines">Domaines</a> <a class="nav-link <?php if ($_GET['page'] == 'domaines') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=domaines">Domaines</a>
</li> </li>
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle <?php if ($_GET['sousPage'] == 'destinataires' || $_GET['sousPage'] == 'expediteurs') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=listes_noires&sousPage=destinataires" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false"> <a class="nav-link dropdown-toggle <?php if ($_GET['sousPage'] == 'destinataires' || $_GET['sousPage'] == 'expediteurs') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=listes_noires&sousPage=destinataires" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">Listes noires</a>
Listes noires
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown"> <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="/pages/gestion/administration.php?page=listes_noires&sousPage=destinataires">Destinataires</a></li> <li><a class="dropdown-item" href="/pages/gestion/administration.php?page=listes_noires&sousPage=destinataires">Destinataires</a></li>
<li><a class="dropdown-item" href="/pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs">Expéditeurs</a></li> <li><a class="dropdown-item" href="/pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs">Expéditeurs</a></li>
</ul> </ul>
</li> </li>
<li class="nav-item">
<a class="nav-link <?php if ($_GET['page'] == 'utilisateurs' || $_GET['page'] == 'utilisateurs') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=utilisateurs">Utilisateurs</a>
</li>
<?php } ?> <?php } ?>
</ul> </ul>
</div> </div>

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

@ -3,11 +3,11 @@
<svg <svg
width="507.84598mm" width="507.84598mm"
height="802.86371mm" height="853.52264mm"
viewBox="0 0 507.84598 802.86371" viewBox="0 0 507.84598 853.52265"
version="1.1" version="1.1"
id="svg5" id="svg5"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="Courtail-schéma.svg" sodipodi:docname="Courtail-schéma.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@ -23,13 +23,13 @@
inkscape:pagecheckerboard="0" inkscape:pagecheckerboard="0"
inkscape:document-units="mm" inkscape:document-units="mm"
showgrid="false" showgrid="false"
inkscape:zoom="1.0758952" inkscape:zoom="1.3120131"
inkscape:cx="1702.768" inkscape:cx="1946.6269"
inkscape:cy="2869.2385" inkscape:cy="3186.3249"
inkscape:window-width="1600" inkscape:window-width="1920"
inkscape:window-height="831" inkscape:window-height="1140"
inkscape:window-x="0" inkscape:window-x="1920"
inkscape:window-y="0" inkscape:window-y="32"
inkscape:window-maximized="1" inkscape:window-maximized="1"
inkscape:current-layer="layer3" inkscape:current-layer="layer3"
fit-margin-top="0" fit-margin-top="0"
@ -347,17 +347,17 @@
style="display:inline"> style="display:inline">
<path <path
style="fill:none;stroke:#999999;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1" style="fill:none;stroke:#999999;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1"
d="m 271.26397,152.21039 0,749.37222" d="M 271.26397,152.21039 V 952.41414"
id="path64248" id="path64248"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#999999;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1" style="fill:none;stroke:#999999;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1"
d="m 467.75642,152.21038 0,749.37223" d="M 467.75642,152.21038 V 952.41414"
id="path64658" id="path64658"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<g <g
id="g79069" id="g79069"
transform="matrix(0.48244297,0,0,0.48244297,565.72772,872.99852)"> transform="matrix(0.48244297,0,0,0.48244297,565.72772,923.89869)">
<rect <rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1" style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect79063" id="rect79063"
@ -376,7 +376,7 @@
id="tspan79065" id="tspan79065"
style="font-size:7.05556px;stroke-width:0.264583" style="font-size:7.05556px;stroke-width:0.264583"
x="12.840136" x="12.840136"
y="56.334156">commit 0b5db50d5d</tspan></text> y="56.334156">commit 14c055d868</tspan></text>
</g> </g>
<path <path
style="fill:none;stroke:#999999;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1" style="fill:none;stroke:#999999;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1"
@ -425,7 +425,7 @@
</g> </g>
<path <path
style="display:inline;fill:none;stroke:#0080ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="display:inline;fill:none;stroke:#0080ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M -8.4318206,-89.432823 V 708.80623" d="m -8.4318206,-89.432823 0,848.695013"
id="path129737" id="path129737"
sodipodi:nodetypes="cc" sodipodi:nodetypes="cc"
transform="translate(124.41568,188.32432)" /> transform="translate(124.41568,188.32432)" />
@ -590,7 +590,7 @@
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer2" id="layer2"
inkscape:label="Flêches" inkscape:label="Flêches"
transform="translate(20.813414,89.432822)"> transform="translate(20.813412,89.432822)">
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 37.772337,34.457624 V 58.890442" d="M 37.772337,34.457624 V 58.890442"
@ -643,12 +643,12 @@
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker175132)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker175132)"
d="M 28.193253,286.46067 H 6.9490543 V 95.445509 h 8.5100897" d="M 28.193253,303.28541 H 6.9490543 V 95.445509 h 8.5100897"
id="path175128" id="path175128"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker180768)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker180768)"
d="m 99.310886,235.1757 h 72.531144 v 110.9505 h 16.85451" d="m 99.310886,235.1757 h 72.531144 v 110.48684 h 16.85451"
id="path180703" id="path180703"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
@ -663,52 +663,52 @@
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker186632)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker186632)"
d="m 86.355431,252.00685 h 81.919579 v 190.37749 h 42.26823" d="m 86.355431,252.00685 h 81.919579 v 241.66274 h 42.26823"
id="path186551" id="path186551"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker186632)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker186632)"
d="m 168.4423,425.3584 h 42.91671" d="m 168.4423,476.73688 h 42.91671"
id="path186605" id="path186605"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker186632)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker186632)"
d="m 168.4423,408.7458 h 43.23445" d="m 168.4423,460.12428 h 43.23445"
id="path186607" id="path186607"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker186632)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker186632)"
d="m 168.4423,392.1332 h 42.70594" d="m 168.4423,443.51168 h 42.70594"
id="path186609" id="path186609"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker195364)"
d="M 96.114809,269.68922 H 164.77638 V 603.7381 h 29.91519" d="m 96.114809,269.68922 h 68.661571 l 0.23374,384.41142 h 29.91519"
id="path192396" id="path192396"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 164.86598,586.92587 h 29.56165" d="m 164.86598,637.2995 h 29.56165"
id="path192796" id="path192796"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 164.86598,569.43903 h 29.56165" d="m 164.86598,619.81266 h 29.56165"
id="path192798" id="path192798"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 164.86598,523.65294 h 29.56165" d="m 164.86598,575.44334 h 29.56165"
id="path192800" id="path192800"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 164.86598,505.13711 h 29.56165" d="m 164.86598,556.92751 h 29.56165"
id="path192802" id="path192802"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 164.86598,488.5903 h 29.56165" d="m 164.86598,540.3807 h 29.56165"
id="path192804" id="path192804"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
@ -723,19 +723,19 @@
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 365.39982,218.98347 h -28.80494 v 414.1129 h -14.76054" d="M 365.39982,218.98347 H 336.59488 V 683.53009 H 321.83434"
id="path65277" id="path65277"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 336.67172,472.11312 H 321.83434" d="M 336.67172,522.42526 H 321.83434"
id="path65279" id="path65279"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 336.55811,375.27147 H 321.83434" d="m 336.59488,427.83526 h -3.6272 v -1.95102 h -11.13334"
id="path65281" id="path65281"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 336.61441,297.02788 H 321.83434" d="M 336.61441,297.02788 H 321.83434"
@ -753,17 +753,17 @@
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 389.78836,376.97047 h -50.88372 v 1.81264 h -17.0703" d="m 389.78836,376.97047 h -51.78918 v 52.42541 h -16.16484"
id="path109859" id="path109859"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker150781)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker150781)"
d="m 389.78836,409.59106 h -47.50562 v 66.26451 h -20.4484" d="m 389.78836,409.59106 h -47.50562 v 116.57665 h -20.4484"
id="path112731" id="path112731"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 342.28274,445.96589 v 109.59405 h -20.4484" d="M 342.28274,445.96589 V 606.2672 h -20.4484"
id="path112733" id="path112733"
sodipodi:nodetypes="ccc" /> sodipodi:nodetypes="ccc" />
<path <path
@ -798,45 +798,75 @@
sodipodi:nodetypes="ccccc" /> sodipodi:nodetypes="ccccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker195364)"
d="m 96.114809,286.20221 h 65.136631 v 414.42902 h 27.46387" d="M 96.114809,303.21735 H 161.25144 V 751.0645 h 27.46387"
id="path4481" id="path4481"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker180768)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker180768)"
d="M 161.22338,350.33023 H 188.6919" d="M 161.22338,349.86657 H 188.6919"
id="path5533" id="path5533"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 336.67172,551.88875 H 321.83434" d="M 336.67172,602.59601 H 321.83434"
id="path8649" id="path8649"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker150781)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker150781)"
d="M 389.78836,392.91504 H 339.44968 V 636.81969 H 321.83434" d="M 389.78836,392.91504 H 339.44968 V 687.25341 H 321.83434"
id="path9765" id="path9765"
sodipodi:nodetypes="cccc" /> sodipodi:nodetypes="cccc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 161.21144,683.95211 h 27.50387" d="m 161.21144,734.5181 h 27.50387"
id="path10505" id="path10505"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 161.21144,667.36263 h 27.50387" d="m 161.21144,717.92862 h 27.50387"
id="path10521" id="path10521"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path <path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)" style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker195364)"
d="m 161.21144,650.88733 h 27.50387" d="m 161.21144,701.45332 h 27.50387"
id="path10523" id="path10523"
sodipodi:nodetypes="cc" /> sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 28.193253,285.6955 H 6.9406721"
id="path2020"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker180768)"
d="M 161.22338,330.81919 H 188.6919"
id="path7851"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker180768)"
d="M 161.22338,314.04119 H 188.6919"
id="path7853"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker101675);marker-end:url(#marker180768)"
d="m 99.319036,285.93165 h 75.850324 v 112.08774 h 13.53058"
id="path8235"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker180768)"
d="M 175.16936,381.22375 H 188.6919"
id="path8237"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0080ff;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker180768)"
d="M 175.16936,364.42811 H 188.6919"
id="path8239"
sodipodi:nodetypes="cc" />
</g> </g>
<g <g
inkscape:label="Étiquettes" inkscape:label="Étiquettes"
inkscape:groupmode="layer" inkscape:groupmode="layer"
id="layer1" id="layer1"
transform="translate(20.813414,89.432822)" transform="translate(20.813412,89.432822)"
style="display:inline"> style="display:inline">
<g <g
id="g31324" id="g31324"
@ -1139,7 +1169,7 @@
</g> </g>
<g <g
id="g47879" id="g47879"
transform="translate(151.16522,173.78546)"> transform="translate(151.16522,224.4444)">
<g <g
id="g24930" id="g24930"
transform="translate(53.238806,165.44248)"> transform="translate(53.238806,165.44248)">
@ -1266,7 +1296,7 @@
</g> </g>
<g <g
id="g47923" id="g47923"
transform="translate(151.16522,270.46341)"> transform="translate(151.16522,321.12235)">
<g <g
id="g47887" id="g47887"
transform="translate(35.779051,165.44249)"> transform="translate(35.779051,165.44249)">
@ -1370,7 +1400,7 @@
</g> </g>
<g <g
id="g71566" id="g71566"
transform="translate(151.16522,350.58107)"> transform="translate(151.16522,401.24001)">
<g <g
id="g71538" id="g71538"
transform="translate(35.779051,165.44249)"> transform="translate(35.779051,165.44249)">
@ -1622,135 +1652,9 @@
y="55.650307">inclusions.php</tspan></text> y="55.650307">inclusions.php</tspan></text>
</g> </g>
</g> </g>
<g
id="g1500">
<g
id="g74388"
transform="translate(19.726358,181.61251)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect74382"
width="68.349136"
height="10.80508"
x="9.6936798"
y="48.399471"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.001895"
y="55.650307"
id="text74386"><tspan
sodipodi:role="line"
id="tspan74384"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.001895"
y="55.650307">alias_virtuels.php</tspan></text>
</g>
<g
id="g77655"
transform="translate(19.18882,198.54975)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect77649"
width="55.657185"
height="10.80508"
x="10.231222"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.001895"
y="55.650307"
id="text77653"><tspan
sodipodi:role="line"
id="tspan77651"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.001895"
y="55.650307">domaines.php</tspan></text>
</g>
<g
id="g80126"
transform="translate(19.37483,215.2906)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect80120"
width="65.282738"
height="10.80508"
x="10.045211"
y="48.399471"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.001895"
y="55.650307"
id="text80124"><tspan
sodipodi:role="line"
id="tspan80122"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.001895"
y="55.650307">listes_noires.php</tspan></text>
</g>
<rect
style="fill:none;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect5361"
width="91.798279"
height="83.531204"
x="17.695467"
y="213.83429"
ry="5.0293026" />
<g
id="g5369"
transform="translate(7.4664,165.533)">
<rect
style="fill:#ffffff;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect5363"
width="66.44062"
height="10.80508"
x="10.110152"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.28232"
y="55.650307"
id="text5367"><tspan
sodipodi:role="line"
id="tspan5365"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.28232"
y="55.650307">services/gestion/</tspan></text>
</g>
<g
id="g10093"
transform="translate(19.490107,232.2932)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect10087"
width="62.380848"
height="10.80508"
x="9.9299335"
y="48.301285"
ry="4.8241234" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="12.77237"
y="55.650307"
id="text10091"><tspan
sodipodi:role="line"
id="tspan10089"
style="font-size:7.05556px;stroke-width:0.264583"
x="12.77237"
y="55.650307">parametres.php</tspan></text>
</g>
</g>
<g <g
id="g771" id="g771"
transform="translate(151.16522,431.37562)"> transform="translate(151.16522,482.03456)">
<g <g
id="g735" id="g735"
transform="translate(31.109508,165.44248)"> transform="translate(31.109508,165.44248)">
@ -1875,109 +1779,6 @@
y="55.650307">importDonneesBdd.php</tspan></text> y="55.650307">importDonneesBdd.php</tspan></text>
</g> </g>
</g> </g>
<g
id="g9022">
<g
id="g91365"
transform="translate(180.50947,293.81661)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect91359"
width="82.683273"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text91363"><tspan
sodipodi:role="line"
id="tspan91361"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">changeUtilisateur.php</tspan></text>
</g>
<rect
style="fill:none;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect91367"
width="135.34937"
height="68.879616"
x="184.20288"
y="291.39462"
ry="5.0293026" />
<g
id="g91375"
transform="translate(175.38219,242.73047)">
<rect
style="fill:#ffffff;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect91369"
width="124.31111"
height="10.80508"
x="8.9239988"
y="48.399471"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="12.617968"
y="55.650307"
id="text91373"><tspan
sodipodi:role="line"
id="tspan91371"
style="font-size:7.05556px;stroke-width:0.264583"
x="12.617968"
y="55.650307">services/traitements/utilisateurs/</tspan></text>
</g>
<g
id="g1279"
transform="translate(180.50947,277.02097)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect1273"
width="107.38751"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text1277"><tspan
sodipodi:role="line"
id="tspan1275"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">changePrefixeUtilisateur.php</tspan></text>
</g>
<g
id="g1287"
transform="translate(180.50947,260.22533)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect1281"
width="125.47025"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text1285"><tspan
sodipodi:role="line"
id="tspan1283"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">changeMotDePasseUtilisateur.php</tspan></text>
</g>
</g>
<g <g
id="g11270"> id="g11270">
<g <g
@ -2127,5 +1928,336 @@
y="55.55212">import_export.php</tspan></text> y="55.55212">import_export.php</tspan></text>
</g> </g>
</g> </g>
<g
id="g1653">
<g
id="g74388"
transform="translate(19.726358,181.61251)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect74382"
width="68.349136"
height="10.80508"
x="9.6936798"
y="48.399471"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.001895"
y="55.650307"
id="text74386"><tspan
sodipodi:role="line"
id="tspan74384"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.001895"
y="55.650307">alias_virtuels.php</tspan></text>
</g>
<g
id="g77655"
transform="translate(19.18882,198.54975)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect77649"
width="55.657185"
height="10.80508"
x="10.231222"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.001895"
y="55.650307"
id="text77653"><tspan
sodipodi:role="line"
id="tspan77651"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.001895"
y="55.650307">domaines.php</tspan></text>
</g>
<g
id="g80126"
transform="translate(19.37483,215.2906)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect80120"
width="65.282738"
height="10.80508"
x="10.045211"
y="48.399471"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.001895"
y="55.650307"
id="text80124"><tspan
sodipodi:role="line"
id="tspan80122"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.001895"
y="55.650307">listes_noires.php</tspan></text>
</g>
<rect
style="fill:none;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect5361"
width="91.798279"
height="101.70321"
x="17.695467"
y="213.83429"
ry="5.0293026" />
<g
id="g5369"
transform="translate(7.4664,165.533)">
<rect
style="fill:#ffffff;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect5363"
width="66.44062"
height="10.80508"
x="10.110152"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.28232"
y="55.650307"
id="text5367"><tspan
sodipodi:role="line"
id="tspan5365"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.28232"
y="55.650307">services/gestion/</tspan></text>
</g>
<g
id="g10093"
transform="translate(19.490107,249.06687)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect10087"
width="62.380848"
height="10.80508"
x="9.9299335"
y="48.301285"
ry="4.8241234" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="12.77237"
y="55.650307"
id="text10091"><tspan
sodipodi:role="line"
id="tspan10089"
style="font-size:7.05556px;stroke-width:0.264583"
x="12.77237"
y="55.650307">parametres.php</tspan></text>
</g>
<g
id="g1370"
transform="translate(19.37483,232.12964)">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect1364"
width="65.282738"
height="10.80508"
x="10.045211"
y="48.399471"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.001895"
y="55.650307"
id="text1368"><tspan
sodipodi:role="line"
id="tspan1366"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.001895"
y="55.650307">utilisateurs.php</tspan></text>
</g>
</g>
<g
id="g8653"
style="display:inline"
transform="translate(-20.813414,-89.432822)">
<g
id="g91365"
transform="translate(201.32288,383.24943)"
style="display:inline">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect91359"
width="82.683273"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text91363"><tspan
sodipodi:role="line"
id="tspan91361"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">changeUtilisateur.php</tspan></text>
</g>
<rect
style="display:inline;fill:none;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect91367"
width="135.34937"
height="118.62074"
x="184.20288"
y="291.39462"
ry="5.0293026"
transform="translate(20.813414,89.432823)" />
<g
id="g91375"
transform="translate(196.1956,332.16329)"
style="display:inline">
<rect
style="fill:#ffffff;stroke:#666666;stroke-width:1;stroke-opacity:1"
id="rect91369"
width="124.31111"
height="10.80508"
x="8.9239988"
y="48.399471"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="12.617968"
y="55.650307"
id="text91373"><tspan
sodipodi:role="line"
id="tspan91371"
style="font-size:7.05556px;stroke-width:0.264583"
x="12.617968"
y="55.650307">services/traitements/utilisateurs/</tspan></text>
</g>
<g
id="g1279"
transform="translate(201.32288,366.45379)"
style="display:inline">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect1273"
width="107.38751"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text1277"><tspan
sodipodi:role="line"
id="tspan1275"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">changePrefixeUtilisateur.php</tspan></text>
</g>
<g
id="g1287"
transform="translate(201.32288,349.65815)"
style="display:inline">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect1281"
width="125.47025"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text1285"><tspan
sodipodi:role="line"
id="tspan1283"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">changeMotDePasseUtilisateur.php</tspan></text>
</g>
<g
id="g3243"
transform="translate(201.32288,400.04507)"
style="display:inline">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect3237"
width="82.683273"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text3241"><tspan
sodipodi:role="line"
id="tspan3239"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">ajoutUtilisateur.php</tspan></text>
</g>
<g
id="g3251"
transform="translate(201.32288,416.84071)"
style="display:inline">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect3245"
width="82.683273"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text3249"><tspan
sodipodi:role="line"
id="tspan3247"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">editUtilisateur.php</tspan></text>
</g>
<g
id="g3259"
transform="translate(201.32288,433.63635)"
style="display:inline">
<rect
style="fill:#ffffff;stroke:#0080ff;stroke-width:1;stroke-opacity:1"
id="rect3253"
width="82.683273"
height="10.80508"
x="10.323042"
y="48.301285"
ry="5.0293026" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:7.05556px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="13.02274"
y="55.650307"
id="text3257"><tspan
sodipodi:role="line"
id="tspan3255"
style="font-size:7.05556px;stroke-width:0.264583"
x="13.02274"
y="55.650307">supprUtilisateur.php</tspan></text>
</g>
</g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 88 KiB

@ -48,11 +48,15 @@ if (isset($_GET['page']) && !empty($_GET['page'])) {
case 'listes_noires': case 'listes_noires':
require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/listes_noires.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/listes_noires.php");
break; break;
case 'utilisateurs':
require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/utilisateurs.php");
break;
case 'parametres': case 'parametres':
require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/parametres.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/services/gestion/parametres.php");
break; break;
default: default:
http_response_code(404);
echo "<h1>Cette page n'existe pas.</h1>"; echo "<h1>Cette page n'existe pas.</h1>";
break; break;
} }

@ -5,15 +5,14 @@
*/ */
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
/** /**
* Fonction listant les alias virtuels d'un utilisateur. * Fonction listant les alias virtuels d'un utilisateur.
*/ */
function listeAliasVirtuelsPostfix($pdo) { function listeAliasVirtuelsBdd($pdo) {
try { try {
// Filtre des alias virtuels de l'utilisateur courant // 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 WHERE destination=:destination ORDER BY id DESC';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']); $sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']);
$sql->execute(); $sql->execute();
@ -29,7 +28,7 @@ function listeAliasVirtuelsPostfix($pdo) {
/** /**
* Fonction listant tous les alias virtuels de la base. * Fonction listant tous les alias virtuels de la base.
*/ */
function listeTousAliasVirtuelsPostfix($pdo) { function listeTousAliasVirtuelsBdd($pdo) {
try { try {
$req = 'SELECT * FROM postfix_alias_virtuels'; $req = 'SELECT * FROM postfix_alias_virtuels';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
@ -46,14 +45,14 @@ function listeTousAliasVirtuelsPostfix($pdo) {
/** /**
* Fonction d'ajout d'un alias virtuel. * Fonction d'ajout d'un alias virtuel.
*/ */
function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_virtuel) { function ajoutAliasVirtuelsBdd($pdo,$nom_alias_virtuel,$choix_domaine_alias_virtuel) {
try { try {
// Insertion de l'alias virtuel entré par l'utilisateur et lié avec son adresse // 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)'; $req='INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:courriel,1)';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']); $sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']);
$sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,100)); $sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurBdd($pdo,$_SESSION['pseudo_utilisateur']).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,100));
$sql->execute(); $sql->execute();
if ($sql->rowCount() == 1){ if ($sql->rowCount() == 1){
@ -69,7 +68,7 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_
$code_retour=$sql->errorInfo(); $code_retour=$sql->errorInfo();
if ($code_retour[0]=="23000") { 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. L'alias envoyé via le formulaire par l'utilisateur a déjà été renseigné dans la base // Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "courriel" de la table "postfix_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"); header ("Location: /pages/gestion/administration.php?page=alias&erreur=3");
die(); die();
} }
@ -90,10 +89,11 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des alias virtuels d'un utilisateur. * 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). * 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,$retour_form) { function modifEtatAliasVirtuelsBdd($pdo,$retour_form) {
try { try {
$compteModifs=0; $compteModifs=0;
foreach ($retour_form as $id_alias_virtuel => $etat_alias_virtuel) { foreach ($retour_form as $id_alias_virtuel => $etat_alias_virtuel) {
if ($etat_alias_virtuel==0 || $etat_alias_virtuel==1) {
$req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur'; $req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
@ -103,6 +103,7 @@ function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
$sql->execute(); $sql->execute();
} }
} }
}
catch (\Exception $e) { 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(); $code_retour=$sql->errorInfo();
@ -122,7 +123,7 @@ function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
/** /**
* Fonction de suppression d'un alias virtuel. * Fonction de suppression d'un alias virtuel.
*/ */
function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) { function supprAliasVirtuelsBdd($pdo,$suppr_alias_virtuel) {
try { try {
$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 destination=:pseudo_utilisateur';
@ -154,4 +155,40 @@ function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) {
} }
} }
/**
* Fonction de suppression de tous les alias virtuels d'un utilisateur (à la suppression de celui-ci).
*/
function supprTousAliasVirtuelsUtilisateurBdd($pdo,$id_utilisateur) {
try {
$req='DELETE FROM postfix_alias_virtuels WHERE destination IN (SELECT utilisateur FROM postfix_utilisateurs WHERE id=:id_utilisateur);';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_utilisateur',$id_utilisateur);
$sql->execute();
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="00000") {
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=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 des alias virtuels de l'utilisateur : ".$e->getMessage());
}
}
}
?> ?>

@ -9,7 +9,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php")
/** /**
* Fonction listant les domaines. * Fonction listant les domaines.
*/ */
function listeDomainesPostfix($pdo) { function listeDomainesBdd($pdo) {
try { try {
$req = 'SELECT * FROM postfix_domaines ORDER BY defaut DESC'; $req = 'SELECT * FROM postfix_domaines ORDER BY defaut DESC';
@ -27,7 +27,7 @@ function listeDomainesPostfix($pdo) {
/** /**
* Fonction affichant le domaine par défaut. * Fonction affichant le domaine par défaut.
*/ */
function retourneDomaineDefautPostfix($pdo) { function retourneDomaineDefautBdd($pdo) {
try { try {
$req = 'SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1'; $req = 'SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1';
@ -54,7 +54,7 @@ function retourneDomaineDefautPostfix($pdo) {
/** /**
* Fonction changeant le domaine par défaut. * Fonction changeant le domaine par défaut.
*/ */
function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) { function changeDomaineDefautBdd($pdo,$choix_domaine_defaut) {
try { 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 // 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'; $req = 'UPDATE postfix_domaines SET defaut=0';
@ -89,7 +89,7 @@ function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) {
/** /**
* Fonction d'ajout d'un domaine. * Fonction d'ajout d'un domaine.
*/ */
function ajoutDomainePostfix($pdo,$nom_domaine) { function ajoutDomaineBdd($pdo,$nom_domaine) {
try { try {
// Insertion du domaine entré par l'administrateur // Insertion du domaine entré par l'administrateur
$req='INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,0,1)'; $req='INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,0,1)';
@ -132,7 +132,7 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des domaines d'un utilisateur. * 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). * 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,$retour_form) { function modifEtatDomainesBdd($pdo,$retour_form) {
try { try {
$compteModifs=0; $compteModifs=0;
foreach ($retour_form as $id_domaine => $etat_domaine) { foreach ($retour_form as $id_domaine => $etat_domaine) {
@ -163,7 +163,7 @@ function modifEtatDomainesPostfix($pdo,$retour_form) {
/** /**
* Fonction de suppression d'un domaine. * Fonction de suppression d'un domaine.
*/ */
function supprDomainesPostfix($pdo,$suppr_domaine) { function supprDomainesBdd($pdo,$suppr_domaine) {
try { try {
$req='DELETE FROM postfix_domaines WHERE id=:id_domaine AND defaut!=1'; $req='DELETE FROM postfix_domaines WHERE id=:id_domaine AND defaut!=1';

@ -5,7 +5,6 @@
*/ */
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php"); 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. * Fonction générant un fichier CSV avec le contenu des alias virtuels d'un utilisateur.

@ -10,7 +10,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php")
/** /**
* Fonction listant les entrées de la liste noire des destinataires. * Fonction listant les entrées de la liste noire des destinataires.
*/ */
function listeEntreeListeNoireDstPostfix($pdo) { function listeEntreeListeNoireDstBdd($pdo) {
try { try {
$req = 'SELECT * FROM postfix_liste_noire_destinataires'; $req = 'SELECT * FROM postfix_liste_noire_destinataires';
@ -28,7 +28,7 @@ function listeEntreeListeNoireDstPostfix($pdo) {
/** /**
* Fonction listant les entrées de la liste noire des expéditeurs. * Fonction listant les entrées de la liste noire des expéditeurs.
*/ */
function listeEntreeListeNoireExpPostfix($pdo) { function listeEntreeListeNoireExpBdd($pdo) {
try { try {
$req = 'SELECT * FROM postfix_liste_noire_expediteurs'; $req = 'SELECT * FROM postfix_liste_noire_expediteurs';
@ -46,7 +46,7 @@ function listeEntreeListeNoireExpPostfix($pdo) {
/** /**
* Fonction d'ajout d'une entrée de liste noir destinataire. * Fonction d'ajout d'une entrée de liste noir destinataire.
*/ */
function ajoutEntreeListeNoireDstPostfix($pdo,$courriel_entree_liste_noire_dst,$action_entree_liste_noire_dst) { function ajoutEntreeListeNoireDstBdd($pdo,$courriel_entree_liste_noire_dst,$action_entree_liste_noire_dst) {
try { try {
// Insertion de l'entrée de liste noire de destinataires renseignée par l'administrateur // Insertion de l'entrée de liste noire de destinataires renseignée par l'administrateur
$req='INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES (:courriel,:action,1)'; $req='INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES (:courriel,:action,1)';
@ -87,7 +87,7 @@ function ajoutEntreeListeNoireDstPostfix($pdo,$courriel_entree_liste_noire_dst,$
/** /**
* Fonction d'ajout d'une entrée de liste noir expéditeurs. * Fonction d'ajout d'une entrée de liste noir expéditeurs.
*/ */
function ajoutEntreeListeNoireExpPostfix($pdo,$courriel_entree_liste_noire_exp,$code_retour_entree_liste_noire_exp) { function ajoutEntreeListeNoireExpBdd($pdo,$courriel_entree_liste_noire_exp,$code_retour_entree_liste_noire_exp) {
try { try {
// Insertion de l'entrée de liste noire d'expéditeurs renseignée par l'administrateur // Insertion de l'entrée de liste noire d'expéditeurs renseignée par l'administrateur
$req='INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES (:courriel,:code_retour,"Votre message a été rejeté par le serveur car votre adresse est en liste noire.",1)'; $req='INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES (:courriel,:code_retour,"Votre message a été rejeté par le serveur car votre adresse est en liste noire.",1)';
@ -129,7 +129,7 @@ function ajoutEntreeListeNoireExpPostfix($pdo,$courriel_entree_liste_noire_exp,$
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des entrées de la liste noire des destinataires du serveur. * Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des entrées de la liste noire des destinataires du serveur.
* Elle occasionnera peut-être des baisses de performance si un très grand d'entrées existent (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée). * Elle occasionnera peut-être des baisses de performance si un très grand d'entrées existent (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée).
*/ */
function modifEntreeListeNoireDstPostfix($pdo,$retour_form) { function modifEntreeListeNoireDstBdd($pdo,$retour_form) {
try { try {
$compteModifs=0; $compteModifs=0;
foreach ($retour_form as $id_entree_liste_noire_dst => $etat_entree_liste_noire_dst) { foreach ($retour_form as $id_entree_liste_noire_dst => $etat_entree_liste_noire_dst) {
@ -162,7 +162,7 @@ function modifEntreeListeNoireDstPostfix($pdo,$retour_form) {
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des entrées de la liste noire des expéditeurs du serveur. * Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des entrées de la liste noire des expéditeurs du serveur.
* Elle occasionnera peut-être des baisses de performance si un très grand d'entrées existent (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée). * Elle occasionnera peut-être des baisses de performance si un très grand d'entrées existent (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée).
*/ */
function modifEntreeListeNoireExpPostfix($pdo,$retour_form) { function modifEntreeListeNoireExpBdd($pdo,$retour_form) {
try { try {
$compteModifs=0; $compteModifs=0;
foreach ($retour_form as $id_entree_liste_noire_exp => $etat_entree_liste_noire_exp) { foreach ($retour_form as $id_entree_liste_noire_exp => $etat_entree_liste_noire_exp) {
@ -193,7 +193,7 @@ function modifEntreeListeNoireExpPostfix($pdo,$retour_form) {
/** /**
* Fonction de suppression d'une entrée de liste noire de destinataires. * Fonction de suppression d'une entrée de liste noire de destinataires.
*/ */
function supprEntreeListeNoireDstPostfix($pdo) { function supprEntreeListeNoireDstBdd($pdo) {
try { try {
$req='DELETE FROM postfix_liste_noire_destinataires WHERE id=:id_entree_liste_noire_dst'; $req='DELETE FROM postfix_liste_noire_destinataires WHERE id=:id_entree_liste_noire_dst';
@ -227,7 +227,7 @@ function supprEntreeListeNoireDstPostfix($pdo) {
/** /**
* Fonction de suppression d'une entrée de liste noire d'expéditeurs. * Fonction de suppression d'une entrée de liste noire d'expéditeurs.
*/ */
function supprEntreeListeNoireExpPostfix($pdo) { function supprEntreeListeNoireExpBdd($pdo) {
try { try {
$req='DELETE FROM postfix_liste_noire_expediteurs WHERE id=:id_entree_liste_noire_exp'; $req='DELETE FROM postfix_liste_noire_expediteurs WHERE id=:id_entree_liste_noire_exp';

@ -7,11 +7,12 @@
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
/** /**
* Fonction listant les utilisateurs. * Fonction listant tous les utilisateurs.
*/ */
function listeUtilisateursPostfix($pdo) { function listeTousUtilisateursBdd($pdo) {
try { try {
$req = 'SELECT utilisateur FROM postfix_utilisateurs'; $req = 'SELECT * FROM postfix_utilisateurs';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->execute(); $sql->execute();
@ -23,10 +24,75 @@ function listeUtilisateursPostfix($pdo) {
} }
} }
/**
* Fonction listant un utilisateur en particulier.
*/
function listeUtilisateurBdd($pdo,$id_utilisateur) {
try {
$req = 'SELECT * FROM postfix_utilisateurs WHERE id=:id_utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_utilisateur',$id_utilisateur);
$sql->execute();
$infos_utilisateur = $sql->fetchAll(PDO::FETCH_ASSOC);
return $infos_utilisateur;
}
catch (\Exception $e) {
die ("Erreur de requête de selection des utilisateurs : ".$e->getMessage());
}
}
/**
* Fonction d'ajout d'un utilisateur.
*/
function ajoutUtilisateurBdd($pdo,$prefixe_utilisateur,$nom_utilisateur,$choix_domaine_utilisateur,$mot_de_passe_utilisateur,$nom_complet_utilisateur,$choix_privilege_utilisateur) {
try {
// Insertion du nouvelutilisateur entré par l'administrateur. le mot de passe "motdepasse" est mis par défaut et changé juste après par la fonction idoine afin de ne pas dupliquer de code
$req='INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES (:nom_utilisateur,"{SHA512-CRYPT}$6$SAeCKr.vyiMjMMVa$okHL4IbTkVJO2an.mdFo8EizAxC0pfP6EV4xhO78C.OvMsirM9BD5TYhNaGPcfReQZ6ilc9feaETTvN6c.h6Z0",:nom_complet_utilisateur,:rep_perso,3000,3000,:choix_privilege_utilisateur,:prefixe_utilisateur,1);';
$sql=$pdo->prepare($req);
$sql->bindValue(':nom_utilisateur',substr(htmlspecialchars($nom_utilisateur."@".$choix_domaine_utilisateur),0,100));
$sql->bindValue(':nom_complet_utilisateur',substr(htmlspecialchars($nom_complet_utilisateur),0,100));
$sql->bindValue(':rep_perso',substr(htmlspecialchars($choix_domaine_utilisateur."/".$nom_utilisateur."/"),0,100));
$sql->bindValue(':choix_privilege_utilisateur',substr(htmlspecialchars($choix_privilege_utilisateur),0,100));
$sql->bindValue(':prefixe_utilisateur',substr(htmlspecialchars($prefixe_utilisateur),0,100));
$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 "utilisateur" de la table "postfix_utilisateurs" est violée. Le nom d'utilisateur envoyé via le formulaire par l'administrateur a déjà été renseigné dans la base
header ("Location: /pages/gestion/administration.php?page=utilisateurs&erreur=25");
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=utilisateurs&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 vérifiant le mot de passe actuel d'un utilisateur. * Fonction vérifiant le mot de passe actuel d'un utilisateur.
*/ */
function verificationMotDePasseUtilisateurPostfix($pdo,$identifiant,$mdp) { function verificationMotDePasseUtilisateurBdd($pdo,$identifiant,$mdp) {
try { try {
$req = 'SELECT mot_de_passe FROM postfix_utilisateurs WHERE utilisateur=:identifiant'; $req = 'SELECT mot_de_passe FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
@ -63,7 +129,7 @@ function verificationMotDePasseUtilisateurPostfix($pdo,$identifiant,$mdp) {
/** /**
* Fonction changeant le mot de passe d'un utilisateur. * Fonction changeant le mot de passe d'un utilisateur.
*/ */
function changeMotDePasseUtilisateurPostfix($pdo,$utilisateur,$nouveau_mdp,$confirmation_mdp) { function changeMotDePasseUtilisateurBdd($pdo,$utilisateur,$nouveau_mdp,$confirmation_mdp) {
if ($nouveau_mdp===$confirmation_mdp) { if ($nouveau_mdp===$confirmation_mdp) {
$caracters = '.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $caracters = '.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$chaine_aleatoire = ''; $chaine_aleatoire = '';
@ -97,7 +163,7 @@ function changeMotDePasseUtilisateurPostfix($pdo,$utilisateur,$nouveau_mdp,$conf
/** /**
* Fonction listant le préfixe de l'utilisateur courant. * Fonction listant le préfixe de l'utilisateur courant.
*/ */
function retournePrefixeUtilisateurPostfix($pdo,$utilisateur) { function retournePrefixeUtilisateurBdd($pdo,$utilisateur) {
try { try {
$req = 'SELECT prefixe FROM postfix_utilisateurs WHERE utilisateur=:utilisateur'; $req = 'SELECT prefixe FROM postfix_utilisateurs WHERE utilisateur=:utilisateur';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
@ -122,7 +188,7 @@ function retournePrefixeUtilisateurPostfix($pdo,$utilisateur) {
/** /**
* Fonction changeant le préfixe d'un utilisateur. * Fonction changeant le préfixe d'un utilisateur.
*/ */
function changePrefixeUtilisateurPostfix($pdo,$utilisateur,$nouveau_prefixe) { function changePrefixeUtilisateurBdd($pdo,$utilisateur,$nouveau_prefixe) {
try { try {
$req = 'UPDATE postfix_utilisateurs SET prefixe=:nouveau_prefixe WHERE utilisateur=:utilisateur'; $req = 'UPDATE postfix_utilisateurs SET prefixe=:nouveau_prefixe WHERE utilisateur=:utilisateur';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
@ -161,5 +227,73 @@ function verifUtilisateursExiste($pdo,$utilisateur) {
} }
} }
/**
* Fonction de suppression d'un utilisateur.
*/
function supprUtilisateursBdd($pdo,$suppr_utilisateur) {
try {
$req='DELETE FROM postfix_utilisateurs WHERE id=:id_utilisateur AND utilisateur!=:pseudo_connexion_utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_utilisateur',$suppr_utilisateur);
$sql->bindValue(':pseudo_connexion_utilisateur',$_SESSION['pseudo_connexion_utilisateur']);
$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=utilisateurs&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 utilisateur : ".$e->getMessage());
}
}
}
/**
* Fonction de modification des informations des utilisateurs.
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des données modifiables des utilisateurs.
* Seul les utilisateurs recevant au moins une modification sont traités.
*/
function modifUtilisateursBdd($pdo,$nouvelles_données_utilisateur) {
try {
$req='UPDATE postfix_utilisateurs SET active=:etat_utilisateur,nom_complet=:nom_complet_utilisateur,privilege=:choix_privilege_utilisateur,prefixe=:prefixe_utilisateur WHERE id=:id_utilisateur AND utilisateur=:pseudo_utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_utilisateur',$nouvelles_données_utilisateur['etat_utilisateur']);
$sql->bindValue(':nom_complet_utilisateur',$nouvelles_données_utilisateur['nom_complet_utilisateur']);
$sql->bindValue(':choix_privilege_utilisateur',$nouvelles_données_utilisateur['choix_privilege_utilisateur']);
$sql->bindValue(':prefixe_utilisateur',$nouvelles_données_utilisateur['prefixe_utilisateur']);
$sql->bindValue(':id_utilisateur',$nouvelles_données_utilisateur['id_utilisateur']);
$sql->bindValue(':pseudo_utilisateur',$nouvelles_données_utilisateur['nom_utilisateur']);
$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=utilisateurs&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 des données pour l'utilisateur $nouvelles_données_utilisateur[nom_utilisateur] : ".$e->getMessage());
}
}
}
?> ?>

@ -25,8 +25,8 @@ function retourneMessage($type_message,$num_message) {
6 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine modifiés avec succès.</div>", 6 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine modifiés avec succès.</div>",
7 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine supprimé avec succès.</div>", 7 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine supprimé avec succès.</div>",
8 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine défini par défaut avec succès.</div>", 8 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine défini par défaut avec succès.</div>",
9 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire destiataires a été créée avec succès.</div>", 9 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire destinataires a été créée avec succès.</div>",
10 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'état de l'entrée de liste noire destiataires a été modifié avec succès.</div>", 10 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'état de l'entrée de liste noire destinataires a été modifié avec succès.</div>",
11 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire destinataires a été supprimée avec succès.</div>", 11 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire destinataires a été supprimée avec succès.</div>",
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>", 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>", 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>",
@ -35,7 +35,10 @@ function retourneMessage($type_message,$num_message) {
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>", 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>", 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>", 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>"), 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>",
20 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'utilisateur a bien été créé.</div>",
21 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'utilisateur a bien été supprimé.</div>",
22 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Les données utilisateur ont bien étés mises à jour.</div>"),
"erreurs" => array( "erreurs" => array(
1 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun alias virtuel supprimé.</div>", 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>", 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>",
@ -57,10 +60,16 @@ function retourneMessage($type_message,$num_message) {
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>", 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>", 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>", 21 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Le mot de passe de confirmation 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>", 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>", 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>"), 24 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun type de donnée n'a été spécifié pour l'importation.</div>",
25 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'utilisateur est déjà existant.</div>",
26 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Le domaine indiqué n'existe pas.</div>",
27 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Le privilège indiqué n'existe pas.</div>",
28 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun utilisateur supprimé.</div>",
29 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Erreur lors de la suppression des alias virtuels de l'utilisateur. Utilisateur non supprimé.</div>",
30 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Votre accès a été révoqué par un administrateur suite à la désactivation de votre compte.</div>"),
"messages" => array( "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>") "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>")
); );

@ -18,7 +18,7 @@ function validationIdentifiants($pdo,$identifiant,$mdp) {
$req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant'; $req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
if (!strpos($identifiant, '@')) { if (!strpos($identifiant, '@')) {
$identifiant.="@".retourneDomaineDefautPostfix($pdo); $identifiant.="@".retourneDomaineDefautBdd($pdo);
} }
$sql = $pdo->prepare($req); $sql = $pdo->prepare($req);
@ -63,7 +63,12 @@ function validationIdentifiants($pdo,$identifiant,$mdp) {
function initValeursSession($result) { function initValeursSession($result) {
$_SESSION['id_utilisateur'] = $result[0]['id']; $_SESSION['id_utilisateur'] = $result[0]['id'];
$_SESSION['pseudo_utilisateur'] = $result[0]['utilisateur']; $_SESSION['pseudo_utilisateur'] = $result[0]['utilisateur'];
if (!empty($result[0]['nom_complet'])) {
$_SESSION['nom_utilisateur'] = $result[0]['nom_complet']; $_SESSION['nom_utilisateur'] = $result[0]['nom_complet'];
}
else {
$_SESSION['nom_utilisateur'] = $result[0]['utilisateur'];
}
$_SESSION['privilege_utilisateur'] = $result[0]['privilege']; $_SESSION['privilege_utilisateur'] = $result[0]['privilege'];
$_SESSION['pseudo_connexion_utilisateur'] = $result[0]['utilisateur']; $_SESSION['pseudo_connexion_utilisateur'] = $result[0]['utilisateur'];
} }

@ -4,17 +4,35 @@
* Page de fonctions permettant la vérification des permission d'un utilisateur ou d'un visiteur. * Page de fonctions permettant la vérification des permission d'un utilisateur ou d'un visiteur.
*/ */
// Importation des fonctions utilisateurs afin de pouvoir en lister les données plus bas (fonction listeUtilisateurBdd).
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
$infos_utilisateur = listeUtilisateurBdd($pdo,$_SESSION['id_utilisateur']);
/** /**
* Fonction testant le niveau de privilège d'un utilisateur authentifié ou non. * Fonction testant le niveau de privilège d'un utilisateur authentifié ou non.
* Elle vérifie le privilège de l'utilisateur connecté et retourne la valeur adéquate. * Elle vérifie le privilège de l'utilisateur connecté et retourne la valeur adéquate.
* Si un visiteur ou un utilisateur ne remplis pas la bonne condition, il est redirigé à la page d'accueil avec un message expllicatif. * Si un visiteur ou un utilisateur ne remplis pas la bonne condition, il est redirigé à la page d'accueil avec un message expllicatif.
* Cette fonction devrait être appelée dans toute page de traitement. * Cette fonction devrait être appelée dans toute page de traitement.
*/ */
function testPrivileges(){ function testPrivileges() {
// Utilisation d'une fonction listant les données d'un utilisateur afin de savoir s'il est activé ou non. Ceci permet de déconnecter un utilisateur automatiquement à la prochaine page visité si celui-ci a été désactivé par un administrateur.
global $pdo;
$infos_utilisateur = listeUtilisateurBdd($pdo,$_SESSION['id_utilisateur']);
if (isset($_SESSION['id_utilisateur']) && !empty($_SESSION['id_utilisateur']) && $_SESSION['privilege_utilisateur']=="administrateur") { if (isset($_SESSION['id_utilisateur']) && !empty($_SESSION['id_utilisateur']) && $_SESSION['privilege_utilisateur']=="administrateur") {
if (!isset($infos_utilisateur[0]["active"]) || $infos_utilisateur[0]["active"]!=="1") {
header("Location: /services/traitements/utilisateurs/deconnexion.php?erreur=30");
die();
}
return "administrateur"; return "administrateur";
} }
elseif (isset($_SESSION['id_utilisateur']) && !empty($_SESSION['id_utilisateur']) && $_SESSION['privilege_utilisateur']=="utilisateur") { elseif (isset($_SESSION['id_utilisateur']) && !empty($_SESSION['id_utilisateur']) && $_SESSION['privilege_utilisateur']=="utilisateur") {
if (!isset($infos_utilisateur[0]["active"]) || $infos_utilisateur[0]["active"]!=="1") {
header("Location: /services/traitements/utilisateurs/deconnexion.php?erreur=30");
die();
}
return "utilisateur"; return "utilisateur";
} }
else { else {

@ -8,9 +8,9 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
$liste_utilisateurs = listeUtilisateursPostfix($pdo); $liste_utilisateurs = listeTousUtilisateursBdd($pdo);
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesBdd($pdo);
$liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo); $liste_alias_virtuels = listeAliasVirtuelsBdd($pdo);
/** /**
* Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur. * Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur.
@ -50,7 +50,7 @@ _HEREDOC_;
_HEREDOC_; _HEREDOC_;
} }
?> ?>
<div class="col-12<?php if ($_SESSION['privilege_utilisateur']==="administrateur") {echo' col-md-6';}?>"> <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 mt-4 max-hauteur-pastille">
@ -63,7 +63,7 @@ _HEREDOC_;
/** /**
* Ajout d'un alias virtuel. * Ajout d'un alias virtuel.
*/ */
$prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']); $prefixe_utilisateur=retournePrefixeUtilisateurBdd($pdo,$_SESSION['pseudo_utilisateur']);
if (!empty($prefixe_utilisateur)) { if (!empty($prefixe_utilisateur)) {
echo "<span class=\"input-group-text\">$prefixe_utilisateur</span>"; echo "<span class=\"input-group-text\">$prefixe_utilisateur</span>";
} }
@ -85,10 +85,6 @@ _HEREDOC_;
?> ?>
</select> </select>
<!--<select name="choix_domaine_alias" onchange='document.getElementById("domaine_alias").innerHTML = this.options[this.selectedIndex].text'>
<option value=\"".$domaine['domaine']."\">".$domaine['domaine']."</option>
</select>
<p id="domaine_alias"><?php //echo $liste_domaines[0]["domaine"]; ?></p>-->
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button> <button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div> </div>
</form> </form>
@ -112,7 +108,8 @@ _HEREDOC_;
if (isset($alias_virtuels_valeurs['active']) && $alias_virtuels_valeurs['active']=="1") { if (isset($alias_virtuels_valeurs['active']) && $alias_virtuels_valeurs['active']=="1") {
$etat_interrupteur_allumer="checked"; $etat_interrupteur_allumer="checked";
$etat_interrupteur_eteint=""; $etat_interrupteur_eteint="";
} else { }
else {
$etat_interrupteur_eteint="checked"; $etat_interrupteur_eteint="checked";
$etat_interrupteur_allumer=""; $etat_interrupteur_allumer="";
} }
@ -126,9 +123,7 @@ _HEREDOC_;
<input type="radio" name="{$alias_virtuels_valeurs['id']}" id="eteint{$alias_virtuels_valeurs['id']}" onchange="activationBoutonFlotant(this)" 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> <label for="eteint{$alias_virtuels_valeurs['id']}" class="interrupteur-eteint"></label>
</div> </div>
<div class="titre-pastille"> <div class="titre-pastille"><span>{$alias_virtuels_valeurs['courriel']}</span></div>
<span>{$alias_virtuels_valeurs['courriel']}</span>
</div>
<div> <div>
<label class="input-label-supprimer-valeur btn btn-danger btn-sm" for="supprimer-valeur-{$alias_virtuels_valeurs['id']}"><img src="/fichiers/svg/trash-2.svg"></label> <label class="input-label-supprimer-valeur btn btn-danger btn-sm" for="supprimer-valeur-{$alias_virtuels_valeurs['id']}"><img src="/fichiers/svg/trash-2.svg"></label>
</div> </div>

@ -4,18 +4,15 @@
* Page de gestion importé par la page d'administration centrale permettant la gestion des domaines. * Page de gestion importé par la page d'administration centrale permettant la gestion des domaines.
*/ */
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"); header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die(); die();
} }
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesBdd($pdo);
?> ?>
<!-- Affichage et changement du domaine par défaut -->
<div class="row"> <div class="row">
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<div class="card mt-4 max-hauteur-pastille"> <div class="card mt-4 max-hauteur-pastille">
@ -23,7 +20,8 @@ $liste_domaines = listeDomainesPostfix($pdo);
<h5 class="card-title">Domaine par défaut</h5> <h5 class="card-title">Domaine par défaut</h5>
<?php <?php
$domaine_defaut = retourneDomaineDefautPostfix($pdo); // Affichage et changement du domaine par défaut
$domaine_defaut = retourneDomaineDefautBdd($pdo);
if (empty($domaine_defaut)) { if (empty($domaine_defaut)) {
echo <<<_HEREDOC_ echo <<<_HEREDOC_
<div class="alert alert-warning mb-2" role="alert"><img src="/fichiers/svg/alert-triangle-warning.svg"/> <div class="alert alert-warning mb-2" role="alert"><img src="/fichiers/svg/alert-triangle-warning.svg"/>
@ -87,7 +85,8 @@ $liste_domaines = listeDomainesPostfix($pdo);
if (isset($liste_domaines_valeurs['active']) && $liste_domaines_valeurs['active']=="1") { if (isset($liste_domaines_valeurs['active']) && $liste_domaines_valeurs['active']=="1") {
$etat_interrupteur_allumer="checked"; $etat_interrupteur_allumer="checked";
$etat_interrupteur_eteint=""; $etat_interrupteur_eteint="";
} else { }
else {
$etat_interrupteur_eteint="checked"; $etat_interrupteur_eteint="checked";
$etat_interrupteur_allumer=""; $etat_interrupteur_allumer="";
} }
@ -95,7 +94,8 @@ $liste_domaines = listeDomainesPostfix($pdo);
$etat_bouton="disabled"; $etat_bouton="disabled";
$bordure_pastille="border-primary interieur-pastille-bleu"; $bordure_pastille="border-primary interieur-pastille-bleu";
$post_texte=" <span class=\"text-primary\">(défaut)</span>"; $post_texte=" <span class=\"text-primary\">(défaut)</span>";
} else { }
else {
$etat_bouton=""; $etat_bouton="";
$bordure_pastille=""; $bordure_pastille="";
$post_texte=""; $post_texte="";
@ -110,9 +110,7 @@ $liste_domaines = listeDomainesPostfix($pdo);
<input type="radio" name="{$liste_domaines_valeurs['id']}" id="eteint{$liste_domaines_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="0" {$etat_interrupteur_eteint}> <input type="radio" name="{$liste_domaines_valeurs['id']}" id="eteint{$liste_domaines_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$liste_domaines_valeurs['id']}" class="interrupteur-eteint"></label> <label for="eteint{$liste_domaines_valeurs['id']}" class="interrupteur-eteint"></label>
</div> </div>
<div class="titre-pastille"> <div class="titre-pastille"><span>{$liste_domaines_valeurs['domaine']}{$post_texte}</span></div>
<span>{$liste_domaines_valeurs['domaine']}{$post_texte}</span>
</div>
<div> <div>
<label class="input-label-supprimer-valeur btn btn-danger btn-sm {$etat_bouton}" for="supprimer-valeur-{$liste_domaines_valeurs['id']}"><img src="/fichiers/svg/trash-2.svg"></label> <label class="input-label-supprimer-valeur btn btn-danger btn-sm {$etat_bouton}" for="supprimer-valeur-{$liste_domaines_valeurs['id']}"><img src="/fichiers/svg/trash-2.svg"></label>
</div> </div>

@ -13,8 +13,8 @@ if (testPrivileges()!=="administrateur") {
} }
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
$liste_entrees_liste_noires_dst=listeEntreeListeNoireDstPostfix($pdo); $liste_entrees_liste_noires_dst=listeEntreeListeNoireDstBdd($pdo);
$liste_entrees_liste_noires_exp=listeEntreeListeNoireExpPostfix($pdo); $liste_entrees_liste_noires_exp=listeEntreeListeNoireExpBdd($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.
@ -68,9 +68,7 @@ if (isset($_GET['sousPage']) && !empty($_GET['sousPage'])) {
<input type="radio" name="{$liste_entrees_liste_noires_dst_valeurs['id']}" id="eteint{$liste_entrees_liste_noires_dst_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="0" {$etat_interrupteur_eteint}> <input type="radio" name="{$liste_entrees_liste_noires_dst_valeurs['id']}" id="eteint{$liste_entrees_liste_noires_dst_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$liste_entrees_liste_noires_dst_valeurs['id']}" class="interrupteur-eteint"></label> <label for="eteint{$liste_entrees_liste_noires_dst_valeurs['id']}" class="interrupteur-eteint"></label>
</div> </div>
<div class="titre-pastille"> <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>
<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> <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> <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>
@ -138,9 +136,7 @@ if (isset($_GET['sousPage']) && !empty($_GET['sousPage'])) {
<input type="radio" name="{$liste_entrees_liste_noires_exp_valeurs['id']}" id="eteint{$liste_entrees_liste_noires_exp_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="0" {$etat_interrupteur_eteint}> <input type="radio" name="{$liste_entrees_liste_noires_exp_valeurs['id']}" id="eteint{$liste_entrees_liste_noires_exp_valeurs['id']}" onchange="activationBoutonFlotant(this)" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$liste_entrees_liste_noires_exp_valeurs['id']}" class="interrupteur-eteint"></label> <label for="eteint{$liste_entrees_liste_noires_exp_valeurs['id']}" class="interrupteur-eteint"></label>
</div> </div>
<div class="titre-pastille"> <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>
<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> <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> <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>

@ -6,19 +6,18 @@
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
$liste_utilisateurs = listeUtilisateursPostfix($pdo); $liste_utilisateurs = listeTousUtilisateursBdd($pdo);
$prefixe_utilisateur = retournePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur']); $prefixe_utilisateur = retournePrefixeUtilisateurBdd($pdo,$_SESSION['pseudo_utilisateur']);
if ($_SESSION['pseudo_connexion_utilisateur'] !== $_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>"; $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{ } else{
$message_alert_utilisateur=""; $message_alert_utilisateur="";
} }
/** /**
* Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur. * 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_ echo <<<_HEREDOC_
<div class="col-12"> <div class="col-12">
@ -54,23 +53,19 @@ if (testPrivileges()==="administrateur") {
} }
/** /**
* Changement du mot de passe d'un utilisateur. * Changement du mot de passe de l'utilisateur courant.
*/ */
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="row">
<div class="col-12 col-md-12<?php if ($_SESSION['privilege_utilisateur']==="administrateur") {echo ' col-xl-6';}?>"> <div class="col-12 col-md-12">
<?php if ($_SESSION['privilege_utilisateur']==="utilisateur" && !empty($prefixe_utilisateur)){ ?>
<div class="card mt-4 max-hauteur-pastille"> <div class="card mt-4 max-hauteur-pastille">
<div class="card-body"> <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> <h5 class="card-title">Modifier le mot de passe</h5>
<?php echo $message_alert_utilisateur; ?> <?php echo $message_alert_utilisateur; ?>
<form action="/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php" method="post"> <form action="/services/traitements/utilisateurs/changeMotDePasseUtilisateur.php" method="post">
<div class="input-group"> <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="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="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> <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> <button class="btn btn-primary bouton-ajout" type="submit">Modifier</button>
@ -78,29 +73,13 @@ if ($_SESSION['privilege_utilisateur']==="administrateur" && !empty($prefixe_uti
</form> </form>
</div> </div>
</div> </div>
<?php } ?>
</div> </div>
<?php <?php
if ($_SESSION['privilege_utilisateur']==="administrateur") { /**
echo <<<_HEREDOC_ * Sauvegarde des alias virtuels de l'utilisateur sélectionné.
<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_ echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6"> <div class="col-12 col-md-12 col-xl-6">
<div class="card mt-4 max-hauteur-pastille"> <div class="card mt-4 max-hauteur-pastille">
@ -114,6 +93,9 @@ if ($_SESSION['privilege_utilisateur']==="administrateur" && !empty($prefixe_uti
</div> </div>
_HEREDOC_; _HEREDOC_;
/**
* Restauration des alias virtuels de l'utilisateur sélectionné.
*/
echo <<<_HEREDOC_ echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6"> <div class="col-12 col-md-12 col-xl-6">
<div class="card mt-4 max-hauteur-pastille"> <div class="card mt-4 max-hauteur-pastille">
@ -132,6 +114,9 @@ if ($_SESSION['privilege_utilisateur']==="administrateur" && !empty($prefixe_uti
</div> </div>
_HEREDOC_; _HEREDOC_;
/**
* Sauvegarde de la base de données selon la sélection de l'administrateur.
*/
if ($_SESSION['privilege_utilisateur']==="administrateur") { if ($_SESSION['privilege_utilisateur']==="administrateur") {
echo <<<_HEREDOC_ echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6"> <div class="col-12 col-md-12 col-xl-6">
@ -169,6 +154,9 @@ if ($_SESSION['privilege_utilisateur']==="administrateur" && !empty($prefixe_uti
_HEREDOC_; _HEREDOC_;
} }
/**
* Restauration de la base de données selon la sélection de l'administrateur.
*/
if ($_SESSION['privilege_utilisateur']==="administrateur") { if ($_SESSION['privilege_utilisateur']==="administrateur") {
echo <<<_HEREDOC_ echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-6"> <div class="col-12 col-md-12 col-xl-6">
@ -210,6 +198,19 @@ if ($_SESSION['privilege_utilisateur']==="administrateur" && !empty($prefixe_uti
_HEREDOC_; _HEREDOC_;
} }
if ($_SESSION['privilege_utilisateur']==="administrateur") {
echo <<<_HEREDOC_
<div class="col-12 col-md-12 col-xl-12">
<div class="card mt-4 max-hauteur-pastille">
<div class="card-body">
<h5 class="card-title">Informations du site</h5>
<p class="mb-0">Version de Courtail : <a href="https://gitea.ycharbi.fr/YC-NM/Courtail/releases">v1.1.0</a></p>
</div>
</div>
</div>
_HEREDOC_;
}
?> ?>
</div> </div>

@ -0,0 +1,173 @@
<?php
/**
* Page de gestion importé par la page d'administration centrale permettant la gestion des utilisateurs.
*/
if (testPrivileges()!=="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
$liste_utilisateurs = listeTousUtilisateursBdd($pdo);
$liste_domaines = listeDomainesBdd($pdo);
/**
* Affiche le formulaire de selection d'un utilisateur si celui connecté possède les privilèges administrateur.
*/
if (testPrivileges()==="administrateur") {
echo <<<_HEREDOC_
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajout d'un utilisateur</h5>
<form id="form_choix_utilisateur" action="/services/traitements/utilisateurs/ajoutUtilisateur.php" method="post">
<div class="row">
<div class="col-xl-5 col-12 pt-2">
<div class="input-group">
<input class="form-control" type="text" name="prefixe_utilisateur" placeholder="prefixe" title="Texte s'ajoutant devant les alias de l'utilisateur afin de les discriminer de ceux des autres">
<input type="text" class="form-control" id="nom_pour_filtre" name="nom_utilisateur" placeholder="nom utilisateur *" onkeyup="filtreValeurs();" title="Identifiant de l'utilisateur" required>
<span class="input-group-text">@</span>
<select class="form-select" name="choix_domaine_utilisateur" title="Choix d'un nom de domaine existant">
_HEREDOC_;
try {
foreach ($liste_domaines as $domaine_bdd => $domaine) {
echo "<option value=\"".$domaine['domaine']."\">".$domaine['domaine']."</option>\n";
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection du domaine pour \"$base\" : ".$e->getMessage());
}
echo <<<_HEREDOC_
</select>
</div>
</div>
<div class="col-xl-2 col-4 pt-2">
<input type="password" class="form-control" name="mot_de_passe_utilisateur" placeholder="mot de passe *" title="Changement du mot de passe de l'utilisateur" required>
</div>
<div class="col-xl-2 col-4 pt-2 ps-0 pe-0">
<input class="form-control" type="text" name="nom_complet_utilisateur" placeholder="nom complet" title="Nom complet de l'utilisateur">
</div>
<div class="col-xl-2 col-4 pt-2">
<div class="input-group">
<select class="form-select" name="choix_privilege_utilisateur" title="Privilège de l'utilisateur" required>
<optgroup label="privilège">
<option value="utilisateur" title="Accès limité aux fonctionnalités">utilisateur</option>
<option value="administrateur" title="Accès complet et gestions des autres utilisateurs">administrateur</option>
</optgroup>
</select>
</div>
</div>
<div class="col-xl-1 col-12 pt-2">
<button class="btn btn-primary bouton-ajout" style="width: 100%;" type="submit">Appliquer</button>
</div>
</div>
</form>
</div>
</div>
_HEREDOC_;
}
?>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Utilisateurs du serveur</h5>
<form class="" action="/services/traitements/utilisateurs/editUtilisateur.php" method="post">
<div class="row" id="liste_pour_filtre">
<?php
/**
* Liste des utilisateurs.
*/
try {
$numero_entree=0;
foreach ($liste_utilisateurs as $utilisateurs_cles => $utilisateurs_valeurs) {
if (isset($utilisateurs_valeurs['active']) && $utilisateurs_valeurs['active']=="1") {
$etat_interrupteur_allumer="checked";
$etat_interrupteur_eteint="";
}
else {
$etat_interrupteur_eteint="checked";
$etat_interrupteur_allumer="";
}
if (isset($utilisateurs_valeurs['utilisateur']) && $utilisateurs_valeurs['utilisateur'] === $_SESSION['pseudo_connexion_utilisateur']) {
$etat_bouton_etat="disabled";
$etat_bouton_suppr="disabled";
}
else {
$etat_bouton_etat="";
$etat_bouton_suppr="";
}
echo <<<_HEREDOC_
<input type="hidden" name="utilisateur[{$numero_entree}][id_utilisateur]" value="{$utilisateurs_valeurs['id']}">
<div class="col-md-6 col-xl-4">
<div class="card contour-pastille">
<div class="d-flex interieur-pastille">
<div class="champ-interrupteur $etat_bouton_etat">
<input type="radio" name="utilisateur[{$numero_entree}][etat_utilisateur]" id="allumer{$utilisateurs_valeurs['id']}" value="1" {$etat_interrupteur_allumer}>
<label for="allumer{$utilisateurs_valeurs['id']}" class="interrupteur-allumer"></label>
<input type="radio" name="utilisateur[{$numero_entree}][etat_utilisateur]" id="eteint{$utilisateurs_valeurs['id']}" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$utilisateurs_valeurs['id']}" class="interrupteur-eteint"></label>
</div>
<div class="titre-pastille"><span>{$utilisateurs_valeurs['utilisateur']}</span>
_HEREDOC_;
if ($utilisateurs_valeurs['privilege'] === "administrateur") {
echo '<div class="survol"><span style="padding: 0; margin-left: 5px" class="badge fond-arc-noire"><img style="width: 80%" src="/fichiers/svg/chevrons-up.svg"></img></span><div class="message-survol">Cet utilisateur est un administrateur</div></div>';
}
echo '</div>';
echo <<<_HEREDOC_
<div>
<label class="input-label-detail-utilisateur btn btn-primary btn-sm me-1" for="detail-utilisateur-{$utilisateurs_valeurs['id']}"><img src="/fichiers/svg/menu.svg"></label>
</div>
<div>
<label class="input-label-supprimer-valeur btn btn-danger btn-sm $etat_bouton_suppr" for="supprimer-valeur-{$utilisateurs_valeurs['id']}"><img src="/fichiers/svg/trash-2.svg"></label>
</div>
</div>
<input type="checkbox" class="input-checkbox-detail-utilisateur visuellement-cache" id="detail-utilisateur-{$utilisateurs_valeurs['id']}">
<div class="detail-utilisateur card-footer">
<input class="form-control mt-2" type="text" name="utilisateur[{$numero_entree}][nom_complet_utilisateur]" value="{$utilisateurs_valeurs['nom_complet']}" placeholder="nom complet" title="Nom complet de l'utilisateur">
<input class="form-control mt-2" type="text" name="utilisateur[{$numero_entree}][prefixe_utilisateur]" value="{$utilisateurs_valeurs['prefixe']}" placeholder="prefixe" title="Texte s'ajoutant devant les alias de l'utilisateur afin de les discriminer de ceux des autres">
<input type="password" class="form-control mt-2" name="utilisateur[{$numero_entree}][mot_de_passe_utilisateur]" placeholder="nouveau mot de passe" title="Changement du mot de passe de l'utilisateur">
<input type="password" class="form-control mt-2" name="utilisateur[{$numero_entree}][confirmation_mot_de_passe_utilisateur]" placeholder="confirmation mot de passe" title="Confirmation du nouveau mot de passe">
<select class="form-select mt-2 mb-2" name="utilisateur[{$numero_entree}][choix_privilege_utilisateur]" title="Privilège de l'utilisateur">
<optgroup label="privilège">
_HEREDOC_;
echo "<option value=\"utilisateur\" title=\"Accès limité aux fonctionnalités\"";
if ($utilisateurs_valeurs['privilege']==="utilisateur") { echo " selected";};
echo ">utilisateur</option>";
echo "<option value=\"administrateur\" title=\"Accès complet et gestions des autres utilisateurs\"";
if ($utilisateurs_valeurs['privilege']==="administrateur") { echo " selected";};
echo ">administrateur</option>";
echo <<<_HEREDOC_
</optgroup>
</select>
</div>
<input type="checkbox" class="input-checkbox-supprimer-valeur visuellement-cache" id="supprimer-valeur-{$utilisateurs_valeurs['id']}">
<div class="confirmation-avertissement-info alert alert-warning" role="alert"><img src="/fichiers/svg/alert-triangle-warning.svg"/> Les fichiers de l'utilisateur devront être supprimés manuellement du serveur</div>
<a class="confirmation-suppression card-footer" href="/services/traitements/utilisateurs/supprUtilisateur.php?supprUtilisateur={$utilisateurs_valeurs['id']}">Confirmer la suppression</a>
</div>
</div>
_HEREDOC_;
$numero_entree++;
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
?>
</div>
<button id="enregistrer-modifications" class="bouton-flotant" type="submit"><img src="/fichiers/svg/save.svg"/></button>
</form>
</div>
</div>

@ -14,10 +14,10 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.ph
// Permet le contrôle du domaine renseigné par l'utilisateur // Permet le contrôle du domaine renseigné par l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesBdd($pdo);
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'))) { 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']); ajoutAliasVirtuelsBdd($pdo,$_POST['nom_alias_virtuel'],$_POST['choix_domaine_alias_virtuel']);
header ("Location: /pages/gestion/administration.php?page=alias&succes=1"); header ("Location: /pages/gestion/administration.php?page=alias&succes=1");
die(); die();
} }

@ -9,7 +9,8 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges
testPrivileges(); testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
modifEtatAliasVirtuelsPostfix($pdo,$_POST); modifEtatAliasVirtuelsBdd($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=alias&succes=2"); header ("Location: /pages/gestion/administration.php?page=alias&succes=2");
die();
?> ?>

@ -9,11 +9,13 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges
testPrivileges(); testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
if(isset($_GET['supprAliasVirtuel']) && !empty($_GET['supprAliasVirtuel']) && supprAliasVirtuelsPostfix($pdo,$_GET['supprAliasVirtuel'])) { if(isset($_GET['supprAliasVirtuel']) && !empty($_GET['supprAliasVirtuel']) && supprAliasVirtuelsBdd($pdo,$_GET['supprAliasVirtuel'])) {
header ("Location: /pages/gestion/administration.php?page=alias&succes=3"); header ("Location: /pages/gestion/administration.php?page=alias&succes=3");
die();
} }
else { else {
header ("Location: /pages/gestion/administration.php?page=alias&erreur=1"); header ("Location: /pages/gestion/administration.php?page=alias&erreur=1");
die();
} }
?> ?>

@ -15,7 +15,7 @@ if (testPrivileges()!="administrateur") {
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
if (isset($_POST['nom_domaine']) && !empty($_POST['nom_domaine'])) { if (isset($_POST['nom_domaine']) && !empty($_POST['nom_domaine'])) {
ajoutDomainePostfix($pdo,$_POST['nom_domaine']); ajoutDomaineBdd($pdo,$_POST['nom_domaine']);
header ("Location: /pages/gestion/administration.php?page=domaines&succes=5"); header ("Location: /pages/gestion/administration.php?page=domaines&succes=5");
die(); die();
} }

@ -13,13 +13,13 @@ if (testPrivileges()!="administrateur") {
} }
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesBdd($pdo);
if (isset($_POST['choix_domaine_defaut']) && !empty($_POST['choix_domaine_defaut'])) { if (isset($_POST['choix_domaine_defaut']) && !empty($_POST['choix_domaine_defaut'])) {
foreach ($liste_domaines as $domaine_cles => $domaine_valeurs){ foreach ($liste_domaines as $domaine_cles => $domaine_valeurs){
// Vérification de l'existance du domaine renseigné par l'utilisateur // Vérification de l'existance du domaine renseigné par l'utilisateur
if ($_POST['choix_domaine_defaut'] == $domaine_valeurs['domaine']) { if ($_POST['choix_domaine_defaut'] == $domaine_valeurs['domaine']) {
changeDomaineDefautPostfix($pdo,$_POST['choix_domaine_defaut']); changeDomaineDefautBdd($pdo,$_POST['choix_domaine_defaut']);
header ("Location: /pages/gestion/administration.php?page=domaines&succes=8"); header ("Location: /pages/gestion/administration.php?page=domaines&succes=8");
die(); die();
} }

@ -12,7 +12,8 @@ if (testPrivileges()!="administrateur") {
} }
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
modifEtatDomainesPostfix($pdo,$_POST); modifEtatDomainesBdd($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=domaines&succes=6"); header ("Location: /pages/gestion/administration.php?page=domaines&succes=6");
die();
?> ?>

@ -12,11 +12,13 @@ if (testPrivileges()!="administrateur") {
} }
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
if(isset($_GET['supprDomaine']) && !empty($_GET['supprDomaine']) && supprDomainesPostfix($pdo,$_GET['supprDomaine'])) { if(isset($_GET['supprDomaine']) && !empty($_GET['supprDomaine']) && supprDomainesBdd($pdo,$_GET['supprDomaine'])) {
header ("Location: /pages/gestion/administration.php?page=domaines&succes=7"); header ("Location: /pages/gestion/administration.php?page=domaines&succes=7");
die();
} }
else { else {
header ("Location: /pages/gestion/administration.php?page=domaines&erreur=5"); header ("Location: /pages/gestion/administration.php?page=domaines&erreur=5");
die();
} }
?> ?>

@ -12,7 +12,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/import_export.p
// Permet le contrôle du domaine des alias virtuels du CSV de l'utilisateur // Permet le contrôle du domaine des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesBdd($pdo);
// Permet le contrôle des alias virtuels du CSV de l'utilisateur // Permet le contrôle des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
@ -31,7 +31,7 @@ if (isset($_FILES['import_alias_virtuels_csv']) && !empty($_FILES['import_alias_
// Vérification de la cohérence de l'état d'activation de l'alias virtuel soumis // 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) { if ($donnees_csv[3]==0 || $donnees_csv[3]==1) {
// Omission des doublons // Omission des doublons
$liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo); $liste_alias_virtuels = listeAliasVirtuelsBdd($pdo);
if (!in_array($donnees_csv[1],array_column($liste_alias_virtuels,'courriel'))) { if (!in_array($donnees_csv[1],array_column($liste_alias_virtuels,'courriel'))) {
importAliasVirtuelsUtilisateur($pdo,$donnees_csv[1],$_SESSION['pseudo_utilisateur'],$donnees_csv[3]); importAliasVirtuelsUtilisateur($pdo,$donnees_csv[1],$_SESSION['pseudo_utilisateur'],$donnees_csv[3]);
} }

@ -15,7 +15,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/import_export.p
// Permet le contrôle du domaine des alias virtuels du CSV de l'utilisateur // Permet le contrôle du domaine des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/domaines.php");
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesBdd($pdo);
// Permet le contrôle des alias virtuels du CSV de l'utilisateur // Permet le contrôle des alias virtuels du CSV de l'utilisateur
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
// Permet le contrôle des listes noires du CSV de l'utilisateur // Permet le contrôle des listes noires du CSV de l'utilisateur
@ -56,7 +56,7 @@ if (isset($_FILES['import_donnees_csv']) && !empty($_FILES['import_donnees_csv']
// Vérification de la cohérence des données de l'alias virtuel soumis // 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")) { if (!empty($donnees_csv[1]) && !empty($donnees_csv[2]) && ($donnees_csv[3]==="0" || $donnees_csv[3]==="1")) {
// Omission des doublons // Omission des doublons
$liste_alias_virtuels = listeTousAliasVirtuelsPostfix($pdo); $liste_alias_virtuels = listeTousAliasVirtuelsBdd($pdo);
if (!in_array($donnees_csv[1],array_column($liste_alias_virtuels,'courriel'))) { if (!in_array($donnees_csv[1],array_column($liste_alias_virtuels,'courriel'))) {
importDonneesMessagerie($pdo,"alias_virtuels",$donnees_csv); importDonneesMessagerie($pdo,"alias_virtuels",$donnees_csv);
} }
@ -72,7 +72,7 @@ if (isset($_FILES['import_donnees_csv']) && !empty($_FILES['import_donnees_csv']
// Vérification de la cohérence des données du domaine soumis // 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")) { if (!empty($donnees_csv[1]) && ($donnees_csv[2]==="0" || $donnees_csv[2]==="1") && ($donnees_csv[3]==="0" || $donnees_csv[3]==="1")) {
// Omission des doublons // Omission des doublons
$liste_domaines = listeDomainesPostfix($pdo); $liste_domaines = listeDomainesBdd($pdo);
if (!in_array($donnees_csv[1],array_column($liste_domaines,'domaine'))) { if (!in_array($donnees_csv[1],array_column($liste_domaines,'domaine'))) {
importDonneesMessagerie($pdo,"domaines",$donnees_csv); importDonneesMessagerie($pdo,"domaines",$donnees_csv);
} }
@ -88,7 +88,7 @@ if (isset($_FILES['import_donnees_csv']) && !empty($_FILES['import_donnees_csv']
// Vérification de la cohérence des données de la liste noire destinataire soumise // 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")) { if (!empty($donnees_csv[1]) && ($donnees_csv[2]==="REJECT" || $donnees_csv[2]==="DEFER") && ($donnees_csv[3]==="0" || $donnees_csv[3]==="1")) {
// Omission des doublons // Omission des doublons
$liste_entrees_liste_noires_dst=listeEntreeListeNoireDstPostfix($pdo); $liste_entrees_liste_noires_dst=listeEntreeListeNoireDstBdd($pdo);
if (!in_array($donnees_csv[1],array_column($liste_entrees_liste_noires_dst,'courriel'))) { if (!in_array($donnees_csv[1],array_column($liste_entrees_liste_noires_dst,'courriel'))) {
importDonneesMessagerie($pdo,"liste_noire_destinataires",$donnees_csv); importDonneesMessagerie($pdo,"liste_noire_destinataires",$donnees_csv);
} }
@ -104,7 +104,7 @@ if (isset($_FILES['import_donnees_csv']) && !empty($_FILES['import_donnees_csv']
// Vérification de la cohérence des données de la liste noire expediteur soumise // 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")) { if (!empty($donnees_csv[1]) && ($donnees_csv[2]==="554") && !empty($donnees_csv[3]) && ($donnees_csv[4]==="0" || $donnees_csv[4]==="1")) {
// Omission des doublons // Omission des doublons
$liste_entrees_liste_noires_exp=listeEntreeListeNoireExpPostfix($pdo); $liste_entrees_liste_noires_exp=listeEntreeListeNoireExpBdd($pdo);
if (!in_array($donnees_csv[1],array_column($liste_entrees_liste_noires_exp,'courriel'))) { if (!in_array($donnees_csv[1],array_column($liste_entrees_liste_noires_exp,'courriel'))) {
importDonneesMessagerie($pdo,"liste_noire_expediteurs",$donnees_csv); importDonneesMessagerie($pdo,"liste_noire_expediteurs",$donnees_csv);
} }
@ -120,7 +120,7 @@ if (isset($_FILES['import_donnees_csv']) && !empty($_FILES['import_donnees_csv']
// Vérification de la cohérence des données de l'utilisateur soumis // 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")) { 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 // Omission des doublons
$liste_utilisateurs=listeUtilisateursPostfix($pdo); $liste_utilisateurs=listeTousUtilisateursBdd($pdo);
if (!in_array($donnees_csv[1],array_column($liste_utilisateurs,'utilisateur'))) { if (!in_array($donnees_csv[1],array_column($liste_utilisateurs,'utilisateur'))) {
importDonneesMessagerie($pdo,"utilisateurs",$donnees_csv); importDonneesMessagerie($pdo,"utilisateurs",$donnees_csv);
} }

@ -16,7 +16,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.p
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'])) { 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'])) {
if ($_POST['choix_action_entree_liste_noire_dst']=="REJECT" || $_POST['choix_action_entree_liste_noire_dst']=="DEFER") { if ($_POST['choix_action_entree_liste_noire_dst']=="REJECT" || $_POST['choix_action_entree_liste_noire_dst']=="DEFER") {
ajoutEntreeListeNoireDstPostfix($pdo,$_POST['courriel_entree_liste_noire_dst'],$_POST['choix_action_entree_liste_noire_dst']); ajoutEntreeListeNoireDstBdd($pdo,$_POST['courriel_entree_liste_noire_dst'],$_POST['choix_action_entree_liste_noire_dst']);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=9"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=9");
die(); die();
} }

@ -13,7 +13,7 @@ if (testPrivileges()!="administrateur") {
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if (isset($_POST) && !empty($_POST)) { if (isset($_POST) && !empty($_POST)) {
modifEntreeListeNoireDstPostfix($pdo,$_POST); modifEntreeListeNoireDstBdd($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=10"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=10");
die(); die();
} }

@ -12,11 +12,13 @@ if (testPrivileges()!="administrateur") {
} }
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if(isset($_GET['supprEntreeListeNoireDst']) && !empty($_GET['supprEntreeListeNoireDst']) && supprEntreeListeNoireDstPostfix($pdo,$_GET['supprEntreeListeNoireDst'])) { if(isset($_GET['supprEntreeListeNoireDst']) && !empty($_GET['supprEntreeListeNoireDst']) && supprEntreeListeNoireDstBdd($pdo,$_GET['supprEntreeListeNoireDst'])) {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=11"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&succes=11");
die();
} }
else { else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=11"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=11");
die();
} }
?> ?>

@ -16,7 +16,7 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.p
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'])) { 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'])) {
if ($_POST['choix_code_retour_entree_liste_noire_exp']==554) { if ($_POST['choix_code_retour_entree_liste_noire_exp']==554) {
ajoutEntreeListeNoireExpPostfix($pdo,$_POST['courriel_entree_liste_noire_exp'],$_POST['choix_code_retour_entree_liste_noire_exp']); ajoutEntreeListeNoireExpBdd($pdo,$_POST['courriel_entree_liste_noire_exp'],$_POST['choix_code_retour_entree_liste_noire_exp']);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=12"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=12");
die(); die();
} }

@ -13,7 +13,7 @@ if (testPrivileges()!="administrateur") {
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if (isset($_POST) && !empty($_POST)) { if (isset($_POST) && !empty($_POST)) {
modifEntreeListeNoireExpPostfix($pdo,$_POST); modifEntreeListeNoireExpBdd($pdo,$_POST);
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=13"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=13");
die(); die();
} }

@ -12,11 +12,13 @@ if (testPrivileges()!="administrateur") {
} }
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/listes_noires.php");
if(isset($_GET['supprEntreeListeNoireExp']) && !empty($_GET['supprEntreeListeNoireExp']) && supprEntreeListeNoireExpPostfix($pdo,$_GET['supprEntreeListeNoireExp'])) { if(isset($_GET['supprEntreeListeNoireExp']) && !empty($_GET['supprEntreeListeNoireExp']) && supprEntreeListeNoireExpBdd($pdo,$_GET['supprEntreeListeNoireExp'])) {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=14"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&succes=14");
die();
} }
else { else {
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=15"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=15");
die();
} }
?> ?>

@ -0,0 +1,45 @@
<?php
/**
* Page de traitement permettant la création d'un utilisateur.
* Elle est appelée par le formulaire d'ajout d'un utilisateur (uniquement possible par un administrateur).
*/
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/domaines.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
if (isset($_POST['prefixe_utilisateur']) && isset($_POST['nom_utilisateur']) && !empty($_POST['nom_utilisateur']) && isset($_POST['choix_domaine_utilisateur']) && !empty($_POST['choix_domaine_utilisateur']) && isset($_POST['mot_de_passe_utilisateur']) && !empty($_POST['mot_de_passe_utilisateur']) && isset($_POST['nom_complet_utilisateur']) && isset($_POST['choix_privilege_utilisateur']) && !empty($_POST['choix_privilege_utilisateur'])) {
$liste_domaines = listeDomainesBdd($pdo);
foreach ($liste_domaines as $domaine_cles => $domaine_valeurs){
// Vérification de l'existence du domaine renseigné par l'utilisateur
if ($_POST['choix_domaine_utilisateur'] === $domaine_valeurs['domaine']) {
if ($_POST['choix_privilege_utilisateur'] === 'utilisateur' || $_POST['choix_privilege_utilisateur'] === 'administrateur') {
ajoutUtilisateurBdd($pdo,$_POST['prefixe_utilisateur'],$_POST['nom_utilisateur'],$_POST['choix_domaine_utilisateur'],$_POST['mot_de_passe_utilisateur'],$_POST['nom_complet_utilisateur'],$_POST['choix_privilege_utilisateur']);
changeMotDePasseUtilisateurBdd($pdo,substr(htmlspecialchars($_POST['nom_utilisateur']."@".$_POST['choix_domaine_utilisateur']),0,100),trim($_POST['mot_de_passe_utilisateur']),trim($_POST['mot_de_passe_utilisateur']));
header ("Location: /pages/gestion/administration.php?page=utilisateurs&succes=20");
die();
}
else {
header ("Location: /pages/gestion/administration.php?page=utilisateurs&erreur=27");
die();
}
}
}
header ("Location: /pages/gestion/administration.php?page=utilisateurs&erreur=26");
die();
}
else {
header ("Location: /pages/gestion/administration.php?page=utilisateurs&erreur=26");
die();
}
?>

@ -12,7 +12,7 @@ testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); 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 ($_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']))) { if (changeMotDePasseUtilisateurBdd($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"); header ("Location: /pages/gestion/administration.php?page=parametres&succes=16");
die(); die();
} }
@ -22,8 +22,8 @@ if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouvea
} }
} }
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'])) { 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 (verificationMotDePasseUtilisateurBdd($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']))) { if (changeMotDePasseUtilisateurBdd($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"); header ("Location: /pages/gestion/administration.php?page=parametres&succes=16");
die(); die();
} }

@ -15,7 +15,7 @@ if (testPrivileges()!="administrateur") {
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouveau_prefixe'])) { if ($_SESSION['privilege_utilisateur']=="administrateur" && isset($_POST['nouveau_prefixe'])) {
changePrefixeUtilisateurPostfix($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['nouveau_prefixe'])); changePrefixeUtilisateurBdd($pdo,$_SESSION['pseudo_utilisateur'],trim($_POST['nouveau_prefixe']));
header ("Location: /pages/gestion/administration.php?page=parametres&succes=17"); header ("Location: /pages/gestion/administration.php?page=parametres&succes=17");
die(); die();
} }

@ -3,7 +3,7 @@
/** /**
* Page de traitement permettant le changement d'un utilisateur. * Page de traitement permettant le changement d'un utilisateur.
* Elle est appelée par le formulaire de changement d'un utilisateur (uniquement possible par un administrateur). * Elle est appelée par le formulaire de changement d'un utilisateur (uniquement possible par un administrateur).
* Elle effectué ce changement en surchargeant la valeur de session relative à l'identité de l'utilisateur connecté. * Elle effectue ce changement en surchargeant la valeur de session relative à l'identité de l'utilisateur connecté.
*/ */
session_start(); session_start();

@ -10,6 +10,9 @@ session_start ();
if (!empty($_GET['succes'])) { if (!empty($_GET['succes'])) {
$succes=$_GET['succes']; $succes=$_GET['succes'];
} }
elseif (!empty($_GET['erreur'])) {
$erreur=$_GET['erreur'];
}
// Destruction des variables de la session // Destruction des variables de la session
session_unset(); session_unset();
// Destruction de la session // Destruction de la session
@ -21,7 +24,12 @@ if (!empty($succes)) {
header('location: /pages/visiteurs/formulaire_accueil.php?succes='.$succes); header('location: /pages/visiteurs/formulaire_accueil.php?succes='.$succes);
die(); die();
} }
elseif (!empty($erreur)) {
header('location: /pages/visiteurs/formulaire_accueil.php?erreur='.$erreur);
die();
}
// Redirection de l'utilisateur vers la page d'authentifiaction // Redirection de l'utilisateur vers la page d'authentifiaction
header('location: /pages/visiteurs/formulaire_accueil.php?succes=15'); header('location: /pages/visiteurs/formulaire_accueil.php?succes=15');
die(); die();
?> ?>

@ -0,0 +1,52 @@
<?php
/**
* Page de traitement permettant la modification des informations des utilisateurs.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
$liste_utilisateurs = listeTousUtilisateursBdd($pdo);
foreach ($liste_utilisateurs as $enieme_utilisateur_liste => $infos_utilisateur_liste){
// Vérification de la correspondance entre l'ID de l'utilisateur soumis par formulaire avec celui en base de données (évite l'usurpation d'utilisateurs)
if (isset($_POST['utilisateur'][$enieme_utilisateur_liste]['id_utilisateur']) && $_POST['utilisateur'][$enieme_utilisateur_liste]['id_utilisateur'] === $infos_utilisateur_liste['id']) {
if (isset($_POST['utilisateur'][$enieme_utilisateur_liste]['etat_utilisateur']) && isset($_POST['utilisateur'][$enieme_utilisateur_liste]['nom_complet_utilisateur']) && isset($_POST['utilisateur'][$enieme_utilisateur_liste]['prefixe_utilisateur']) && isset($_POST['utilisateur'][$enieme_utilisateur_liste]['choix_privilege_utilisateur']) && isset($_POST['utilisateur'][$enieme_utilisateur_liste]['mot_de_passe_utilisateur']) && isset($_POST['utilisateur'][$enieme_utilisateur_liste]['confirmation_mot_de_passe_utilisateur'])) {
// Vérification de l'existence de changements pour l'utilisateur parcouru. Cette condition évite de réécrire les données inchangées des utilisateurs non modifiés
if ($infos_utilisateur_liste['active'] != $_POST['utilisateur'][$enieme_utilisateur_liste]['etat_utilisateur'] || $infos_utilisateur_liste['nom_complet'] != $_POST['utilisateur'][$enieme_utilisateur_liste]['nom_complet_utilisateur'] || $infos_utilisateur_liste['prefixe'] != $_POST['utilisateur'][$enieme_utilisateur_liste]['prefixe_utilisateur'] || $infos_utilisateur_liste['privilege'] != $_POST['utilisateur'][$enieme_utilisateur_liste]['choix_privilege_utilisateur'] || !empty($_POST['utilisateur'][$enieme_utilisateur_liste]['mot_de_passe_utilisateur'])) {
// Vérification de la validité des informations de privilèges et d'état soumises au formulaire
if (($_POST['utilisateur'][$enieme_utilisateur_liste]['choix_privilege_utilisateur'] === "utilisateur" || $_POST['utilisateur'][$enieme_utilisateur_liste]['choix_privilege_utilisateur'] === "administrateur") && ($_POST['utilisateur'][$enieme_utilisateur_liste]['etat_utilisateur'] === "0" || $_POST['utilisateur'][$enieme_utilisateur_liste]['etat_utilisateur'] === "1")) {
$nouvelles_données_utilisateur=array(
"id_utilisateur" => $_POST['utilisateur'][$enieme_utilisateur_liste]['id_utilisateur'],
"nom_utilisateur" => $infos_utilisateur_liste['utilisateur'],
"etat_utilisateur" => $_POST['utilisateur'][$enieme_utilisateur_liste]['etat_utilisateur'],
"nom_complet_utilisateur" => $_POST['utilisateur'][$enieme_utilisateur_liste]['nom_complet_utilisateur'],
"prefixe_utilisateur" => $_POST['utilisateur'][$enieme_utilisateur_liste]['prefixe_utilisateur'],
"choix_privilege_utilisateur" => $_POST['utilisateur'][$enieme_utilisateur_liste]['choix_privilege_utilisateur'],
);
// Sécurité empêchant l'administrateur connecté de se désactiver lui-même
if ($nouvelles_données_utilisateur['nom_utilisateur'] === $_SESSION['pseudo_connexion_utilisateur']) {
$nouvelles_données_utilisateur['etat_utilisateur'] = "1";
}
modifUtilisateursBdd($pdo,$nouvelles_données_utilisateur);
// Changement du mot de passe de l'utilisateur
if (!empty($_POST['utilisateur'][$enieme_utilisateur_liste]['mot_de_passe_utilisateur']) && !empty($_POST['utilisateur'][$enieme_utilisateur_liste]['confirmation_mot_de_passe_utilisateur']) && $_POST['utilisateur'][$enieme_utilisateur_liste]['mot_de_passe_utilisateur'] === $_POST['utilisateur'][$enieme_utilisateur_liste]['confirmation_mot_de_passe_utilisateur']) {
changeMotDePasseUtilisateurBdd($pdo,$nouvelles_données_utilisateur['nom_utilisateur'],$_POST['utilisateur'][$enieme_utilisateur_liste]['mot_de_passe_utilisateur'],$_POST['utilisateur'][$enieme_utilisateur_liste]['confirmation_mot_de_passe_utilisateur']);
}
}
}
// Si aucun changement sur l'utilisateur parcouru, ne rien faire et passer au suivant
}
}
}
header ("Location: /pages/gestion/administration.php?page=utilisateurs&succes=22");
die();
?>

@ -0,0 +1,35 @@
<?php
/**
* Page de traitement permettant la suppression d'un utilisateur.
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/utilisateurs.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/alias_virtuels.php");
$pseudo_utilisateur_bdd=listeUtilisateurBdd($pdo,$_GET['supprUtilisateur']);
if(isset($_GET['supprUtilisateur']) && !empty($_GET['supprUtilisateur']) && supprTousAliasVirtuelsUtilisateurBdd($pdo,$_GET['supprUtilisateur'])) {
if (supprUtilisateursBdd($pdo,$_GET['supprUtilisateur'])) {
// Si l'utilisateur à modifier a été changé via la liste déroulante dédiée sur celui venant d'être supprimé, ce paramètre est réinitialisé à sa valeur par défaut pour ne plus éditer les valeurs de l'utilisateur n'existant plus
if ($_SESSION['pseudo_utilisateur']===$pseudo_utilisateur_bdd[0]['utilisateur']) {
$_SESSION['pseudo_utilisateur']=$_SESSION['pseudo_connexion_utilisateur'];
}
header ("Location: /pages/gestion/administration.php?page=utilisateurs&succes=21");
die();
}
else {
header ("Location: /pages/gestion/administration.php?page=utilisateurs&erreur=28");
die();
}
}
else {
header ("Location: /pages/gestion/administration.php?page=utilisateurs&erreur=29");
die();
}
?>
Loading…
Cancel
Save