develop dans master - première version stable #9

Merged
nmorin merged 80 commits from develop into master 2022-09-03 22:11:29 +02:00
80 changed files with 60984 additions and 431 deletions
Showing only changes of commit e7964aa035 - Show all commits
+5051
View File
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
+485
View File
@@ -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
+482
View File
@@ -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
+11263 -4
View File
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
+11242
View File
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
+14 -4
View File
@@ -1,18 +1,28 @@
/* Style concernant la confirmation de suppression d'un alias virtuel */ /* Style concernant la confirmation de suppression d'un alias virtuel */
.confirmation-suppression { .confirmation-suppression {
display: none; 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 { .input-checkbox-supprimer-valeur:checked ~ .confirmation-suppression {
display: inline; display: inline;
} }
.input-label-supprimer-valeur { /*.input-label-supprimer-valeur {
color: #ffffff; color: #ffffff;
background: #e23026; background: #e23026;
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
border-radius: 0.5rem; border-radius: 0.5rem;
} }*/
.visuellement-cache { .visuellement-cache {
position: absolute; position: absolute;
@@ -23,4 +33,4 @@
* 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/
*/ */
+49
View File
@@ -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;
}
+76
View File
@@ -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;
}
+6812
View File
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
+4999
View File
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
+5042 -3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+9 -9
View File
@@ -7,21 +7,21 @@
**/ **/
function filtreValeurs() { function filtreValeurs() {
// Déclaration des variables // 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'); input = document.getElementById('nom_pour_filtre');
filter = input.value.toUpperCase(); filter = input.value.toUpperCase();
ul = document.getElementById("liste_pour_filtre"); divgroupe = document.getElementById("liste_pour_filtre");
li = ul.getElementsByTagName('li'); 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 // 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++) { for (i = 0; i < divunitaire.length; i++) {
a = li[i].getElementsByTagName("p")[0]; a = divunitaire[i].getElementsByTagName("span")[0];
txtValue = a.textContent || a.innerText; txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) { if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = ""; divunitaire[i].style.display = "";
} else { } else {
li[i].style.display = "none"; divunitaire[i].style.display = "none";
} }
} }
} }
@@ -31,4 +31,4 @@ function filtreValeurs() {
**/ **/
function autoSoumission() { function autoSoumission() {
document.getElementById("form_choix_utilisateur").submit(); document.getElementById("form_choix_utilisateur").submit();
} }
+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+1
View File
@@ -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

+48 -25
View File
@@ -1,37 +1,60 @@
<?php <?php
/** /**
* Page importé intégrant le menu de navigation dans la page d'administration centrale. * Page importé intégrant le menu de navigation dans la page d'administration centrale.
*/ */
echo <<<_HEREDOC_ if (isset($_GET['page']) && !empty($_GET['page'])) {
<div> ?>
<table>
<tr> <nav class="navbar navbar-expand-lg navbar-dark" style="background-color: #343a40;">
<td><a href="/pages/gestion/administration.php?page=accueil">Courtail</a></td> <div class="container-fluid">
<td><a href="/pages/gestion/administration.php?page=alias">Alias</a></td> <a class="navbar-brand" href="/pages/gestion/administration.php?page=accueil">Courtail</a>
_HEREDOC_; <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
if (testPrivileges()=="administrateur") { <span class="navbar-toggler-icon"></span>
echo <<<_HEREDOC_ </button>
<td><a href="/pages/gestion/administration.php?page=domaines">Domaines</a></td> <div class="collapse navbar-collapse" id="navbarNav">
<td><a href="/pages/gestion/administration.php?page=listes_noires">Listes noires</a></td> <ul class="navbar-nav">
_HEREDOC_; <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
} }
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['message']) && !empty($_GET['message'])) {
if (isset($_GET['message']) && !empty($_GET['message'])) {
switch ($_GET['message']) { switch ($_GET['message']) {
case "bienvenue": 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; break;
} }
} }*/
?> ?>
+5 -2
View File
@@ -2,9 +2,12 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Courtail - Portail des courriels</title> <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/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" /> <link rel="icon" href="/fichiers/images/favicon.ico" />
</head> </head>
<body> <body>
+2 -2
View File
@@ -1,3 +1,3 @@
<script src="/fichiers/js/bootstrap.js"></script> <script src="/fichiers/js/bootstrap.bundle.min.js"></script>
</body> </body>
</html> </html>
-31
View File
@@ -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);
+8 -4
View File
@@ -2,11 +2,15 @@
chemin_script=$(dirname "$0") chemin_script=$(dirname "$0")
mkdir -p /etc/postfix/db mkdir -p /etc/postfix/bdd
rm -f /etc/postfix/db/postfix.sqlite rm -f /etc/postfix/bdd/postfix.sqlite
# Création des tables # 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 # 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
+34
View File
@@ -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 ( CREATE TABLE IF NOT EXISTS postfix_alias_virtuels (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
courriel TEXT NOT NULL, courriel TEXT NOT NULL UNIQUE,
destination TEXT NOT NULL, destination TEXT NOT NULL,
active INTEGER active INTEGER
); );
CREATE TABLE IF NOT EXISTS postfix_domaines ( CREATE TABLE IF NOT EXISTS postfix_domaines (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
domaine TEXT NOT NULL UNIQUE, domaine TEXT NOT NULL UNIQUE,
defaut INTEGER UNIQUE, defaut BOOLEAN NOT NULL CHECK (defaut IN (0, 1)),
active INTEGER active INTEGER
); );
CREATE TABLE IF NOT EXISTS postfix_liste_noire_destinataires ( 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, message TEXT NOT NULL,
active INTEGER active INTEGER
); );
CREATE TABLE IF NOT EXISTS postfix_utilisateurs ( CREATE TABLE postfix_utilisateurs (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
utilisateur TEXT NOT NULL UNIQUE, utilisateur TEXT NOT NULL UNIQUE,
mot_de_passe TEXT NOT NULL, mot_de_passe TEXT NOT NULL,
nom_complet TEXT, nom_complet TEXT,
rep_perso TEXT NOT NULL,
uid INTEGER NOT NULL, uid INTEGER NOT NULL,
gid INTEGER NOT NULL, gid INTEGER NOT NULL,
privilege TEXT NOT NULL, privilege TEXT NOT NULL,
prefixe TEXT,
active INTEGER active INTEGER
); );
+1 -1
View File
@@ -1,3 +1,3 @@
#!/bin/sh #!/bin/sh
docker build -t courtail ../ docker build -t courtail ../
docker run -it -p 8080:80 courtail:latest docker run -it -p 8080:80 courtail:latest
+11 -4
View File
@@ -6,10 +6,10 @@
*/ */
session_start(); session_start();
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
testPrivileges(); testPrivileges();
require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
require_once ($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/barre_menu.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.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'])) { elseif (isset($_GET['succes']) && !empty($_GET['succes'])) {
retourneMessage('succes',$_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. * 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 "<h1>Cette page n'existe pas.</h1>";
} }
echo "</div>";
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php");
?> ?>
+3 -3
View File
@@ -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. * 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-family: sans-serif;
font-size: 40px; font-size: 40px;
color: #FFF; color: #FFF;
background-color: #1F527D; background-color: #343a40;
text-align: center; } text-align: center; }
.chargements{ .chargements{
@@ -263,4 +263,4 @@ header ("Refresh: 5;URL=/pages/visiteurs/formulaire_accueil.php?erreur=1");
</section> </section>
</div> </div>
</body> </body>
</html> </html>
+51 -43
View File
@@ -1,48 +1,56 @@
<!-- Page d'accueil du portail. <?php
-- 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"> * Page d'accueil du portail.
</br> * Impose une authentification du visiteur pour continuer.
<table id="authentification"> * Redirige les tentative d'identification pour traitement et test de légitimité.
<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 require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.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;
}
}
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;
}
}
?>
<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>
</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'])) {
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>
<script>
const body = document.querySelector('body');
body.style.backgroundColor = '#343a40';
</script>
<?php
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/pied.php");
?>
+14 -14
View File
@@ -16,7 +16,7 @@ function retournePrefixeUtilisateurPostfix($pdo) {
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':utilisateur',$_SESSION['pseudo_utilisateur']); $sql->bindValue(':utilisateur',$_SESSION['pseudo_utilisateur']);
$sql->execute(); $sql->execute();
$prefixe_utilisateur=$sql->fetchAll(); $prefixe_utilisateur=$sql->fetchAll();
return $prefixe_utilisateur[0]['prefixe']; return $prefixe_utilisateur[0]['prefixe'];
} }
@@ -32,11 +32,11 @@ function retournePrefixeUtilisateurPostfix($pdo) {
function listeAliasVirtuelsPostfix($pdo) { function listeAliasVirtuelsPostfix($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'; $req = 'SELECT * FROM postfix_alias_virtuels WHERE destination=:destination ORDER BY courriel ASC';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']); $sql->bindValue(':destination',$_SESSION['pseudo_utilisateur']);
$sql->execute(); $sql->execute();
$liste_alias_virtuels = $sql->fetchAll(); $liste_alias_virtuels = $sql->fetchAll();
return $liste_alias_virtuels; return $liste_alias_virtuels;
} }
@@ -52,16 +52,16 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_
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).$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(); $sql->execute();
if ($sql->rowCount() == 1){ if ($sql->rowCount() == 1){
return true; return true;
} }
else { else {
return false; return false;
} }
@@ -69,7 +69,7 @@ function ajoutAliasVirtuelsPostfix($pdo,$nom_alias_virtuel,$choix_domaine_alias_
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();
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 "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"); header ("Location: /pages/gestion/administration.php?page=alias&erreur=3");
@@ -97,7 +97,7 @@ function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
$compteModifs=0; $compteModifs=0;
foreach ($retour_form as $id_alias_virtuel => $etat_alias_virtuel) { 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'; $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);
$sql->bindValue(':etat_alias_virtuel',$etat_alias_virtuel); $sql->bindValue(':etat_alias_virtuel',$etat_alias_virtuel);
$sql->bindValue(':id_alias_virtuel',$id_alias_virtuel); $sql->bindValue(':id_alias_virtuel',$id_alias_virtuel);
@@ -108,7 +108,7 @@ function modifEtatAliasVirtuelsPostfix($pdo,$retour_form) {
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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); 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) { function supprAliasVirtuelsPostfix($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';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':id_alias_virtuel',$suppr_alias_virtuel); $sql->bindValue(':id_alias_virtuel',$suppr_alias_virtuel);
$sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']); $sql->bindValue(':pseudo_utilisateur',$_SESSION['pseudo_utilisateur']);
$sql->execute(); $sql->execute();
if($sql->rowCount() == 1){ if($sql->rowCount() == 1){
return true; return true;
} }
@@ -143,7 +143,7 @@ function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) {
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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); header ("Location: /pages/gestion/administration.php?page=alias&erreur=4");
@@ -156,4 +156,4 @@ function supprAliasVirtuelsPostfix($pdo,$suppr_alias_virtuel) {
} }
} }
?> ?>
+28 -19
View File
@@ -12,10 +12,10 @@ require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php")
function listeDomainesPostfix($pdo) { function listeDomainesPostfix($pdo) {
try { try {
$req = 'SELECT * FROM postfix_domaines ORDER BY defaut DESC'; $req = 'SELECT * FROM postfix_domaines ORDER BY defaut DESC';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->execute(); $sql->execute();
$liste_domaines = $sql->fetchAll(); $liste_domaines = $sql->fetchAll();
return $liste_domaines; return $liste_domaines;
} }
@@ -30,12 +30,21 @@ function listeDomainesPostfix($pdo) {
function retourneDomaineDefautPostfix($pdo) { function retourneDomaineDefautPostfix($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';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->execute(); $sql->execute();
$result = $sql ->fetchAll(PDO::FETCH_ASSOC);
$comptage = count($result);
$domaine_defaut = $sql->fetchAll(); if($comptage == 1){
return $domaine_defaut[0]['domaine']; $domaine_defaut = $result;
return $domaine_defaut[0]['domaine'];;
}
else {
$domaine_defaut = "";
return $domaine_defaut;
}
} }
catch (\Exception $e) { catch (\Exception $e) {
die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage()); die ("Erreur de requête de selection des domaines pour \"$base\" : ".$e->getMessage());
@@ -47,12 +56,12 @@ function retourneDomaineDefautPostfix($pdo) {
*/ */
function changeDomaineDefautPostfix($pdo,$choix_domaine_defaut) { function changeDomaineDefautPostfix($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';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->execute(); $sql->execute();
// Définition du domaine renseigné par l'utilisateur et activation de celui-ci (au cas-où il ne l'était pas) // 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'; $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(); $code_retour=$sql->errorInfo();
var_dump($code_retour); var_dump($code_retour);
die(); die();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); header ("Location: /pages/gestion/administration.php?page=domaines&erreur=4");
@@ -86,15 +95,15 @@ function ajoutDomainePostfix($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)';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':domaine',substr(htmlspecialchars($nom_domaine),0,49)); $sql->bindValue(':domaine',substr(htmlspecialchars($nom_domaine),0,100));
$sql->execute(); $sql->execute();
if ($sql->rowCount() == 1){ if ($sql->rowCount() == 1){
return true; return true;
} }
else { else {
return false; return false;
} }
@@ -102,7 +111,7 @@ function ajoutDomainePostfix($pdo,$nom_domaine) {
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();
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 "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 // 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"); header ("Location: /pages/gestion/administration.php?page=domaines&erreur=7");
@@ -130,7 +139,7 @@ function modifEtatDomainesPostfix($pdo,$retour_form) {
$compteModifs=0; $compteModifs=0;
foreach ($retour_form as $id_domaine => $etat_domaine) { foreach ($retour_form as $id_domaine => $etat_domaine) {
$req='UPDATE postfix_domaines SET active=:etat_domaine WHERE id=:id_domaine AND defaut!=1'; $req='UPDATE postfix_domaines SET active=:etat_domaine WHERE id=:id_domaine AND defaut!=1';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':etat_domaine',$etat_domaine); $sql->bindValue(':etat_domaine',$etat_domaine);
$sql->bindValue(':id_domaine',$id_domaine); $sql->bindValue(':id_domaine',$id_domaine);
@@ -140,7 +149,7 @@ function modifEtatDomainesPostfix($pdo,$retour_form) {
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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); header ("Location: /pages/gestion/administration.php?page=domaines&erreur=4");
@@ -159,11 +168,11 @@ function modifEtatDomainesPostfix($pdo,$retour_form) {
function supprDomainesPostfix($pdo,$suppr_domaine) { function supprDomainesPostfix($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';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':id_domaine',$suppr_domaine); $sql->bindValue(':id_domaine',$suppr_domaine);
$sql->execute(); $sql->execute();
if($sql->rowCount() == 1){ if($sql->rowCount() == 1){
return true; return true;
} }
@@ -174,7 +183,7 @@ function supprDomainesPostfix($pdo,$suppr_domaine) {
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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); header ("Location: /pages/gestion/administration.php?page=domaines&erreur=4");
@@ -187,4 +196,4 @@ function supprDomainesPostfix($pdo,$suppr_domaine) {
} }
} }
?> ?>
+23 -23
View File
@@ -6,17 +6,17 @@
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/bdd/connexion.php"); 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 listeEntreeListeNoireDstPostfix($pdo) {
try { try {
$req = 'SELECT * FROM postfix_liste_noire_destinataires'; $req = 'SELECT * FROM postfix_liste_noire_destinataires';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->execute(); $sql->execute();
$liste_entree_liste_noire_dst = $sql->fetchAll(); $liste_entree_liste_noire_dst = $sql->fetchAll();
return $liste_entree_liste_noire_dst; return $liste_entree_liste_noire_dst;
} }
@@ -31,10 +31,10 @@ function listeEntreeListeNoireDstPostfix($pdo) {
function listeEntreeListeNoireExpPostfix($pdo) { function listeEntreeListeNoireExpPostfix($pdo) {
try { try {
$req = 'SELECT * FROM postfix_liste_noire_expediteurs'; $req = 'SELECT * FROM postfix_liste_noire_expediteurs';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->execute(); $sql->execute();
$liste_entree_liste_noire_exp = $sql->fetchAll(); $liste_entree_liste_noire_exp = $sql->fetchAll();
return $liste_entree_liste_noire_exp; 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 // 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)';
$sql=$pdo->prepare($req); $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->bindValue(':action',$action_entree_liste_noire_dst);
$sql->execute(); $sql->execute();
if ($sql->rowCount() == 1){ if ($sql->rowCount() == 1){
return true; return true;
} }
else { else {
return false; return false;
} }
@@ -66,7 +66,7 @@ function ajoutEntreeListeNoireDstPostfix($pdo,$courriel_entree_liste_noire_dst,$
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();
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 "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 // 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"); 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 // 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)';
$sql=$pdo->prepare($req); $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->bindValue(':code_retour',$code_retour_entree_liste_noire_exp);
$sql->execute(); $sql->execute();
if ($sql->rowCount() == 1){ if ($sql->rowCount() == 1){
return true; return true;
} }
else { else {
return false; return false;
} }
@@ -134,7 +134,7 @@ function modifEntreeListeNoireDstPostfix($pdo,$retour_form) {
$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) {
$req='UPDATE postfix_liste_noire_destinataires SET active=:etat_entree_liste_noire_dst WHERE id=:id_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=$pdo->prepare($req);
$sql->bindValue(':etat_entree_liste_noire_dst',$etat_entree_liste_noire_dst); $sql->bindValue(':etat_entree_liste_noire_dst',$etat_entree_liste_noire_dst);
$sql->bindValue(':id_entree_liste_noire_dst',$id_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) { 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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=10");
@@ -167,7 +167,7 @@ function modifEntreeListeNoireExpPostfix($pdo,$retour_form) {
$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) {
$req='UPDATE postfix_liste_noire_expediteurs SET active=:etat_entree_liste_noire_exp WHERE id=:id_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=$pdo->prepare($req);
$sql->bindValue(':etat_entree_liste_noire_exp',$etat_entree_liste_noire_exp); $sql->bindValue(':etat_entree_liste_noire_exp',$etat_entree_liste_noire_exp);
$sql->bindValue(':id_entree_liste_noire_exp',$id_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) { 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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); 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) { function supprEntreeListeNoireDstPostfix($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';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':id_entree_liste_noire_dst',$_GET['supprEntreeListeNoireDst']); $sql->bindValue(':id_entree_liste_noire_dst',$_GET['supprEntreeListeNoireDst']);
$sql->execute(); $sql->execute();
if($sql->rowCount() == 1){ if($sql->rowCount() == 1){
return true; return true;
} }
@@ -211,7 +211,7 @@ function supprEntreeListeNoireDstPostfix($pdo) {
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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=destinataires&erreur=4");
@@ -230,11 +230,11 @@ function supprEntreeListeNoireDstPostfix($pdo) {
function supprEntreeListeNoireExpPostfix($pdo) { function supprEntreeListeNoireExpPostfix($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';
$sql=$pdo->prepare($req); $sql=$pdo->prepare($req);
$sql->bindValue(':id_entree_liste_noire_exp',$_GET['supprEntreeListeNoireExp']); $sql->bindValue(':id_entree_liste_noire_exp',$_GET['supprEntreeListeNoireExp']);
$sql->execute(); $sql->execute();
if($sql->rowCount() == 1){ if($sql->rowCount() == 1){
return true; return true;
} }
@@ -245,7 +245,7 @@ function supprEntreeListeNoireExpPostfix($pdo) {
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();
if ($code_retour[0]=="HY000") { if ($code_retour[0]=="HY000") {
// Code de retour envoyé par le pilote PDO SQLite lorsque la base est accessible en lecture seule à www-data // 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"); header ("Location: /pages/gestion/administration.php?page=listes_noires&sousPage=expediteurs&erreur=4");
@@ -258,4 +258,4 @@ function supprEntreeListeNoireExpPostfix($pdo) {
} }
} }
?> ?>
+62 -38
View File
@@ -4,43 +4,67 @@
* Fonction affichant les messages de retour des traitements site lorsqu'elle est interrogée. * Fonction affichant les messages de retour des traitements site lorsqu'elle est interrogée.
*/ */
function retourneMessage($type_message,$num_message) { function retourneMessage($type_message,$num_message) {
$liste_messages = array ( if ($type_message=="succes" || $type_message=="erreurs" || $type_message=="messages") {
"succes" => array( if (isset($_SESSION) && !empty($_SESSION['pseudo_utilisateur']) || !empty($_SESSION['nom_utilisateur']) || !empty($_SESSION['privilege_utilisateur'])) {
1 => "<p class=\"message_succes\">Succès : alias virtuel créé avec succès.</p>", $pseudo_utilisateur=$_SESSION['pseudo_utilisateur'];
2 => "<p class=\"message_succes\">Succès : alias virtuel modifiés avec succès.</p>", $nom_utilisateur=$_SESSION['nom_utilisateur'];
3 => "<p class=\"message_succes\">Succès : alias virtuel supprimé avec succès.</p>", $privilege_utilisateur=$_SESSION['privilege_utilisateur'];
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>", else {
6 => "<p class=\"message_succes\">Succès : domaine modifiés avec succès.</p>", $pseudo_utilisateur="visiteur";
7 => "<p class=\"message_succes\">Succès : domaine supprimé avec succès.</p>", $nom_utilisateur="visiteur";
8 => "<p class=\"message_succes\">Succès : domaine défini par défaut avec succès.</p>", $privilege_utilisateur="visiteur";
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>", $liste_messages = array (
11 => "<p class=\"message_succes\">Succès : l'entrée de liste noire destinataires a été supprimée avec succès.</p>", "succes" => array(
12 => "<p class=\"message_succes\">Succès : l'entrée de liste noire expéditeurs a été créée avec succès.</p>", 1 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Alias virtuel créé avec succès.</div>",
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>", 2 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Alias virtuel modifiés avec succès.</div>",
14 => "<p class=\"message_succes\">Succès : l'entrée de liste noire expéditeurs a été supprimée avec succès.</p>"), 3 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Alias virtuel supprimé avec succès.</div>",
"erreurs" => array( 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>",
1 => "<p class=\"message_erreur\">Erreur : aucun alias virtuel supprimé.</p>", 6 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine modifiés avec succès.</div>",
2 => "<p class=\"message_erreur\">Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.</p>", 7 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Domaine supprimé avec succès.</div>",
3 => "<p class=\"message_erreur\">Erreur : L'alias virtuel est déjà existant.</p>", 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>",
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>", 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>",
5 => "<p class=\"message_erreur\">Erreur : aucun domaine supprimé.</p>", 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>",
6 => "<p class=\"message_erreur\">Erreur : aucun domaine créé car une donnée est erronée ou manquante.</p>", 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>",
7 => "<p class=\"message_erreur\">Erreur : le domaine est déjà existant.</p>", 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>",
8 => "<p class=\"message_erreur\">Erreur : le domaine par défaut n'a pas été modifié.</p>", 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>",
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>", 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>",
10 => "<p class=\"message_erreur\">Erreur : l'état de l'entrée de liste noire destinataires n'a pas été modifié.</p>", 15 => "<div class=\"alert alert-success\" role=\"alert\"><img src=\"/fichiers/svg/check-circle.svg\"/> Vous avez bien été déconnecté.</div>"),
11 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire destinataires n'a pas été supprimée.</p>", "erreurs" => array(
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>", 1 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> Aucun alias virtuel supprimé.</div>",
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>", 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>",
14 => "<p class=\"message_erreur\">Erreur : l'état de l'entrée de liste noire expéditeurs n'a pas été modifié.</p>", 3 => "<div class=\"alert alert-danger\" role=\"alert\"><img src=\"/fichiers/svg/alert-triangle.svg\"/> L'alias virtuel est déjà existant.</div>",
15 => "<p class=\"message_erreur\">Erreur : l'entrée de liste noire expéditeurs n'a pas été supprimée.</p>", 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>",
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>") 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>",
echo $liste_messages[$type_message][$num_message]; 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'];
}
}
} }
?> ?>
+1 -1
View File
@@ -18,7 +18,7 @@ function testPrivileges(){
return "utilisateur"; return "utilisateur";
} }
else { else {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2"); header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die(); die();
} }
} }
+125 -87
View File
@@ -17,99 +17,137 @@ $liste_alias_virtuels = listeAliasVirtuelsPostfix($pdo);
*/ */
if (testPrivileges()=="administrateur") { if (testPrivileges()=="administrateur") {
echo <<<_HEREDOC_ echo <<<_HEREDOC_
<div> <div class="row">
<form id="form_choix_utilisateur" action="/services/traitements/utilisateurs/changeUtilisateur.php" method="post"> <div class="col-12 col-md-6">
<div> <div class="card mt-4">
<h1>Choix de l'adresse</h1> <div class="card-body">
<select name="choix_utilisateur" onchange="autoSoumission(this);"> <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_; _HEREDOC_;
/** /**
* Remplis un menu déroulant permettant le choix de l'utilisateur par l'administrateur. * 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. * 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é. * La valeur par défaut du menu est positionnée sur le compte administrateur actuellement connecté.
*/ */
foreach ($liste_utilisateurs as $utilisateur_bdd => $utilisateur) { foreach ($liste_utilisateurs as $utilisateur_bdd => $utilisateur) {
if ($utilisateur['utilisateur']==$_SESSION['pseudo_utilisateur']) { if ($utilisateur['utilisateur']==$_SESSION['pseudo_utilisateur']) {
echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n"; echo "<option value=\"".$utilisateur['utilisateur']."\" selected>".$utilisateur['utilisateur']."</option>\n";
} }
elseif ($_SESSION['privilege_utilisateur']=="administrateur") { elseif ($_SESSION['privilege_utilisateur']=="administrateur") {
echo "<option value=\"".$utilisateur['utilisateur']."\">".$utilisateur['utilisateur']."</option>\n"; echo "<option value=\"".$utilisateur['utilisateur']."\">".$utilisateur['utilisateur']."</option>\n";
} }
} }
echo <<<_HEREDOC_ echo <<<_HEREDOC_
</select> </select>
</form>
</div>
</div> </div>
</form> </div>
</div>
_HEREDOC_; _HEREDOC_;
} }
?> ?>
<div> <div class="col-12 col-md-6">
<h1>Ajouter un alias virtuel</h1> <div class="card mt-4">
<form action="/services/traitements/alias_virtuels/ajoutAliasVirtuels.php" method="post"> <div class="card-body">
<?php <h5 class="card-title">Ajouter un alias virtuel</h5>
<form action="/services/traitements/alias_virtuels/ajoutAliasVirtuels.php" method="post">
/** <div class="input-group">
* Ajout d'un alias virtuel. <?php
*/
$prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo); /**
if (!empty($prefixe_utilisateur)) { * Ajout d'un alias virtuel.
echo "<span>$prefixe_utilisateur</span>"; */
} $prefixe_utilisateur=retournePrefixeUtilisateurPostfix($pdo);
?> if (!empty($prefixe_utilisateur)) {
<input type="text" id="nom_pour_filtre" name="nom_alias_virtuel" placeholder="alias*" onkeyup="filtreValeurs();" required> echo "<span class=\"input-group-text\">$prefixe_utilisateur</span>";
<span>@</span> }
<select name="choix_domaine_alias_virtuel">
<?php ?>
try { <input type="text" class="form-control" id="nom_pour_filtre" name="nom_alias_virtuel" placeholder="alias" onkeyup="filtreValeurs();" required>
foreach ($liste_domaines as $domaine_bdd => $domaine) { <span class="input-group-text">@</span>
echo "<option value=\"".$domaine['domaine']."\">".$domaine['domaine']."</option>\n"; <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>
</div>
</div>
<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) {
catch (\Exception $e) { die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
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());
}
?>
</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>
+116 -79
View File
@@ -5,9 +5,9 @@
*/ */
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
if (testPrivileges()!="administrateur") { if (testPrivileges()!="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2"); header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die(); die();
} }
@@ -16,85 +16,122 @@ $liste_domaines = listeDomainesPostfix($pdo);
?> ?>
<!-- Affichage et changement du domaine par défaut --> <!-- Affichage et changement du domaine par défaut -->
<div> <div class="row">
<h1>Domaine par défaut</h1> <div class="col-12 col-md-6">
<p>Changer le domaine par défaut (actuellement <div class="card mt-4">
<?php <div class="card-body">
<h5 class="card-title">Domaine par défaut</h5>
$domaine_defaut = retourneDomaineDefautPostfix($pdo); <?php
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
// Génération de la liste des domaines existants $domaine_defaut = retourneDomaineDefautPostfix($pdo);
try { if (empty($domaine_defaut)) {
foreach ($liste_domaines as $domaine_cles => $domaine_valeurs) { echo <<<_HEREDOC_
echo "<option value=\"".$domaine_valeurs['domaine']."\">".$domaine_valeurs['domaine']."</option>\n"; <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>
catch (\Exception $e) { _HEREDOC_;
die ("Erreur de requête de selection du domaine pour \"$base\" : ".$e->getMessage()); }
}
?> ?>
</select> <form action="/services/traitements/domaines/changeDomaineDefaut.php" method="post">
<!-- Définition du domaine sélectionné comme étant par défaut --> <div class="input-group">
<input type="submit" value="Définir par défaut"> <select class="form-select" name="choix_domaine_defaut">
</form> <?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());
}
?>
</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>
<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"> <div class="card mt-4">
<ul id="liste_pour_filtre"> <div class="card-body">
<?php <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">
* Liste des domaines. <?php
*/
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>
<script src="/fichiers/js/filtre.js"></script> /**
</div> * 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>
+35 -29
View File
@@ -1,3 +1,4 @@
<?php <?php
/** /**
@@ -5,9 +6,9 @@
*/ */
require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php"); require_once ($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
if (testPrivileges()!="administrateur") { if (testPrivileges()!="administrateur") {
header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2"); header("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die(); 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. * 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'])) { if (isset($_GET['sousPage']) && !empty($_GET['sousPage'])) {
switch ($_GET['sousPage']) { switch ($_GET['sousPage']) {
case 'destinataires': case 'destinataires':
echo <<<_HEREDOC_ echo <<<_HEREDOC_
<h1>Ajouter une entrée dans la liste noire des destinataires</h1> <div class="card mt-4">
<form action="/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php" method="post"> <div class="card-body">
<input type="text" id="nom_pour_filtre" name="courriel_entree_liste_noire_dst" placeholder="utilisateur@domaine.tld*" onkeyup="filtreValeurs();" required> <h5 class="card-title">Ajouter une entrée dans la liste noire des destinataires</h5>
<select name="choix_action_entree_liste_noire_dst"> <form action="/services/traitements/liste_noire_dst/ajoutEntreeListeNoireDst.php" method="post">
<option value="REJECT">REJECT</option> <div class="input-group">
<option value="DEFER">DEFER</option> <input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_dst" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
</select> <select class="form-select" name="choix_action_entree_liste_noire_dst">
<input type="submit" value="Ajouter"> <option value="REJECT">REJECT</option>
</form> <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> <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. * Liste des entrées de la liste noire des destinataires.
*/ */
try { 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\""; 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"; 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\""; echo "><input type=\"radio\" name=\"".$liste_entrees_liste_noires_dst_valeurs['id']."\" value=\"0\"";
@@ -68,14 +68,20 @@ _HEREDOC_;
break; break;
case 'expediteurs': case 'expediteurs':
echo <<<_HEREDOC_ echo <<<_HEREDOC_
<h1>Ajouter une entrée dans la liste noire des expéditeurs</h1> <div class="card mt-4">
<form action="/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php" method="post"> <div class="card-body">
<input type="text" id="nom_pour_filtre" name="courriel_entree_liste_noire_exp" placeholder="utilisateur@domaine.tld*" onkeyup="filtreValeurs();" required> <h5 class="card-title">Ajouter une entrée dans la liste noire des expéditeurs</h5>
<select name="choix_code_retour_entree_liste_noire_exp"> <form action="/services/traitements/liste_noire_exp/ajoutEntreeListeNoireExp.php" method="post">
<option value="554">REJECT</option> <div class="input-group">
</select> <input type="text" class="form-control" id="nom_pour_filtre" name="courriel_entree_liste_noire_exp" placeholder="utilisateur@domaine.tld" onkeyup="filtreValeurs();" required>
<input type="submit" value="Ajouter"> <select class="form-select" name="choix_code_retour_entree_liste_noire_exp">
</form> <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> <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. * Liste des entrées de la liste noire des destinataires.
*/ */
try { 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\""; 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"; 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\""; 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> <script src="/fichiers/js/filtre.js"></script>
</div> </div>
@@ -15,7 +15,7 @@ if (testPrivileges()=="administrateur" && isset($_POST['choix_utilisateur']) &&
die(); die();
} }
else { else {
header ("Location: /pages/visiteurs/formulaire_accueil.php?erreur=2"); header ("Location: /pages/visiteurs/formulaire_accueil.php?erreur=18");
die(); die();
} }
@@ -11,6 +11,6 @@
// Destruction de la session // Destruction de la session
session_destroy (); session_destroy ();
// 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=1'); header('location: /pages/visiteurs/formulaire_accueil.php?succes=15');
?> ?>