Merge branch 'nmorin' into develop

pull/5/head
nmorin 3 years ago
commit e7964aa035

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,485 @@
/*!
* Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr /* rtl:ignore */;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,482 @@
/*!
* Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
:root {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg-rgb: 255, 255, 255;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-bg: #fff;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
background-color: currentColor;
border: 0;
opacity: 0.25;
}
hr:not([size]) {
height: 1px;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-bs-original-title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.2em;
background-color: #fcf8e3;
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
direction: ltr ;
unicode-bidi: bidi-override;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: #d63384;
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 0.875em;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
font-weight: 700;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: #6c757d;
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]::-webkit-calendar-picker-indicator {
display: none;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: textfield;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
}
::file-selector-button {
font: inherit;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,18 +1,28 @@
/* Style concernant la confirmation de suppression d'un alias virtuel */
.confirmation-suppression {
display: none;
color: #e23026;
color: #fff;
text-align: center;
text-decoration: none;
background-color: #dc3545;
}
.confirmation-suppression:hover {
color: #fff;
background-color: #bb2d3b;
border-color: #b02a37;
}
.input-checkbox-supprimer-valeur:checked ~ .confirmation-suppression {
display: inline;
}
.input-label-supprimer-valeur {
/*.input-label-supprimer-valeur {
color: #ffffff;
background: #e23026;
padding: 0.5rem 1rem;
border-radius: 0.5rem;
}
}*/
.visuellement-cache {
position: absolute;
@ -23,4 +33,4 @@
* https://stackoverflow.com/questions/6019845/show-hide-div-on-click-with-css
* https://dabblet.com/gist/1506530
* https://css-tricks.com/the-checkbox-hack/
*/
*/

@ -0,0 +1,49 @@
.champ-interrupteur {
display: flex;
overflow: hidden;
}
.champ-interrupteur input {
position: absolute !important;
clip: rect(0, 0, 0, 0);
height: 1px;
width: 1px;
border: 0;
overflow: hidden;
}
.champ-interrupteur label {
background-color: #e4e4e4;
border: 1px solid rgba(0, 0, 0, 0.2);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);
transition: all 0.1s ease-in-out;
width: 38px;
height: 34px;
}
.champ-interrupteur label:hover {
cursor: pointer;
}
.champ-interrupteur input:checked + .interrupteur-allumer {
background-color: #0d6efd;
box-shadow: none;
}
.champ-interrupteur input:checked + .interrupteur-eteint {
background-color: #dc3545;
box-shadow: none;
}
.champ-interrupteur label:first-of-type {
border-radius: 4px 0 0 4px;
}
.champ-interrupteur label:last-of-type {
border-radius: 0 4px 4px 0;
}
.champ-interrupteur.disabled {
pointer-events: none;
opacity: .65;
}

@ -0,0 +1,76 @@
body {
background-color: #eee;
margin-bottom: 100px;
}
#contenu_auth {
max-width: 380px;
margin: auto;
}
#contenu_auth #envoyer {
width: 100%;
}
#logo-accueil {
text-align: center;
margin: 50px;
}
#logo-accueil img {
width: 200px;
}
#logo-accueil h1 {
color: #FFF;
font-size: 40pt;
}
.alert img {
height: 1.5em;
margin-right: 0.3em;
}
.alert {
padding: 10px;
}
.bouton-flotant {
position: fixed;
bottom: 20px;
right: 20px;
background-color: #0d6efd;
color: white;
border-radius: 50%;
width: 60px;
height: 60px;
border: 2px solid #0d6efd;
}
.contour-pastille {
margin-top: 5px;
}
.interieur-pastille {
margin: 10px;
}
.titre-pastille {
width: calc(100% - 122px);
text-align: center;
padding-top: 4px;
padding-left: 10px;
padding-right: 10px;
}
.bouton-ajout{
padding: .375rem .475rem;
}
.alert {
margin-bottom: 0;
}
.interieur-pastille-bleu {
background-color: #cfe2ff;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -7,21 +7,21 @@
**/
function filtreValeurs() {
// Déclaration des variables
var input, filter, ul, li, a, i, txtValue;
var input, filter, divgroupe, divunitaire, a, i, txtValue;
input = document.getElementById('nom_pour_filtre');
filter = input.value.toUpperCase();
ul = document.getElementById("liste_pour_filtre");
li = ul.getElementsByTagName('li');
divgroupe = document.getElementById("liste_pour_filtre");
divunitaire = divgroupe.getElementsByClassName('col-md-6');
// Pour chaque "<li>", comparer le contenu (actualisé à chaque frappe) du "<input>" "nom_alias" avec le texte du "<p>" qu'il contient
// Pour chaque "divunitaire", comparer le contenu (actualisé à chaque frappe) du "<input>" "nom_alias" avec le texte du "<p>" qu'il contient
// Si le contenu du champ de texte est vide, n'en masquer aucun. Si le motif correspond, masquer les autres
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("p")[0];
for (i = 0; i < divunitaire.length; i++) {
a = divunitaire[i].getElementsByTagName("span")[0];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
divunitaire[i].style.display = "";
} else {
li[i].style.display = "none";
divunitaire[i].style.display = "none";
}
}
}
@ -31,4 +31,4 @@ function filtreValeurs() {
**/
function autoSoumission() {
document.getElementById("form_choix_utilisateur").submit();
}
}

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#664d03" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-triangle"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>

After

Width:  |  Height:  |  Size: 419 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#842029" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-alert-triangle"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>

After

Width:  |  Height:  |  Size: 419 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0f5132" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-check-circle"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>

After

Width:  |  Height:  |  Size: 323 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-corner-down-right"><polyline points="15 10 20 15 15 20"></polyline><path d="M4 4v7a4 4 0 0 0 4 4h12"></path></svg>

After

Width:  |  Height:  |  Size: 318 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#084298" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-info"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>

After

Width:  |  Height:  |  Size: 342 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>

After

Width:  |  Height:  |  Size: 371 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-mail"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>

After

Width:  |  Height:  |  Size: 354 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-plus"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>

After

Width:  |  Height:  |  Size: 296 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-save"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"></path><polyline points="17 21 17 13 7 13 7 21"></polyline><polyline points="7 3 7 8 15 8"></polyline></svg>

After

Width:  |  Height:  |  Size: 384 B

@ -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-send"><line x1="22" y1="2" x2="11" y2="13"></line><polygon points="22 2 15 22 11 13 2 9 22 2"></polygon></svg>

After

Width:  |  Height:  |  Size: 309 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-trash-2"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg>

After

Width:  |  Height:  |  Size: 440 B

@ -1,37 +1,60 @@
<?php
/**
* Page importé intégrant le menu de navigation dans la page d'administration centrale.
*/
echo <<<_HEREDOC_
<div>
<table>
<tr>
<td><a href="/pages/gestion/administration.php?page=accueil">Courtail</a></td>
<td><a href="/pages/gestion/administration.php?page=alias">Alias</a></td>
_HEREDOC_;
if (testPrivileges()=="administrateur") {
echo <<<_HEREDOC_
<td><a href="/pages/gestion/administration.php?page=domaines">Domaines</a></td>
<td><a href="/pages/gestion/administration.php?page=listes_noires">Listes noires</a></td>
_HEREDOC_;
}
echo <<<_HEREDOC_
<td><a href="/pages/gestion/administration.php?page=parametres">Paramètres</a></td>
<td><a href="/services/traitements/utilisateurs/deconnexion.php">Déconnexion</a></td>
</tr>
</table>
</div>
_HEREDOC_;
if (isset($_GET['page']) && !empty($_GET['page'])) {
?>
<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #343a40;">
<div class="container-fluid">
<a class="navbar-brand" href="/pages/gestion/administration.php?page=accueil">Courtail</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link <?php if ($_GET['page'] == 'accueil' || $_GET['page'] == 'alias') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=alias">Alias</a>
</li>
<?php if (testPrivileges()=="administrateur") { ?>
<li class="nav-item">
<a class="nav-link <?php if ($_GET['page'] == 'domaines') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=domaines">Domaines</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="/pages/gestion/administration.php?page=listes_noires&sousPage=destinataires" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Listes noires
</a>
<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=expediteurs">Expéditeurs</a></li>
</ul>
</li>
<?php } ?>
</ul>
</div>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link <?php if ($_GET['page'] == 'parametres') {echo 'active';} ?>" href="/pages/gestion/administration.php?page=parametres">Paramètres</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/services/traitements/utilisateurs/deconnexion.php">Déconnexion</a>
</li>
</ul>
</div>
</div>
</nav>
<?php
}
if (isset($_GET['message']) && !empty($_GET['message'])) {
/*if (isset($_GET['message']) && !empty($_GET['message'])) {
switch ($_GET['message']) {
case "bienvenue":
echo "<p class=\"messages_retour_ko\">Bienvenue ".$_SESSION['nom_utilisateur'].". Vous êtes authentifié en tant qu'".$_SESSION['privilege_utilisateur'].".</p>";
echo "<div class=\"alert alert-success\" role=\"alert\">Bienvenue ".$_SESSION['nom_utilisateur'].". Vous êtes authentifié en tant qu'".$_SESSION['privilege_utilisateur'].".</div>";
break;
}
}
}*/
?>
?>

@ -2,9 +2,12 @@
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Courtail - Portail des courriels</title>
<link href="/fichiers/css/bootstrap.css" rel="stylesheet">
<link href="/fichiers/css/bootstrap.min.css" rel="stylesheet">
<link href="/fichiers/css/confirmation.css" rel="stylesheet">
<link href="/fichiers/css/personalisation.css" rel="stylesheet">
<link href="/fichiers/css/interrupteurs.css" rel="stylesheet">
<link rel="icon" href="/fichiers/images/favicon.ico" />
</head>
<body>
<body>

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

@ -1,31 +0,0 @@
-- Alias (ne doivent pas apparaître)
INSERT INTO postfix_alias (alias,destination,active) VALUES ("toto","test1",1);
INSERT INTO postfix_alias (alias,destination,active) VALUES ("tata","test2",0);
INSERT INTO postfix_alias (alias,destination,active) VALUES ("titi","test3",1);
-- Alias virtuels
INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES ("toto@toto.fr","comptable@toto.fr",1);
INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES ("toto@toto.fr","medecin@toto.fr",0);
INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES ("toto@toto.fr","supermacher@toto.fr",1);
INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES ("tata@toto.fr","fleuriste@toto.fr",0);
INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES ("tata@toto.fr","coiffeur@toto.fr",0);
INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES ("titi@toto.fr","promos@toto.fr",1);
-- Domaines secondaires
INSERT INTO postfix_domaines (domaine,active,defaut) VALUES ("toto.fr",1,1);
INSERT INTO postfix_domaines (domaine,active) VALUES ("tata.fr",1);
INSERT INTO postfix_domaines (domaine,active) VALUES ("titi.fr",0);
-- Listes noires destinataires
INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES ("root@mail.exemple.fr","REJECT",1);
INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES ("git@mail.exemple.fr","REJECT",1);
INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES ("liste@mail.exemple.fr","REJECT",1);
-- Listes noires expéditeurs
INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("tata@toto.fr",554,"Parle à ma main, ma tête est malade.",0);
INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("bob@titi.fr",554,"Parle à ma main, ma tête est malade.",1);
INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("roland@tata.fr",554,"Parle à ma main, ma tête est malade.",1);
-- Listes utilisateurs
INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,uid,gid,privilege,active) VALUES ("toto","toto","Alphonse Pastacaisse",5000,5000,"administrateur",1);
INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,uid,gid,privilege, active) VALUES ("tata", "tata", "Jonathan Quesquiestjaune", 5000, 5000, "utilisateur", 1);

@ -2,11 +2,15 @@
chemin_script=$(dirname "$0")
mkdir -p /etc/postfix/db
rm -f /etc/postfix/db/postfix.sqlite
mkdir -p /etc/postfix/bdd
rm -f /etc/postfix/bdd/postfix.sqlite
# Création des tables
sqlite3 /etc/postfix/db/postfix.sqlite < "${chemin_script}"/postfix.sql
echo "CREATION TABLES"
sqlite3 /etc/postfix/bdd/postfix.sqlite < "${chemin_script}"/postfix_tables.sql
# Création des données
sqlite3 /etc/postfix/db/postfix.sqlite < "${chemin_script}"/données.sql
echo "CREATION DONNÉES"
sqlite3 /etc/postfix/bdd/postfix.sqlite < "${chemin_script}"/postfix_données.sql
chown -R www-data: /etc/postfix/bdd

@ -0,0 +1,34 @@
-- Alias (ne doivent pas apparaître)
INSERT INTO postfix_alias (alias,destination,active) VALUES ("toto","test1",1);
INSERT INTO postfix_alias (alias,destination,active) VALUES ("tata","test2",0);
INSERT INTO postfix_alias (alias,destination,active) VALUES ("titi","test3",1);
-- Alias virtuels
INSERT INTO postfix_alias_virtuels (destination,courriel,active) VALUES ("toto@exemple.fr","comptable@exemple.fr",1);
INSERT INTO postfix_alias_virtuels (destination,courriel,active) VALUES ("toto@exemple.fr","medecin@exemple.fr",0);
INSERT INTO postfix_alias_virtuels (destination,courriel,active) VALUES ("toto@exemple.fr","supermacher@exemple.fr",1);
INSERT INTO postfix_alias_virtuels (destination,courriel,active) VALUES ("tata@exemple.fr","fleuriste@exemple.fr",0);
INSERT INTO postfix_alias_virtuels (destination,courriel,active) VALUES ("tata@exemple.fr","coiffeur@exemple.fr",0);
INSERT INTO postfix_alias_virtuels (destination,courriel,active) VALUES ("titi@exemple.fr","promos@exemple.fr",1);
-- Domaines secondaires
INSERT INTO postfix_domaines (domaine,active,defaut) VALUES ("toto.fr",1,0);
INSERT INTO postfix_domaines (domaine,active,defaut) VALUES ("tata.fr",1,0);
INSERT INTO postfix_domaines (domaine,active,defaut) VALUES ("titi.fr",0,0);
-- Listes noires destinataires
INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES ("root@mail.exemple.fr","REJECT",1);
INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES ("git@mail.exemple.fr","REJECT",1);
INSERT INTO postfix_liste_noire_destinataires (courriel,action,active) VALUES ("liste@mail.exemple.fr","REJECT",1);
-- Listes noires expéditeurs
INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("tata@exemple.fr",554,"Parle à ma main, ma tête est malade.",0);
INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("bob@titi.fr",554,"Parle à ma main, ma tête est malade.",1);
INSERT INTO postfix_liste_noire_expediteurs (courriel,code_retour,message,active) VALUES ("roland@tata.fr",554,"Parle à ma main, ma tête est malade.",1);
-- Listes utilisateurs
INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,active) VALUES ("toto@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto
Dupont","exemple.fr/toto/",3000,3000,"administrateur",1);
INSERT INTO postfix_utilisateurs (utilisateur,mot_de_passe,nom_complet,rep_perso,uid,gid,privilege,prefixe,active) VALUES ("tata@exemple.fr","{SHA512-CRYPT}$6$xWfisyC6fLawFcBr$zLm4hfRfs6Pn0RKArnyWcgliBy6lpnRUkDHfHMkvskShfLiv4pRIU6XC5ry0ysd.DeKhoAiZUfnNdmwIai2k50","Toto
Dupont","exemple.fr/tata/",3000,3000,"utilisateur","ta.",1)

@ -6,14 +6,14 @@ CREATE TABLE IF NOT EXISTS postfix_alias (
);
CREATE TABLE IF NOT EXISTS postfix_alias_virtuels (
id INTEGER PRIMARY KEY AUTOINCREMENT,
courriel TEXT NOT NULL,
courriel TEXT NOT NULL UNIQUE,
destination TEXT NOT NULL,
active INTEGER
);
CREATE TABLE IF NOT EXISTS postfix_domaines (
id INTEGER PRIMARY KEY AUTOINCREMENT,
domaine TEXT NOT NULL UNIQUE,
defaut INTEGER UNIQUE,
defaut BOOLEAN NOT NULL CHECK (defaut IN (0, 1)),
active INTEGER
);
CREATE TABLE IF NOT EXISTS postfix_liste_noire_destinataires (
@ -29,13 +29,15 @@ CREATE TABLE IF NOT EXISTS postfix_liste_noire_expediteurs (
message TEXT NOT NULL,
active INTEGER
);
CREATE TABLE IF NOT EXISTS postfix_utilisateurs (
CREATE TABLE postfix_utilisateurs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
utilisateur TEXT NOT NULL UNIQUE,
mot_de_passe TEXT NOT NULL,
nom_complet TEXT,
rep_perso TEXT NOT NULL,
uid INTEGER NOT NULL,
gid INTEGER NOT NULL,
privilege TEXT NOT NULL,
prefixe TEXT,
active INTEGER
);
);

@ -1,3 +1,3 @@
#!/bin/sh
docker build -t courtail ../
docker run -it -p 8080:80 courtail:latest
docker run -it -p 8080:80 courtail:latest

@ -6,10 +6,10 @@
*/
session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.php");
@ -22,6 +22,11 @@ if (isset($_GET['erreur']) && !empty($_GET['erreur'])) {
elseif (isset($_GET['succes']) && !empty($_GET['succes'])) {
retourneMessage('succes',$_GET['succes']);
}
elseif (isset($_GET['message']) && !empty($_GET['message'])) {
retourneMessage('messages',$_GET['message']);
}
echo "<div class=\"container-fluid\">";
/**
* Permet d'importer les fonctions de la page demandée par l'utilisateur sur le portail d'administration.
@ -53,6 +58,8 @@ else {
echo "<h1>Cette page n'existe pas.</h1>";
}
echo "</div>";
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php");
?>
?>

@ -6,7 +6,7 @@
* Elle ajoute à cette redirection un temps d'attente pour limiter la fréquence des tentatives ainsi qu'une variable dans l'URL permettant l'affichage d'un message d'explication sur la redirection.
*/
header ("Refresh: 5;URL=/pages/visiteurs/formulaire_accueil.php?erreur=1");
header ("Refresh: 5;URL=/pages/visiteurs/formulaire_accueil.php?erreur=17");
?>
@ -24,7 +24,7 @@ header ("Refresh: 5;URL=/pages/visiteurs/formulaire_accueil.php?erreur=1");
font-family: sans-serif;
font-size: 40px;
color: #FFF;
background-color: #1F527D;
background-color: #343a40;
text-align: center; }
.chargements{
@ -263,4 +263,4 @@ header ("Refresh: 5;URL=/pages/visiteurs/formulaire_accueil.php?erreur=1");
</section>
</div>
</body>
</html>
</html>

@ -1,48 +1,56 @@
<!-- Page d'accueil du portail.
-- Impose une authentification du visiteur pour continuer.
-- Redirige les tentative d'identification pour traitement et test de légitimité.
-->
<div id="contenu" class="contenu">
<div id="contenu_auth">
</br>
<table id="authentification">
<form method="post" action="/services/traitements/utilisateurs/identification.php">
<tr>
<td><label for="identifiant">Votre nom d'utilisateur :</label><br/></td>
<td><input type="email" name="identifiant" id="identifiant" required/></td>
</tr>
<tr>
<td><label for="mdp">Votre mot de passe :</label><br/></td>
<td><input type="password" name="mdp" id="mdp" required/></td>
</tr>
<tr>
<td><input class="envoyer" type="submit" value="envoyer"/></td>
</tr>
</form>
</table>
<?php
if (isset($_GET['erreur']) && !empty($_GET['erreur'])){
switch ($_GET['erreur']) {
case 1:
echo "<p class=\"messages_retour_ko\">Identifiant ou mot de passe incorrecte.</p>";
break;
case 2:
echo "<p class=\"messages_retour_ko\">Vous n'avez pas les privilèges nécessaires.</p>";
break;
}
<?php
/**
* Page d'accueil du portail.
* Impose une authentification du visiteur pour continuer.
* Redirige les tentative d'identification pour traitement et test de légitimité.
*/
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.php");
?>
<div id="contenu" class="contenu container">
<div id="logo-accueil" class="logo">
<img src="/fichiers/svg/send.svg" alt="courriel">
<h1>Courtail</h1>
</div>
<div class="card" id="contenu_auth">
<div class="card-body">
<?php
/**
* Affichage d'une bannière d'état sur l'action précedemment effectuée.
*/
if (isset($_GET['erreur']) && !empty($_GET['erreur'])) {
retourneMessage('erreurs',$_GET['erreur']);
}
elseif (isset($_GET['succes']) && !empty($_GET['succes'])){
switch ($_GET['succes']) {
case 1:
echo "<p class=\"messages_retour_ok\">Vous avez bien été déconnecté.</p>";
break;
}
elseif (isset($_GET['succes']) && !empty($_GET['succes'])) {
retourneMessage('succes',$_GET['succes']);
}
?>
?>
<form method="post" action="/services/traitements/utilisateurs/identification.php">
<div class="form-floating mb-3 mt-3">
<input type="email" name="identifiant" class="form-control" id="identifiant" placeholder="nom@example.fr" required/>
<label for="identifiant">Votre nom d'utilisateur</label>
</div>
<div class="form-floating mb-3">
<input type="password" name="mdp" class="form-control" id="mdp" placeholder="Mot de passe" required/>
<label for="mdp">Votre mot de passe</label>
</div>
<button id="envoyer" type="submit" class="btn btn-primary">envoyer</button>
</form>
</div>
</div>
</div>
</div>
<script>
const body = document.querySelector('body');
body.style.backgroundColor = '#343a40';
</script>
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php");
?>

@ -16,7 +16,7 @@ function retournePrefixeUtilisateurPostfix($pdo) {
$sql=$pdo->prepare($req);
$sql->bindValue(':utilisateur',$_SESSION['pseudo_utilisateur']);
$sql->execute();
$prefixe_utilisateur=$sql->fetchAll();
return $prefixe_utilisateur[0]['prefixe'];
}
@ -32,11 +32,11 @@ function retournePrefixeUtilisateurPostfix($pdo) {
function listeAliasVirtuelsPostfix($pdo) {
try {
// Filtre des alias virtuels de l'utilisateur courant
$req = 'SELECT * FROM postfix_alias_virtuels WHERE destination=:destination';
$req = 'SELECT * FROM postfix_alias_virtuels WHERE destination=:destination ORDER BY courriel ASC';
$sql=$pdo->prepare($req);
$sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']);
$sql->execute();
$liste_alias_virtuels = $sql->fetchAll();
return $liste_alias_virtuels;
}
@ -52,16 +52,16 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_
try {
// Insertion de l'alias virtuel entré par l'utilisateur et lié avec son adresse
$req='INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:alias_virtuel,:courriel,1)';
$sql=$pdo->prepare($req);
$sql->bindValue(':courriel',$_SESSION['pseudo_utilisateur']);
$sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurPostfix($pdo).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,49));
$sql->bindValue(':alias_virtuel',substr(htmlspecialchars(retournePrefixeUtilisateurPostfix($pdo).$nom_alias_virtuel."@".$choix_domaine_alias_virtuel),0,100));
$sql->execute();
if ($sql->rowCount() == 1){
return true;
}
else {
return false;
}
@ -69,7 +69,7 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_
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 "courriel" de la table "postif_alias_virtuels" est violée. L'alias envoyé via le formulaire par l'utilisateur a déjà été renseigné dans la base
header ("Location: /pages/gestion/administration.php?page=alias&erreur=3");
@ -97,7 +97,7 @@ function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
$compteModifs=0;
foreach ($retour_form as $id_alias_virtuel => $etat_alias_virtuel) {
$req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_alias_virtuel',$etat_alias_virtuel);
$sql->bindValue(':id_alias_virtuel',$id_alias_virtuel);
@ -108,7 +108,7 @@ function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
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");
@ -127,12 +127,12 @@ function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) {
try {
$req='DELETE FROM postfix_alias_virtuels WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_alias_virtuel',$suppr_alias_virtuel);
$sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']);
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
@ -143,7 +143,7 @@ function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) {
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");
@ -156,4 +156,4 @@ function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) {
}
}
?>
?>

@ -12,10 +12,10 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php")
function listeDomainesPostfix($pdo) {
try {
$req = 'SELECT * FROM postfix_domaines ORDER BY defaut DESC';
$sql=$pdo->prepare($req);
$sql->execute();
$liste_domaines = $sql->fetchAll();
return $liste_domaines;
}
@ -30,12 +30,21 @@ function listeDomainesPostfix($pdo) {
function retourneDomaineDefautPostfix($pdo) {
try {
$req = 'SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1';
$sql=$pdo->prepare($req);
$sql->execute();
$result = $sql ->fetchAll(PDO::FETCH_ASSOC);
$comptage = count($result);
$domaine_defaut = $sql->fetchAll();
return $domaine_defaut[0]['domaine'];
if($comptage == 1){
$domaine_defaut = $result;
return $domaine_defaut[0]['domaine'];;
}
else {
$domaine_defaut = "";
return $domaine_defaut;
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage());
@ -47,12 +56,12 @@ function retourneDomaineDefautPostfix($pdo) {
*/
function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) {
try {
// suppression du status de domaine par défaut sur tous les domaines pour s'assurer de l'unicité de ce paramètre à la requête suivante
// suppression du status de domaine par défaut sur tous les domaines pour s'assurer de l'unicité de ce paramètre à la requête suivante
$req = 'UPDATE postfix_domaines SET defaut=0';
$sql=$pdo->prepare($req);
$sql->execute();
// Définition du domaine renseigné par l'utilisateur et activation de celui-ci (au cas-où il ne l'était pas)
$req = 'UPDATE postfix_domaines SET defaut=1, active=1 WHERE domaine=:domaine';
@ -65,7 +74,7 @@ function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) {
$code_retour=$sql->errorInfo();
var_dump($code_retour);
die();
if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=domaines&erreur=4");
@ -86,15 +95,15 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
try {
// Insertion du domaine entré par l'administrateur
$req='INSERT INTO postfix_domaines (domaine,defaut,active) VALUES (:domaine,0,1)';
$sql=$pdo->prepare($req);
$sql->bindValue(':domaine',substr(htmlspecialchars($nom_domaine),0,49));
$sql->bindValue(':domaine',substr(htmlspecialchars($nom_domaine),0,100));
$sql->execute();
if ($sql->rowCount() == 1){
return true;
}
else {
return false;
}
@ -102,7 +111,7 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite.
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="23000") {
// Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "domaine" de la table "postfix_domaines" est violée. Le domaine envoyé via le formulaire par l'administrateur a déjà été renseigné dans la base
header ("Location: /pages/gestion/administration.php?page=domaines&erreur=7");
@ -130,7 +139,7 @@ function modifEtatDomainesPostfix($pdo,$retour_form) {
$compteModifs=0;
foreach ($retour_form as $id_domaine => $etat_domaine) {
$req='UPDATE postfix_domaines SET active=:etat_domaine WHERE id=:id_domaine AND defaut!=1';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_domaine',$etat_domaine);
$sql->bindValue(':id_domaine',$id_domaine);
@ -140,7 +149,7 @@ function modifEtatDomainesPostfix($pdo,$retour_form) {
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=domaines&erreur=4");
@ -159,11 +168,11 @@ function modifEtatDomainesPostfix($pdo,$retour_form) {
function supprDomainesPostfix($pdo,$suppr_domaine) {
try {
$req='DELETE FROM postfix_domaines WHERE id=:id_domaine AND defaut!=1';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_domaine',$suppr_domaine);
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
@ -174,7 +183,7 @@ function supprDomainesPostfix($pdo,$suppr_domaine) {
catch (\Exception $e) {
// Récupération du code de retour de la commande SQLite
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data
header ("Location: /pages/gestion/administration.php?page=domaines&erreur=4");
@ -187,4 +196,4 @@ function supprDomainesPostfix($pdo,$suppr_domaine) {
}
}
?>
?>

@ -6,17 +6,17 @@
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php");
/**
* Fonction listant les entrées de la liste noire des destinataires.
*/
function listeEntreeListeNoireDstPostfix($pdo) {
try {
$req = 'SELECT * FROM postfix_liste_noire_destinataires';
$sql=$pdo->prepare($req);
$sql->execute();
$liste_entree_liste_noire_dst = $sql->fetchAll();
return $liste_entree_liste_noire_dst;
}
@ -31,10 +31,10 @@ function listeEntreeListeNoireDstPostfix($pdo) {
function listeEntreeListeNoireExpPostfix($pdo) {
try {
$req = 'SELECT * FROM postfix_liste_noire_expediteurs';
$sql=$pdo->prepare($req);
$sql->execute();
$liste_entree_liste_noire_exp = $sql->fetchAll();
return $liste_entree_liste_noire_exp;
}
@ -51,14 +51,14 @@ function ajoutEntreeListeNoireDstPostfix($pdo,$courriel_entree_liste_noire_dst,$
// 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)';
$sql=$pdo->prepare($req);
$sql->bindValue(':courriel',substr(htmlspecialchars($courriel_entree_liste_noire_dst),0,49));
$sql->bindValue(':courriel',substr(htmlspecialchars($courriel_entree_liste_noire_dst),0,100));
$sql->bindValue(':action',$action_entree_liste_noire_dst);
$sql->execute();
if ($sql->rowCount() == 1){
return true;
}
else {
return false;
}
@ -66,7 +66,7 @@ function ajoutEntreeListeNoireDstPostfix($pdo,$courriel_entree_liste_noire_dst,$
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 "courriel" de la table "postfix_liste_noire_destinataires" est violée. L'adresse de destination envoyé via le formulaire par l'utilisateur a déjà été renseignée dans la base
header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=12");
@ -92,14 +92,14 @@ function ajoutEntreeListeNoireExpPostfix($pdo,$courriel_entree_liste_noire_exp,$
// 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)';
$sql=$pdo->prepare($req);
$sql->bindValue(':courriel',substr(htmlspecialchars($courriel_entree_liste_noire_exp),0,49));
$sql->bindValue(':courriel',substr(htmlspecialchars($courriel_entree_liste_noire_exp),0,100));
$sql->bindValue(':code_retour',$code_retour_entree_liste_noire_exp);
$sql->execute();
if ($sql->rowCount() == 1){
return true;
}
else {
return false;
}
@ -134,7 +134,7 @@ function modifEntreeListeNoireDstPostfix($pdo,$retour_form) {
$compteModifs=0;
foreach ($retour_form as $id_entree_liste_noire_dst => $etat_entree_liste_noire_dst) {
$req='UPDATE postfix_liste_noire_destinataires SET active=:etat_entree_liste_noire_dst WHERE id=:id_entree_liste_noire_dst';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_entree_liste_noire_dst',$etat_entree_liste_noire_dst);
$sql->bindValue(':id_entree_liste_noire_dst',$id_entree_liste_noire_dst);
@ -144,7 +144,7 @@ function modifEntreeListeNoireDstPostfix($pdo,$retour_form) {
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=listes_noires&sousPage=destinataires&erreur=10");
@ -167,7 +167,7 @@ function modifEntreeListeNoireExpPostfix($pdo,$retour_form) {
$compteModifs=0;
foreach ($retour_form as $id_entree_liste_noire_exp => $etat_entree_liste_noire_exp) {
$req='UPDATE postfix_liste_noire_expediteurs SET active=:etat_entree_liste_noire_exp WHERE id=:id_entree_liste_noire_exp';
$sql=$pdo->prepare($req);
$sql->bindValue(':etat_entree_liste_noire_exp',$etat_entree_liste_noire_exp);
$sql->bindValue(':id_entree_liste_noire_exp',$id_entree_liste_noire_exp);
@ -177,7 +177,7 @@ function modifEntreeListeNoireExpPostfix($pdo,$retour_form) {
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=listes_noires&sousPage=expediteurs&erreur=14");
@ -196,11 +196,11 @@ function modifEntreeListeNoireExpPostfix($pdo,$retour_form) {
function supprEntreeListeNoireDstPostfix($pdo) {
try {
$req='DELETE FROM postfix_liste_noire_destinataires WHERE id=:id_entree_liste_noire_dst';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_entree_liste_noire_dst',$_GET['supprEntreeListeNoireDst']);
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
@ -211,7 +211,7 @@ function supprEntreeListeNoireDstPostfix($pdo) {
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=listes_noires&sousPage=destinataires&erreur=4");
@ -230,11 +230,11 @@ function supprEntreeListeNoireDstPostfix($pdo) {
function supprEntreeListeNoireExpPostfix($pdo) {
try {
$req='DELETE FROM postfix_liste_noire_expediteurs WHERE id=:id_entree_liste_noire_exp';
$sql=$pdo->prepare($req);
$sql->bindValue(':id_entree_liste_noire_exp',$_GET['supprEntreeListeNoireExp']);
$sql->execute();
if($sql->rowCount() == 1){
return true;
}
@ -245,7 +245,7 @@ function supprEntreeListeNoireExpPostfix($pdo) {
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=listes_noires&sousPage=expediteurs&erreur=4");
@ -258,4 +258,4 @@ function supprEntreeListeNoireExpPostfix($pdo) {
}
}
?>
?>

@ -4,43 +4,67 @@
* Fonction affichant les messages de retour des traitements site lorsqu'elle est interrogée.
*/
function retourneMessage($type_message,$num_message) {
$liste_messages = array (
"succes" => array(
1 => "<p class=\"message_succes\">Succès : alias virtuel créé avec succès.</p>",
2 => "<p class=\"message_succes\">Succès : alias virtuel modifiés avec succès.</p>",
3 => "<p class=\"message_succes\">Succès : alias virtuel supprimé avec succès.</p>",
4 => "<p class=\"message_succes\">Succès : utilisateur changé en ".$_SESSION['pseudo_utilisateur']." avec succès.</p>",
5 => "<p class=\"message_succes\">Succès : domaine créé avec succès.</p>",
6 => "<p class=\"message_succes\">Succès : domaine modifiés avec succès.</p>",
7 => "<p class=\"message_succes\">Succès : domaine supprimé avec succès.</p>",
8 => "<p class=\"message_succes\">Succès : domaine défini par défaut avec succès.</p>",
9 => "<p class=\"message_succes\">Succès : l'entrée de liste noire destiataires a été créée avec succès.</p>",
10 => "<p class=\"message_succes\">Succès : l'état de l'entrée de liste noire destiataires a été modifié avec succès.</p>",
11 => "<p class=\"message_succes\">Succès : l'entrée de liste noire destinataires a été supprimée avec succès.</p>",
12 => "<p class=\"message_succes\">Succès : l'entrée de liste noire expéditeurs a été créée avec succès.</p>",
13 => "<p class=\"message_succes\">Succès : l'état de l'entrée de liste noire expéditeurs a été modifié avec succès.</p>",
14 => "<p class=\"message_succes\">Succès : l'entrée de liste noire expéditeurs a été supprimée avec succès.</p>"),
"erreurs" => array(
1 => "<p class=\"message_erreur\">Erreur : aucun alias virtuel supprimé.</p>",
2 => "<p class=\"message_erreur\">Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.</p>",
3 => "<p class=\"message_erreur\">Erreur : L'alias virtuel est déjà existant.</p>",
4 => "<p class=\"message_erreur\">Erreur : Code d'erreur générique (HY000) signifiant probablement que la base SQLite n'est pas accessible en écriture. Il faut que la base et le répertoire <i>bdd</i> appartiennent à <i>www-data</i>.</p>",
5 => "<p class=\"message_erreur\">Erreur : aucun domaine supprimé.</p>",
6 => "<p class=\"message_erreur\">Erreur : aucun domaine créé car une donnée est erronée ou manquante.</p>",
7 => "<p class=\"message_erreur\">Erreur : le domaine est déjà existant.</p>",
8 => "<p class=\"message_erreur\">Erreur : le domaine par défaut n'a pas été modifié.</p>",
9 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire destinataires n'a pas été ajouté car une donnée est erronée ou manquante.</p>",
10 => "<p class=\"message_erreur\">Erreur : l'état de l'entrée de liste noire destinataires n'a pas été modifié.</p>",
11 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire destinataires n'a pas été supprimée.</p>",
12 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire destinataires n'a pas été ajouté car elle est déjà existante.</p>",
13 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire expéditeurs n'a pas été ajouté car une donnée est erronée ou manquante.</p>",
14 => "<p class=\"message_erreur\">Erreur : l'état de l'entrée de liste noire expéditeurs n'a pas été modifié.</p>",
15 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire expéditeurs n'a pas été supprimée.</p>",
16 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire expéditeurs n'a pas été ajouté car elle est déjà existante.</p>")
);
echo $liste_messages[$type_message][$num_message];
if ($type_message=="succes" || $type_message=="erreurs" || $type_message=="messages") {
if (isset($_SESSION) && !empty($_SESSION['pseudo_utilisateur']) || !empty($_SESSION['nom_utilisateur']) || !empty($_SESSION['privilege_utilisateur'])) {
$pseudo_utilisateur=$_SESSION['pseudo_utilisateur'];
$nom_utilisateur=$_SESSION['nom_utilisateur'];
$privilege_utilisateur=$_SESSION['privilege_utilisateur'];
}
else {
$pseudo_utilisateur="visiteur";
$nom_utilisateur="visiteur";
$privilege_utilisateur="visiteur";
}
$liste_messages = array (
"succes" => array(
1 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Alias virtuel créé avec succès.</div>",
2 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Alias virtuel modifiés avec succès.</div>",
3 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Alias virtuel supprimé avec succès.</div>",
4 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Utilisateur changé en ".$pseudo_utilisateur." avec succès.</div>",
5 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine créé 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>",
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>",
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>",
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>",
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>",
14 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> L'entrée de liste noire expéditeurs a été supprimée avec succès.</div>",
15 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Vous avez bien été déconnecté.</div>"),
"erreurs" => array(
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>",
3 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'alias virtuel est déjà existant.</div>",
4 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Code d'erreur générique (HY000) signifiant probablement que la base SQLite n'est pas accessible en écriture. Il faut que la base et le répertoire <i>bdd</i> appartiennent à <i>www-data</i>.</div>",
5 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun domaine supprimé.</div>",
6 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun domaine créé car une donnée est erronée ou manquante.</div>",
7 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Le domaine est déjà existant.</div>",
8 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Le domaine par défaut n'a pas été modifié.</div>",
9 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'entrée de liste noire destinataires n'a pas été ajouté car une donnée est erronée ou manquante.</div>",
10 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'état de l'entrée de liste noire destinataires n'a pas été modifié.</div>",
11 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'entrée de liste noire destinataires n'a pas été supprimée.</div>",
12 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'entrée de liste noire destinataires n'a pas été ajouté car elle est déjà existante.</div>",
13 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'entrée de liste noire expéditeurs n'a pas été ajouté car une donnée est erronée ou manquante.</div>",
14 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'état de l'entrée de liste noire expéditeurs n'a pas été modifié.</div>",
15 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'entrée de liste noire expéditeurs n'a pas été supprimée.</div>",
16 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'entrée de liste noire expéditeurs n'a pas été ajouté car elle est déjà existante.</div>",
17 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Identifiant ou mot de passe incorrecte.</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>"),
"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>")
);
$num_message=htmlspecialchars($num_message);
if (isset($liste_messages[$type_message][$num_message])) {
echo $liste_messages[$type_message][$num_message];
}
else {
echo $liste_messages['erreurs']['19'];
}
}
}
?>
?>

@ -18,7 +18,7 @@ function testPrivileges(){
return "utilisateur";
}
else {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2");
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
}

@ -17,99 +17,137 @@ $liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo);
*/
if (testPrivileges()=="administrateur") {
echo <<<_HEREDOC_
<div>
<form id="form_choix_utilisateur" action="/services/traitements/utilisateurs/changeUtilisateur.php" method="post">
<div>
<h1>Choix de l'adresse</h1>
<select name="choix_utilisateur" onchange="autoSoumission(this);">
<div class="row">
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Choix de l'adresse</h5>
<form id="form_choix_utilisateur" action="/services/traitements/utilisateurs/changeUtilisateur.php" method="post">
<select class="form-select" name="choix_utilisateur" onchange="autoSoumission(this);">
_HEREDOC_;
/**
* Remplis un menu déroulant permettant le choix de l'utilisateur par l'administrateur.
* Ce choix permettra de modifier les alias virtuels y étant rattachés.
* La valeur par défaut du menu est positionnée sur le compte administrateur actuellement connecté.
*/
foreach ($liste_utilisateurs as $utilisateur_bdd => $utilisateur) {
if ($utilisateur['utilisateur']==$_SESSION['pseudo_utilisateur']) {
echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n";
}
elseif ($_SESSION['privilege_utilisateur']=="administrateur") {
echo "<option value=\"".$utilisateur['utilisateur']."\">".$utilisateur['utilisateur']."</option>\n";
}
/**
* Remplis un menu déroulant permettant le choix de l'utilisateur par l'administrateur.
* Ce choix permettra de modifier les alias virtuels y étant rattachés.
* La valeur par défaut du menu est positionnée sur le compte administrateur actuellement connecté.
*/
foreach ($liste_utilisateurs as $utilisateur_bdd => $utilisateur) {
if ($utilisateur['utilisateur']==$_SESSION['pseudo_utilisateur']) {
echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n";
}
elseif ($_SESSION['privilege_utilisateur']=="administrateur") {
echo "<option value=\"".$utilisateur['utilisateur']."\">".$utilisateur['utilisateur']."</option>\n";
}
}
echo <<<_HEREDOC_
</select>
</form>
</div>
</div>
</div>
_HEREDOC_;
}
echo <<<_HEREDOC_
</select>
?>
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter un alias virtuel</h5>
<form action="/services/traitements/alias_virtuels/ajoutAliasVirtuels.php" method="post">
<div class="input-group">
<?php
/**
* Ajout d'un alias virtuel.
*/
$prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo);
if (!empty($prefixe_utilisateur)) {
echo "<span class=\"input-group-text\">$prefixe_utilisateur</span>";
}
?>
<input type="text" class="form-control" id="nom_pour_filtre" name="nom_alias_virtuel" placeholder="alias" onkeyup="filtreValeurs();" required>
<span class="input-group-text">@</span>
<select class="form-select" name="choix_domaine_alias_virtuel">
<?php
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());
}
?>
</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>
</div>
</form>
</div>
</div>
</form>
</div>
</div>
_HEREDOC_;
}
?>
<div>
<h1>Ajouter un alias virtuel</h1>
<form action="/services/traitements/alias_virtuels/ajoutAliasVirtuels.php" method="post">
<?php
/**
* Ajout d'un alias virtuel.
*/
$prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo);
if (!empty($prefixe_utilisateur)) {
echo "<span>$prefixe_utilisateur</span>";
}
?>
<input type="text" id="nom_pour_filtre" name="nom_alias_virtuel" placeholder="alias*" onkeyup="filtreValeurs();" required>
<span>@</span>
<select name="choix_domaine_alias_virtuel">
<?php
try {
foreach ($liste_domaines as $domaine_bdd => $domaine) {
echo "<option value=\"".$domaine['domaine']."\">".$domaine['domaine']."</option>\n";
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Alias de <?php echo $_SESSION['pseudo_utilisateur']; ?></h5>
<form class="" action="/services/traitements/alias_virtuels/editEtatAliasVirtuels.php" method="post">
<div class="row" id="liste_pour_filtre">
<?php
/**
* Liste des alias virtuels.
*/
try {
foreach ($liste_alias_virtuels as $alias_virtuels_cles => $alias_virtuels_valeurs) {
if (isset($alias_virtuels_valeurs['active']) && $alias_virtuels_valeurs['active']=="1") {
$etat_interrupteur_allumer="checked";
$etat_interrupteur_eteint="";
} else {
$etat_interrupteur_eteint="checked";
$etat_interrupteur_allumer="";
}
echo <<<_HEREDOC_
<div class="col-md-6 col-xl-4">
<div class="card contour-pastille">
<div class="d-flex interieur-pastille">
<div class="champ-interrupteur">
<input type="radio" name="{$alias_virtuels_valeurs['id']}" id="allumer{$alias_virtuels_valeurs['id']}" value="1" {$etat_interrupteur_allumer}>
<label for="allumer{$alias_virtuels_valeurs['id']}" class="interrupteur-allumer"></label>
<input type="radio" name="{$alias_virtuels_valeurs['id']}" id="eteint{$alias_virtuels_valeurs['id']}" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$alias_virtuels_valeurs['id']}" class="interrupteur-eteint"></label>
</div>
<div class="titre-pastille">
<span>{$alias_virtuels_valeurs['courriel']}</span>
</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>
</div>
</div>
<input type="checkbox" class="input-checkbox-supprimer-valeur visuellement-cache" id="supprimer-valeur-{$alias_virtuels_valeurs['id']}">
<a class="confirmation-suppression card-footer" href="/services/traitements/alias_virtuels/supprAliasVirtuels.php?supprAliasVirtuel={$alias_virtuels_valeurs['id']}">Confirmer la suppression</a>
</div>
</div>
_HEREDOC_;
}
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection du domaine pour \"$base\" : ".$e->getMessage());
}
?>
</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>-->
<p>vers <?php echo $_SESSION['pseudo_utilisateur'] ?></p>
<input type="submit" value="Ajouter">
</form>
<h1>Alias de <?php echo $_SESSION['pseudo_utilisateur']; ?></h1>
<form class="" action="/services/traitements/alias_virtuels/editEtatAliasVirtuels.php" method="post">
<ul id="liste_pour_filtre">
<?php
/**
* Liste des alias virtuels.
*/
try {
foreach ($liste_alias_virtuels as $alias_virtuels_cles => $alias_virtuels_valeurs) {
echo "<li><input type=\"radio\" name=\"".$alias_virtuels_valeurs['id']."\" value=\"1\"";
if (isset($alias_virtuels_valeurs['active']) && !empty($alias_virtuels_valeurs['active']) && $alias_virtuels_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$alias_virtuels_valeurs['id']."\" value=\"0\"";
if (isset($alias_virtuels_valeurs['active']) && $alias_virtuels_valeurs['active']=="0") echo " checked";
echo "><p>".$alias_virtuels_valeurs['courriel']."</p><label class=\"input-label-supprimer-valeur\" for=\"supprimer-valeur-".$alias_virtuels_valeurs['id']."\">Supprimer</label><input type=\"checkbox\" class=\"input-checkbox-supprimer-valeur visuellement-cache\" id=\"supprimer-valeur-".$alias_virtuels_valeurs['id']."\"><a class=\"confirmation-suppression\" href=\"/services/traitements/alias_virtuels/supprAliasVirtuels.php?supprAliasVirtuel=".$alias_virtuels_valeurs['id']."\">Confirmer la suppression</a></li>\n";
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
?>
</ul>
<input type="submit" value="Appliquer">
</form>
<script src="/fichiers/js/filtre.js"></script>
</div>
?>
</div>
<button class="bouton-flotant" type="submit"><img src="/fichiers/svg/save.svg"/></button>
</form>
</div>
</div>
<script src="/fichiers/js/filtre.js"></script>

@ -5,9 +5,9 @@
*/
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
if (testPrivileges()!="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2");
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
@ -16,85 +16,122 @@ $liste_domaines = listeDomainesPostfix($pdo);
?>
<!-- Affichage et changement du domaine par défaut -->
<div>
<h1>Domaine par défaut</h1>
<p>Changer le domaine par défaut (actuellement
<?php
$domaine_defaut = retourneDomaineDefautPostfix($pdo);
if (!empty($domaine_defaut)) {
echo "<b>$domaine_defaut</b>";
}
else {
echo "Attention : aucun domaine n'est défini par défaut. Ce paramètre permet de pré-selectionner le domaine utilisé par Postfix lors des créations d'alias virtuels";
}
?>
) :</p>
<form action="/services/traitements/domaines/changeDomaineDefaut.php" method="post">
<select name="choix_domaine_defaut">
<?php
<div class="row">
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Domaine par défaut</h5>
<?php
$domaine_defaut = retourneDomaineDefautPostfix($pdo);
if (empty($domaine_defaut)) {
echo <<<_HEREDOC_
<div class="alert alert-warning mb-2" role="alert"><img src="/fichiers/svg/alert-triangle-warning.svg"/>
Aucun domaine n'est défini par défaut. Ce paramètre permet de pré-selectionner le domaine utilisé par Postfix lors des créations d'alias virtuels.
</div>
_HEREDOC_;
}
?>
<form action="/services/traitements/domaines/changeDomaineDefaut.php" method="post">
<div class="input-group">
<select class="form-select" name="choix_domaine_defaut">
<?php
// Génération de la liste des domaines existants
try {
foreach ($liste_domaines as $domaine_cles => $domaine_valeurs) {
echo "<option value=\"".$domaine_valeurs['domaine']."\">".$domaine_valeurs['domaine']."</option>\n";
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection du domaine pour \"$base\" : ".$e->getMessage());
}
// Génération de la liste des domaines existants
try {
foreach ($liste_domaines as $domaine_cles => $domaine_valeurs) {
echo "<option value=\"".$domaine_valeurs['domaine']."\">".$domaine_valeurs['domaine']."</option>\n";
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection du domaine pour \"$base\" : ".$e->getMessage());
}
?>
</select>
<!-- Définition du domaine sélectionné comme étant par défaut -->
<input type="submit" value="Définir par défaut">
</form>
?>
</select>
<!-- Définition du domaine sélectionné comme étant par défaut -->
<button class="btn btn-primary" type="submit">Définir par défaut</button>
</div>
</form>
</div>
</div>
</div>
<div class="col-12 col-md-6">
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter un domaine</h5>
<form action="/services/traitements/domaines/ajoutDomaines.php" method="post">
<div class="input-group">
<input type="text" class="form-control" id="nom_pour_filtre" name="nom_domaine" onkeyup="filtreValeurs();" placeholder="domaine.tld" required/>
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div>
</form>
</div>
</div>
</div>
</div>
<div>
<h1>Ajouter un domaine</h1>
<form action="/services/traitements/domaines/ajoutDomaines.php" method="post">
<input type="text" id="nom_pour_filtre" name="nom_domaine" placeholder="domaine.tld*" onkeyup="filtreValeurs();" required>
<input type="submit" value="Ajouter">
</form>
<h1>Domaines du serveur de messagerie</h1>
<form class="" action="/services/traitements/domaines/editEtatDomaines.php" method="post">
<ul id="liste_pour_filtre">
<?php
/**
* Liste des domaines.
*/
try {
foreach ($liste_domaines as $liste_domaines_cles => $liste_domaines_valeurs) {
echo "<li>";
if (isset($liste_domaines_valeurs['defaut']) && $liste_domaines_valeurs['defaut']!="1") {
echo "<input type=\"radio\" name=\"".$liste_domaines_valeurs['id']."\" value=\"1\"";
if (isset($liste_domaines_valeurs['active']) && !empty($liste_domaines_valeurs['active']) && $liste_domaines_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$liste_domaines_valeurs['id']."\" value=\"0\"";
if (isset($liste_domaines_valeurs['active']) && $liste_domaines_valeurs['active']=="0") echo " checked";
echo ">";
}
echo "<p>".$liste_domaines_valeurs['domaine']."</p>";
if (isset($liste_domaines_valeurs['defaut']) && $liste_domaines_valeurs['defaut']!="1") {
echo "<label class=\"input-label-supprimer-valeur\" for=\"supprimer-valeur-".$liste_domaines_valeurs['id']."\">Supprimer</label><input type=\"checkbox\" class=\"input-checkbox-supprimer-valeur visuellement-cache\" id=\"supprimer-valeur-".$liste_domaines_valeurs['id']."\"><a class=\"confirmation-suppression\" href=\"/services/traitements/domaines/supprDomaines.php?supprDomaine=".$liste_domaines_valeurs['id']."\">Confirmer la suppression</a></li>\n";
}
else {
echo "<p>Domaine en lecture seule tant que définit par défaut</p>";
}
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
?>
</ul>
<input type="submit" value="Appliquer">
</form>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Domaines du serveur de messagerie</h5>
<form class="" action="/services/traitements/domaines/editEtatDomaines.php" method="post">
<div class="row" id="liste_pour_filtre">
<?php
/**
* Liste des domaines.
*/
try {
foreach ($liste_domaines as $liste_domaines_cles => $liste_domaines_valeurs) {
if (isset($liste_domaines_valeurs['active']) && $liste_domaines_valeurs['active']=="1") {
$etat_interrupteur_allumer="checked";
$etat_interrupteur_eteint="";
} else {
$etat_interrupteur_eteint="checked";
$etat_interrupteur_allumer="";
}
if (isset($liste_domaines_valeurs['defaut']) && $liste_domaines_valeurs['defaut']=="1") {
$etat_bouton="disabled";
$bordure_pastille="border-primary interieur-pastille-bleu";
$post_texte=" <span class=\"text-primary\">(défaut)</span>";
} else {
$etat_bouton="";
$bordure_pastille="";
$post_texte="";
}
echo <<<_HEREDOC_
<div class="col-md-6 col-xl-4">
<div class="card contour-pastille {$bordure_pastille}">
<div class="d-flex interieur-pastille">
<div class="champ-interrupteur {$etat_bouton}">
<input type="radio" name="{$liste_domaines_valeurs['id']}" id="allumer{$liste_domaines_valeurs['id']}" value="1" {$etat_interrupteur_allumer}>
<label for="allumer{$liste_domaines_valeurs['id']}" class="interrupteur-allumer"></label>
<input type="radio" name="{$liste_domaines_valeurs['id']}" id="eteint{$liste_domaines_valeurs['id']}" value="0" {$etat_interrupteur_eteint}>
<label for="eteint{$liste_domaines_valeurs['id']}" class="interrupteur-eteint"></label>
</div>
<div class="titre-pastille">
<span>{$liste_domaines_valeurs['domaine']}{$post_texte}</span>
</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>
</div>
</div>
<input type="checkbox" class="input-checkbox-supprimer-valeur visuellement-cache" id="supprimer-valeur-{$liste_domaines_valeurs['id']}">
<a class="confirmation-suppression card-footer" href="/services/traitements/domaines/supprDomaines.php?supprDomaine={$liste_domaines_valeurs['id']}">Confirmer la suppression</a>
</div>
</div>
_HEREDOC_;
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
?>
</div>
<button class="bouton-flotant" type="submit"><img src="/fichiers/svg/save.svg"/></button>
</form>
</div>
</div>
<script src="/fichiers/js/filtre.js"></script>
</div>
<script src="/fichiers/js/filtre.js"></script>

@ -1,3 +1,4 @@
<?php
/**
@ -5,9 +6,9 @@
*/
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
if (testPrivileges()!="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2");
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}
@ -19,26 +20,25 @@ $liste_entrees_liste_noires_exp=listeEntreeListeNoireExpPostfix($pdo);
* Permet d'inclure la page d'administration des listes noires déstinataires ou expéditeurs dédiée.
*/
echo <<<_heredoc_
<div>
<h1>Choisissez un type de liste noire à éditer :</h1>
<a href="/pages/gestion/administration.php?page=listes_noires&sousPage=destinataires">Destinataires</a>
<a href="/pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs">Expéditeurs</a>
_heredoc_;
if (isset($_GET['sousPage']) && !empty($_GET['sousPage'])) {
switch ($_GET['sousPage']) {
case 'destinataires':
echo <<<_HEREDOC_
<h1>Ajouter une entrée dans la liste noire des destinataires</h1>
<form action="/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php" method="post">
<input type="text" id="nom_pour_filtre" name="courriel_entree_liste_noire_dst" placeholder="utilisateur@domaine.tld*" onkeyup="filtreValeurs();" required>
<select name="choix_action_entree_liste_noire_dst">
<option value="REJECT">REJECT</option>
<option value="DEFER">DEFER</option>
</select>
<input type="submit" value="Ajouter">
</form>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter une entrée dans la liste noire des destinataires</h5>
<form action="/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php" method="post">
<div class="input-group">
<input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_dst" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
<select class="form-select" name="choix_action_entree_liste_noire_dst">
<option value="REJECT">REJECT</option>
<option value="DEFER">DEFER</option>
</select>
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div>
</form>
</div>
</div>
<h1>Entrées de la liste noire des destinataires du serveur de messagerie</h1>
@ -49,7 +49,7 @@ _HEREDOC_;
* Liste des entrées de la liste noire des destinataires.
*/
try {
foreach ($liste_entrees_liste_noires_dst as $liste_entrees_liste_noires_dst_cles => $liste_entrees_liste_noires_dst_valeurs) {
foreach ($liste_entrees_liste_noires_dst as $liste_entrees_liste_noires_dst_cles => $liste_entrees_liste_noires_dst_valeurs) {
echo "<li><input type=\"radio\" name=\"".$liste_entrees_liste_noires_dst_valeurs['id']."\" value=\"1\"";
if (isset($liste_entrees_liste_noires_dst_valeurs['active']) && !empty($liste_entrees_liste_noires_dst_valeurs['active']) && $liste_entrees_liste_noires_dst_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$liste_entrees_liste_noires_dst_valeurs['id']."\" value=\"0\"";
@ -68,14 +68,20 @@ _HEREDOC_;
break;
case 'expediteurs':
echo <<<_HEREDOC_
<h1>Ajouter une entrée dans la liste noire des expéditeurs</h1>
<form action="/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php" method="post">
<input type="text" id="nom_pour_filtre" name="courriel_entree_liste_noire_exp" placeholder="utilisateur@domaine.tld*" onkeyup="filtreValeurs();" required>
<select name="choix_code_retour_entree_liste_noire_exp">
<option value="554">REJECT</option>
</select>
<input type="submit" value="Ajouter">
</form>
<div class="card mt-4">
<div class="card-body">
<h5 class="card-title">Ajouter une entrée dans la liste noire des expéditeurs</h5>
<form action="/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php" method="post">
<div class="input-group">
<input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_exp" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
<select class="form-select" name="choix_code_retour_entree_liste_noire_exp">
<option value="554">REJECT</option>
</select>
<button class="btn btn-primary bouton-ajout" type="submit"><img src="/fichiers/svg/plus.svg"/></button>
</div>
</form>
</div>
</div>
<h1>Entrées de la liste noire des expéditeurs du serveur de messagerie</h1>
@ -86,7 +92,7 @@ _HEREDOC_;
* Liste des entrées de la liste noire des destinataires.
*/
try {
foreach ($liste_entrees_liste_noires_exp as $liste_entrees_liste_noires_exp_cles => $liste_entrees_liste_noires_exp_valeurs) {
foreach ($liste_entrees_liste_noires_exp as $liste_entrees_liste_noires_exp_cles => $liste_entrees_liste_noires_exp_valeurs) {
echo "<li><input type=\"radio\" name=\"".$liste_entrees_liste_noires_exp_valeurs['id']."\" value=\"1\"";
if (isset($liste_entrees_liste_noires_exp_valeurs['active']) && !empty($liste_entrees_liste_noires_exp_valeurs['active']) && $liste_entrees_liste_noires_exp_valeurs['active']=="1") echo " checked";
echo "><input type=\"radio\" name=\"".$liste_entrees_liste_noires_exp_valeurs['id']."\" value=\"0\"";
@ -112,4 +118,4 @@ _HEREDOC_;
?>
<script src="/fichiers/js/filtre.js"></script>
</div>
</div>

@ -15,7 +15,7 @@ if (testPrivileges()=="administrateur" && isset($_POST['choix_utilisateur']) &&
die();
}
else {
header ("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2");
header ("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die();
}

@ -11,6 +11,6 @@
// Destruction de la session
session_destroy ();
// Redirection de l'utilisateur vers la page d'authentifiaction
header('location: /pages/visiteurs/formulaire_accueil.php?succes=1');
header('location: /pages/visiteurs/formulaire_accueil.php?succes=15');
?>
Loading…
Cancel
Save