summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2025-06-24 23:57:59 +0200
committerpolo <ordipolo@gmx.fr>2025-06-24 23:57:59 +0200
commit7a13d53e43c7db7fe39474208ffa54ba2906d308 (patch)
tree5bb9af2935c0e7c753c5eace6d9e4538c739a383 /src
parent41adf94ebf868232aa43fe9b8b80029896da9da7 (diff)
downloadcms-7a13d53e43c7db7fe39474208ffa54ba2906d308.zip
petites améliorations au système de mot de passe
Diffstat (limited to 'src')
-rw-r--r--src/controller/ajax_calendar_admin.php (renamed from src/controller/ajax_calendar.php)37
-rw-r--r--src/controller/ajax_calendar_visitor.php39
-rw-r--r--src/controller/password.php16
-rw-r--r--src/controller/post.php13
-rw-r--r--src/view/password.php4
5 files changed, 60 insertions, 49 deletions
diff --git a/src/controller/ajax_calendar.php b/src/controller/ajax_calendar_admin.php
index 79268f6..0baf73e 100644
--- a/src/controller/ajax_calendar.php
+++ b/src/controller/ajax_calendar_admin.php
@@ -1,45 +1,12 @@
1<?php 1<?php
2// src/controller/calendar.php 2// src/controller/ajax_calendar_admin.php
3 3
4declare(strict_types=1); 4declare(strict_types=1);
5 5
6use App\Entity\Event; 6use App\Entity\Event;
7 7
8// chargement des évènements à la création du calendrier
9// et au changement de dates affichées (boutons flèches mais pas changement de vue)
10if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['action']) && $_GET['action'] === 'get_events'
11 && isset($_GET['start']) && isset($_GET['end']) && empty($_POST))
12{
13 // bornes début et fin du calendrier affiché à l'heure locale
14 // noter que la vue "planning" est similaire à la vue "semaine"
15 $start = new DateTime($_GET['start']);
16 $end = new DateTime($_GET['end']);
17 $start->setTimezone(new DateTimeZone('UTC'));
18 $end->setTimezone(new DateTimeZone('UTC'));
19
20 // affichage format ISO à l'heure UTC
21 //$date->format('Y-m-d\TH:i:s\Z');
22
23 // on prend les évènements se finissant après le début ou commençant avant la fin de la fourchette
24 $dql = 'SELECT e FROM App\Entity\Event e WHERE e.end >= :start AND e.start <= :end';
25 $bulk_data = $entityManager->createQuery($dql)
26 ->setParameter('start', $start)
27 ->setParameter('end', $end)
28 ->getResult();
29
30 $events = [];
31 foreach($bulk_data as $one_entry){
32 $event = new EventDTO($one_entry);
33 $events[] = $event->toArray();
34 }
35
36 header('Content-Type: application/json');
37 echo json_encode($events);
38 die;
39}
40
41// actions sur le calendrier 8// actions sur le calendrier
42elseif(isset($_SESSION['admin']) && $_SESSION['admin'] === true 9if(isset($_SESSION['admin']) && $_SESSION['admin'] === true
43 && $_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['CONTENT_TYPE'] === 'application/json') 10 && $_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['CONTENT_TYPE'] === 'application/json')
44{ 11{
45 $data = file_get_contents('php://input'); 12 $data = file_get_contents('php://input');
diff --git a/src/controller/ajax_calendar_visitor.php b/src/controller/ajax_calendar_visitor.php
new file mode 100644
index 0000000..dcdbebd
--- /dev/null
+++ b/src/controller/ajax_calendar_visitor.php
@@ -0,0 +1,39 @@
1<?php
2// src/controller/ajax_calendar_visitor.php
3
4declare(strict_types=1);
5
6use App\Entity\Event;
7
8// chargement des évènements à la création du calendrier
9// et au changement de dates affichées (boutons flèches mais pas changement de vue)
10if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['action']) && $_GET['action'] === 'get_events'
11 && isset($_GET['start']) && isset($_GET['end']) && empty($_POST))
12{
13 // bornes début et fin du calendrier affiché à l'heure locale
14 // noter que la vue "planning" est similaire à la vue "semaine"
15 $start = new DateTime($_GET['start']);
16 $end = new DateTime($_GET['end']);
17 $start->setTimezone(new DateTimeZone('UTC'));
18 $end->setTimezone(new DateTimeZone('UTC'));
19
20 // affichage format ISO à l'heure UTC
21 //$date->format('Y-m-d\TH:i:s\Z');
22
23 // on prend les évènements se finissant après le début ou commençant avant la fin de la fourchette
24 $dql = 'SELECT e FROM App\Entity\Event e WHERE e.end >= :start AND e.start <= :end';
25 $bulk_data = $entityManager->createQuery($dql)
26 ->setParameter('start', $start)
27 ->setParameter('end', $end)
28 ->getResult();
29
30 $events = [];
31 foreach($bulk_data as $one_entry){
32 $event = new EventDTO($one_entry);
33 $events[] = $event->toArray();
34 }
35
36 header('Content-Type: application/json');
37 echo json_encode($events);
38 die;
39} \ No newline at end of file
diff --git a/src/controller/password.php b/src/controller/password.php
index 5573a33..62b1542 100644
--- a/src/controller/password.php
+++ b/src/controller/password.php
@@ -86,7 +86,7 @@ function createPassword(EntityManager $entityManager)
86 } 86 }
87 else 87 else
88 { 88 {
89 $error = 'bad_password'; 89 $error = 'bad_login_or_password';
90 90
91 // compteur dans la session et blocage de compte 91 // compteur dans la session et blocage de compte
92 } 92 }
@@ -217,15 +217,6 @@ function changePassword(EntityManager $entityManager)
217{ 217{
218 // fonction exécutée à priori deux fois d'affilée: affichage puis traitement de la saisie 218 // fonction exécutée à priori deux fois d'affilée: affichage puis traitement de la saisie
219 219
220 // OUT !!
221 if(empty($_SESSION['user']) || !$_SESSION['admin'])
222 {
223 $_SESSION['user'] = '';
224 $_SESSION['admin'] = false;
225 header('Location: index.php');
226 die;
227 }
228
229 // II - traitement 220 // II - traitement
230 $error = ''; 221 $error = '';
231 $success = false; 222 $success = false;
@@ -254,6 +245,9 @@ function changePassword(EntityManager $entityManager)
254 { 245 {
255 $error = 'forbidden_characters'; 246 $error = 'forbidden_characters';
256 } 247 }
248 elseif($login !== $_SESSION['user']){
249 $error = 'bad_login_or_password';
250 }
257 else 251 else
258 { 252 {
259 $user = getUser($login, $entityManager); 253 $user = getUser($login, $entityManager);
@@ -268,7 +262,7 @@ function changePassword(EntityManager $entityManager)
268 } 262 }
269 else 263 else
270 { 264 {
271 $error = 'bad_password'; 265 $error = 'bad_login_or_password';
272 } 266 }
273 } 267 }
274 } 268 }
diff --git a/src/controller/post.php b/src/controller/post.php
index b0bc6a0..3ba0656 100644
--- a/src/controller/post.php
+++ b/src/controller/post.php
@@ -220,6 +220,14 @@ if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true)
220 header("Location: " . new URL(['page' => $_GET['from']])); 220 header("Location: " . new URL(['page' => $_GET['from']]));
221 die; 221 die;
222 } 222 }
223 elseif(isset($_GET['action']) && $_GET['action'] === 'modif_mdp'
224 && isset($_POST['login']) && isset($_POST['old_password']) && isset($_POST['new_password'])
225 && isset($_POST['modify_password_hidden']) && empty($_POST['modify_password_hidden']))
226 {
227 changePassword($entityManager);
228 header("Location: " . new URL(['page' => $_GET['from']]));
229 die;
230 }
223 else{ 231 else{
224 header("Location: " . new URL(['error' => 'paramètres inconnus'])); 232 header("Location: " . new URL(['error' => 'paramètres inconnus']));
225 die; 233 die;
@@ -230,5 +238,8 @@ if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true)
230 else{ 238 else{
231 require '../src/controller/ajax.php'; 239 require '../src/controller/ajax.php';
232 } 240 }
241
242 require '../src/controller/ajax_calendar_admin.php';
233} 243}
234require '../src/controller/ajax_calendar.php'; \ No newline at end of file 244
245require '../src/controller/ajax_calendar_visitor.php';
diff --git a/src/view/password.php b/src/view/password.php
index ed99040..77f8736 100644
--- a/src/view/password.php
+++ b/src/view/password.php
@@ -72,6 +72,7 @@ ob_start();
72 <input id="old_password" type="password" name="old_password" required ><br><br> 72 <input id="old_password" type="password" name="old_password" required ><br><br>
73 <label for="new_password" >Nouveau mot de passe:</label> 73 <label for="new_password" >Nouveau mot de passe:</label>
74 <input id="new_password" type="password" name="new_password" required autocomplete="off"> 74 <input id="new_password" type="password" name="new_password" required autocomplete="off">
75 <input type="hidden" name="modify_password_hidden">
75 <br><br> 76 <br><br>
76 <input type="submit" value="Valider" > 77 <input type="submit" value="Valider" >
77 </form> 78 </form>
@@ -109,8 +110,7 @@ $header = ob_get_clean();
109$error_messages = [ 110$error_messages = [
110 'error_non_valid_captcha' => '<p class="avertissement" >Erreur au test anti-robot, veuillez saisir un nombre entier.</p>', 111 'error_non_valid_captcha' => '<p class="avertissement" >Erreur au test anti-robot, veuillez saisir un nombre entier.</p>',
111 'bad_solution_captcha' => '<p class="avertissement" >Erreur au test anti-robot, veuillez réessayer.</p>', 112 'bad_solution_captcha' => '<p class="avertissement" >Erreur au test anti-robot, veuillez réessayer.</p>',
112 'bad_login_or_password' => '<p class="avertissement" >Mauvais identifiant ou mot de passe, veuillez réessayer.</p>', 113 'bad_login_or_password' => '<p class="avertissement" >Mauvais identifiant ou mot de passe, veuillez réessayer.</p>', // ne pas indiquer où est l'erreur
113 'bad_password' => '<p class="avertissement" >Mauvais mot de passe, veuillez réessayer.</p>',
114 'forbidden_characters' => '<p class="avertissement" >Caractères interdits: espaces, tabulations, sauts CR/LF.</p>' 114 'forbidden_characters' => '<p class="avertissement" >Caractères interdits: espaces, tabulations, sauts CR/LF.</p>'
115]; 115];
116 116