summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2021-08-18 10:45:26 +0200
committerpolo <ordipolo@gmx.fr>2021-08-18 10:45:26 +0200
commit452420d0cd05822a9974fe27f0edc4cc4dc300cc (patch)
treeb9f3e14e598080f54bf5ab4ee0657ba3624908aa
parent84cb077b39d990c240976a6b20024c89c903ba91 (diff)
downloadmelaine-452420d0cd05822a9974fe27f0edc4cc4dc300cc.zip
password
-rw-r--r--controller/admin.php52
-rw-r--r--controller/installation.php14
-rw-r--r--controller/password.php178
-rw-r--r--controller/visitor.php51
-rw-r--r--index.php38
-rw-r--r--model/Classes.php19
-rw-r--r--public/accueil.css46
-rw-r--r--public/main.js11
-rw-r--r--view/password.php (renamed from view/connexion.php)30
-rw-r--r--view/template.php4
10 files changed, 275 insertions, 168 deletions
diff --git a/controller/admin.php b/controller/admin.php
index 29ccd41..0abdb1c 100644
--- a/controller/admin.php
+++ b/controller/admin.php
@@ -90,55 +90,3 @@ function discoEdit($numArticle, $suppression)
90 // fin de l'assemblage 90 // fin de l'assemblage
91 require('view/template.php'); 91 require('view/template.php');
92} 92}
93
94function changerMotDePasse($secret)
95{
96 // vérification supplémentaire
97 if($_SESSION['admin'] !== 1)
98 {
99 $_SESSION['admin'] = 0;
100 header('Location: index.php?page=' . $_GET['from']);
101 exit();
102 }
103
104 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire
105 // Et créer une variable de session pour la réponse au CAPTCHA
106
107 $title = "nouveau mot de passe";
108 $subHeading = "Veuillez saisir votre actuel mot de passe suivi du nouveau.";
109
110 // cette page utilise la même vue que la fonction connexion() dans controller/visiteur.php
111 require('view/connexion.php');
112
113 echo($header);
114
115 // traitements: vérification ancien mot de passe et choix du nouveau
116 // bon mot de passe
117 if(isset ($_POST["ancienMotdepasse"]) AND $_POST["ancienMotdepasse"] == $secret)
118 {
119 // confirmation
120 echo($message);
121 //exit();
122
123 /*header('Location: index.php?page=' . $_GET['from'] . '&message=nouveau_mdp');
124 exit();*/
125 }
126
127 // mauvais mot de passe
128 elseif(isset ($_POST["ancienMotdepasse"]) AND $_POST["ancienMotdepasse"] != $secret)
129 {
130 // défense aux attaques par force brute
131 // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site
132 echo($erreurMDP);
133 sleep(1);
134 echo($formulaireNouveauMDP);
135 }
136
137 // première arrivée sur la page
138 else
139 {
140 echo($formulaireNouveauMDP);
141 }
142
143 echo($footer);
144}
diff --git a/controller/installation.php b/controller/installation.php
index e7136a5..42212f5 100644
--- a/controller/installation.php
+++ b/controller/installation.php
@@ -49,7 +49,7 @@ function installation()
49 // - modifier ceux du dossier parent (nom du site) avec son client FTP à la mise en ligne chez l'hébergeur et ensuite remettre tout comme avant 49 // - modifier ceux du dossier parent (nom du site) avec son client FTP à la mise en ligne chez l'hébergeur et ensuite remettre tout comme avant
50 50
51 // le 0 devant signifie que le nombre est en octal 51 // le 0 devant signifie que le nombre est en octal
52 // on pourra changer cette valeur à la mise en production du site si le script d'upload des données est bon 52 // changer cette valeur à la mise en production du site si le script d'upload des données est bon
53 $droitsDossiers = 0777; 53 $droitsDossiers = 0777;
54 54
55 $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives'); 55 $listePages = array('melaine', 'discographie', 'concerts', 'presse', 'ateliers', 'liens', 'peinture', 'archives');
@@ -82,5 +82,15 @@ function installation()
82 mkdir('data/discographie/json'); 82 mkdir('data/discographie/json');
83 chmod('data/discographie/json', $droitsDossiers); 83 chmod('data/discographie/json', $droitsDossiers);
84 } 84 }
85 // donner les droits 666 aux fichiers à l'intérieur 85 // fichier password.txt
86 if(!file_exists('data/password.txt'))
87 {
88 touch('data/password.txt');
89 chmod('data/password.txt', 0600);
90 }
91
92 // le modèle donnera les droits 0666 (octal) aux nouveaux fichiers à l'intérieur des dossiers
93
94 // création d'un mot de passe si password.txt est vide
95 createPassword();
86} 96}
diff --git a/controller/password.php b/controller/password.php
index 987670f..4ca9f4f 100644
--- a/controller/password.php
+++ b/controller/password.php
@@ -1,16 +1,180 @@
1<?php 1<?php
2// password.php 2// password.php
3 3
4function hashNewPassword() 4
5// affichage
6function createPassword()
5{ 7{
6 //$hash = password_hash($password, PASSWORD_DEFAULT); 8 // si installation() vient de créer un fichier vide
9 $hashedPassword = trim(file_get_contents('data/password.txt'));
10 if(empty($hashedPassword))
11 {
12 // paranoïa
13 if(isset($_SESSION['admin']))
14 {
15 unset($_SESSION['admin']);
16 header("Location: index.php");
17 exit();
18 }
19
20 // au rechargement: un mot de passe a été saisi
21 // les espaces/tabulations sont considérés commes des erreurs
22 if(isset($_POST['motdepasse']) && !empty(trim($_POST['motdepasse'])))
23 {
24 // enregistrement
25 hashNewPassword($_POST['motdepasse']);
26 header('Location: index.php');
27 }
28 // 1ère fois
29 else
30 {
31 $title = "Créer un mot de passe";
32 $subHeading = "Veuillez choisir le mot de passe que vous utiliserez pour gérer le site.";
33
34 require('view/password.php');
7 35
8 // écrire dans un fichier 36 echo($header);
37 echo($formulaireNouveauMDP);
38 echo($warning);
39 }
40 exit();
41 }
9} 42}
10 43
11function testPassword() 44function connect()
12{ 45{
13 // lire dans un fichier 46 // déjà en mode admin
14 47 if($_SESSION['admin'] == 1)
15 //if(password_verify($password, $hash)) 48 {
49 header('Location: index.php?page=' . $_GET['from']);
50 exit();
51 }
52
53 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire
54 // Et créer une variable de session pour la réponse au CAPTCHA
55
56 $title = "Connexion";
57 $subHeading = "Veuillez saisir votre mot de passe pour pouvoir apporter des modifications au site.";
58
59 // cette page utilise la même vue que la fonction changerMotDePasse() dans controller/admin.php
60 require('view/password.php');
61
62 echo($header);
63
64 // bon mot de passe
65 if(isset ($_POST["motdepasse"]) AND testPassword($_POST["motdepasse"]))
66 {
67 $_SESSION['admin'] = 1;
68 header('Location: index.php?page=' . $_GET['from']);
69 exit();
70 }
71
72 // mauvais mot de passe
73 elseif(isset ($_POST["motdepasse"]) AND !testPassword($_POST["motdepasse"]))
74 {
75 // défense aux attaques par force brute
76 // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site
77 echo($erreurMDP);
78 sleep(1);
79 echo($formulaireConnexion);
80 }
81
82 // première arrivée sur la page
83 else
84 {
85 echo($formulaireConnexion);
86 }
87
88 echo($footer);
89}
90
91function changePassword()
92{
93 // vérification supplémentaire
94 if($_SESSION['admin'] !== 1)
95 {
96 $_SESSION['admin'] = 0;
97 header('Location: index.php?page=' . $_GET['from']);
98 exit();
99 }
100
101 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire
102 // Et créer une variable de session pour la réponse au CAPTCHA
103 $title = "Nouveau mot de passe";
104 $subHeading = "Veuillez saisir votre actuel mot de passe suivi du nouveau.";
105
106 // cette page utilise la même vue que la fonction connexion() dans controller/visiteur.php
107 require('view/password.php');
108
109 echo($header);
110
111 // traitements: vérification ancien mot de passe et choix du nouveau
112 // bon mot de passe
113 //if(isset ($_POST["ancienMotdepasse"]) AND $_POST["ancienMotdepasse"] == $secret)
114 if(isset ($_POST["ancienMotdepasse"]) AND testPassword($_POST["ancienMotdepasse"]))
115 {
116 // enregistrement
117 hashNewPassword($_POST["nouveauMotdepasse"]);
118
119 // confirmation
120 echo($message);
121 //exit();
122
123 /*header('Location: index.php?page=' . $_GET['from'] . '&message=nouveau_mdp');
124 exit();*/
125 }
126
127 // mauvais mot de passe
128 elseif(isset ($_POST["ancienMotdepasse"]) AND !testPassword($_POST["ancienMotdepasse"]))
129 {
130 // défense aux attaques par force brute
131 // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site
132 echo($erreurMDP);
133 sleep(1);
134 echo($formulaireModifMDP);
135 }
136
137 // première arrivée sur la page
138 else
139 {
140 echo($formulaireModifMDP);
141 }
142
143 echo($warning);
144 echo($footer);
145}
146
147
148// hachage
149function hashNewPassword($newPassword)
150{
151 // "réparation" des espaces accidentels
152 $newPassword= trim($newPassword);
153 // hachage
154 $newHashedPassword = password_hash($newPassword, PASSWORD_DEFAULT);
155
156 // écriture
157 $file = fopen('data/password.txt', 'w');
158 fputs($file, $newHashedPassword);
159 fclose($file);
160 chmod('data/password.txt', 0600);
161}
162
163function testPassword($password)
164{
165 // lecture
166 $oldHashedPassword = file_get_contents('data/password.txt');
167
168 // "réparation" des espaces accidentels
169 $password= trim($password);
170 $oldHashedPassword = trim($oldHashedPassword);
171
172 if(password_verify($password, $oldHashedPassword))
173 {
174 return true;
175 }
176 else
177 {
178 return false;
179 }
16} \ No newline at end of file 180} \ No newline at end of file
diff --git a/controller/visitor.php b/controller/visitor.php
index 539df1f..4f51dda 100644
--- a/controller/visitor.php
+++ b/controller/visitor.php
@@ -37,7 +37,7 @@ function melaineVisitor()
37 $Articles->setPage($page_actuelle); 37 $Articles->setPage($page_actuelle);
38 $Articles->getFiles(); 38 $Articles->getFiles();
39 $Articles->reverseFilesArray(); 39 $Articles->reverseFilesArray();
40 $articles = $Articles->getAll(); 40 $articles = $Articles->getAll(); // lourd
41 41
42 // vérification pour protéger les visiteurs 42 // vérification pour protéger les visiteurs
43 // normalement déjà faite dans submit.php, au cas où la base a été trafiquée 43 // normalement déjà faite dans submit.php, au cas où la base a été trafiquée
@@ -79,51 +79,4 @@ function peinture()
79{} 79{}
80 80
81function archives() 81function archives()
82{} 82{} \ No newline at end of file
83
84function connexion($secret)
85{
86 // déjà en mode admin
87 if($_SESSION['admin'] == 1)
88 {
89 header('Location: index.php?page=' . $_GET['from']);
90 exit();
91 }
92
93 // Ajouter une sécurité par cpatcha avec un "input" supplémentaire
94 // Et créer une variable de session pour la réponse au CAPTCHA
95
96 $title = "connexion";
97 $subHeading = "Veuillez saisir votre mot de passe pour pouvoir apporter des modifications au site.";
98
99 // cette page utilise la même vue que la fonction changerMotDePasse() dans controller/admin.php
100 require('view/connexion.php');
101
102 echo($header);
103
104 // bon mot de passe
105 if(isset ($_POST["motdepasse"]) AND $_POST["motdepasse"] == $secret)
106 {
107 $_SESSION['admin'] = 1;
108 header('Location: index.php?page=' . $_GET['from']);
109 exit();
110 }
111
112 // mauvais mot de passe
113 elseif(isset ($_POST["motdepasse"]) AND $_POST["motdepasse"] != $secret)
114 {
115 // défense aux attaques par force brute
116 // pas parfait, ne marche pas si l'attaquant multiplie les connexions au site
117 echo($erreurMDP);
118 sleep(1);
119 echo($formulaireConnexion);
120 }
121
122 // première arrivée sur la page
123 else
124 {
125 echo($formulaireConnexion);
126 }
127
128 echo($footer);
129}
diff --git a/index.php b/index.php
index 8f6128e..dc5f3ba 100644
--- a/index.php
+++ b/index.php
@@ -38,12 +38,7 @@
38// - autoriser PHP (sinon, c'est comme si on avait un site statique) 38// - autoriser PHP (sinon, c'est comme si on avait un site statique)
39// -> pour pouvoir installer le site en n'ayant qu'à modifier les droits du dossier data uniquement et éviter les situations pénibles ou l'utilisateur est bloqué sans rien comprendre, on pourra créer ou utiliser des sauvegardes au format ZIP depuis une page spéciale accessible avec le compte admin 39// -> pour pouvoir installer le site en n'ayant qu'à modifier les droits du dossier data uniquement et éviter les situations pénibles ou l'utilisateur est bloqué sans rien comprendre, on pourra créer ou utiliser des sauvegardes au format ZIP depuis une page spéciale accessible avec le compte admin
40 40
41// au premier démarrage du site 41// sessions, penser aux attaques CSRF (cross-site request forgery):
42// l'explication des éventuels problèmes de droits en lecture/écriture est à chercher ici:
43require('controller/installation.php');
44installation();
45
46// à propos des sessions, penser aux attaques CSRF (cross-site request forgery):
47// ça consite à faire qu'un utilisateur connecté avec une session envoie malgré lui une requête GET ou POST qu'un hacker aura cachée par exemple dans une fausse image clicable 42// ça consite à faire qu'un utilisateur connecté avec une session envoie malgré lui une requête GET ou POST qu'un hacker aura cachée par exemple dans une fausse image clicable
48// - solution: faire qu'un GET seul dans une session ne suffise pas à effectuer une action (les GET ne doivent servir qu'à afficher la bonne page), une attaque sur un POST est possible aussi mais plus difficile et nécessite d'injecter du javascript 43// - solution: faire qu'un GET seul dans une session ne suffise pas à effectuer une action (les GET ne doivent servir qu'à afficher la bonne page), une attaque sur un POST est possible aussi mais plus difficile et nécessite d'injecter du javascript
49// - on peut demander à l'utilisateur une vérification supplémentaire avant chaque action, mais c'est plutôt chiant 44// - on peut demander à l'utilisateur une vérification supplémentaire avant chaque action, mais c'est plutôt chiant
@@ -52,6 +47,14 @@ installation();
52// infos: https://fr.wikipedia.org/wiki/Cross-site_request_forgery 47// infos: https://fr.wikipedia.org/wiki/Cross-site_request_forgery
53session_start(); 48session_start();
54 49
50// au premier démarrage du site
51// l'explication des éventuels problèmes de droits en lecture/écriture est à chercher ici:
52require('controller/installation.php');
53require('controller/password.php');
54installation();
55
56
57
55// traitement des POST du ckeditor 58// traitement des POST du ckeditor
56// la fonction submitCKeditor n'affiche rien (controller/admin.php n'est pas utilisé) puis redirige sans GET 59// la fonction submitCKeditor n'affiche rien (controller/admin.php n'est pas utilisé) puis redirige sans GET
57if(isset($_SESSION['admin']) && $_SESSION['admin'] == 1 60if(isset($_SESSION['admin']) && $_SESSION['admin'] == 1
@@ -116,21 +119,20 @@ else
116} 119}
117 120
118 121
119// mot de passe de connexion à hacher!
120// utiliser php pour ça, plus le .htaccess
121require('controller/password.php');
122$secret = "julian";
123
124 122
125// page du site demandée 123// page du site demandée
126if(isset($_GET['page'])) 124if(isset($_GET['page']))
127{ 125{
126 // page d'accueil
127 if($_GET['page'] == 'accueil')
128 {
129 accueil();
130 }
128 // page menu 131 // page menu
129 if($_GET['page'] == 'menu') 132 elseif($_GET['page'] == 'menu')
130 { 133 {
131 menu(); 134 menu();
132 } 135 }
133
134 // page melaine 136 // page melaine
135 elseif($_GET['page'] == 'melaine') 137 elseif($_GET['page'] == 'melaine')
136 { 138 {
@@ -200,10 +202,10 @@ if(isset($_GET['page']))
200 discoVisitor(); 202 discoVisitor();
201 } 203 }
202 } 204 }
203 // page connexion au mode admin 205 // page connexion
204 elseif($_GET['page'] == 'connexion') 206 elseif($_GET['page'] == 'connexion')
205 { 207 {
206 connexion($secret); 208 connect();
207 } 209 }
208 // $_GET['page'] = n'importe quoi! 210 // $_GET['page'] = n'importe quoi!
209 else 211 else
@@ -216,9 +218,10 @@ if(isset($_GET['page']))
216// actions en mode admin, recharger une des pages principales 218// actions en mode admin, recharger une des pages principales
217elseif($_SESSION['admin'] == 1 && isset($_GET['action'])) 219elseif($_SESSION['admin'] == 1 && isset($_GET['action']))
218{ 220{
219 if($_GET['action'] == 'nouveau_mdp') 221 if($_GET['action'] == 'modif_mdp')
220 { 222 {
221 changerMotDePasse($secret); 223 //changePassword($secret);
224 changePassword();
222 } 225 }
223 // extraction du contenu du dossier data 226 // extraction du contenu du dossier data
224 else if($_GET['action'] == 'extraction') 227 else if($_GET['action'] == 'extraction')
@@ -250,7 +253,6 @@ elseif(isset($_GET['erreur']))
250 //else 253 //else
251 //{ 254 //{
252 accueil(); 255 accueil();
253 // accueil_404(); // à créer
254 //} 256 //}
255} 257}
256 258
diff --git a/model/Classes.php b/model/Classes.php
index 1b2a463..e574eeb 100644
--- a/model/Classes.php
+++ b/model/Classes.php
@@ -1,5 +1,5 @@
1<?php 1<?php
2// model/ArticlesManager.php 2// model/Classes.php
3 3
4class ArticlesManager 4class ArticlesManager
5{ 5{
@@ -16,11 +16,6 @@ class ArticlesManager
16 $this->page = $page; 16 $this->page = $page;
17 } 17 }
18 18
19 //public function setAscending($croissant)
20 //{
21 // $this->Ascending = $croissant;
22 //}
23
24 public function findFileName($numArticle) 19 public function findFileName($numArticle)
25 { 20 {
26 $this->fileName = $this->files[$numArticle - 1]; 21 $this->fileName = $this->files[$numArticle - 1];
@@ -53,12 +48,10 @@ class ArticlesManager
53 { 48 {
54 if($this->page == '') 49 if($this->page == '')
55 { 50 {
56 die("debug: la méthode setPage() doit être appelée avant toute autre."); 51 die("debug: la méthode setPage() doit être appelée avant getFiles().");
57 } 52 }
58 53
59 $this->files = glob('data/' . $this->page . '/html/*.html'); 54 $this->files = glob('data/' . $this->page . '/html/*.html');
60
61 //$this->nbArticles = count($this->files);
62 } 55 }
63 56
64 // ordre du tableau des noms de fichiers 57 // ordre du tableau des noms de fichiers
@@ -160,8 +153,8 @@ class AlbumsManager extends ArticlesManager
160 153
161 // create 154 // create
162 //public function create($titre, $annee, $pochette) 155 //public function create($titre, $annee, $pochette)
163 //public function create($content) 156 public function create($content)
164 public function create($content, $titre, $annee, $pochette) 157 //public function create($content, $titre, $annee, $pochette)
165 {} 158 {}
166 159
167 // read 160 // read
@@ -170,8 +163,8 @@ class AlbumsManager extends ArticlesManager
170 163
171 // update 164 // update
172 //public function update($titre, $annee, $pochette) 165 //public function update($titre, $annee, $pochette)
173 //public function update($content) 166 public function update($content)
174 public function update($content, $titre, $annee, $pochette) 167 //public function update($content, $titre, $annee, $pochette)
175 {} 168 {}
176 169
177 // delete 170 // delete
diff --git a/public/accueil.css b/public/accueil.css
index 2e4426a..7f33393 100644
--- a/public/accueil.css
+++ b/public/accueil.css
@@ -112,7 +112,7 @@ form
112 112
113.zoneVideAdmin 113.zoneVideAdmin
114{ 114{
115 padding-top: 30px; 115 padding-top: 20px;
116} 116}
117 117
118#modeAdmin 118#modeAdmin
@@ -122,17 +122,22 @@ form
122 bottom: 0px; 122 bottom: 0px;
123 width: 700px; 123 width: 700px;
124 z-index: 2; 124 z-index: 2;
125 padding-top: 10px; 125 padding-top: 5px;
126 text-align: center; 126 text-align: center;
127} 127}
128 128
129#modeAdmin p 129#modeAdmin p
130{ 130{
131 text-align: center; 131 text-align: center;
132 margin-top: 0px; 132 margin: 0px;
133 padding: 2px; 133 padding: 2px;
134} 134}
135 135#modeAdmin>div p
136{
137 /*border: 1px black solid;*/
138 margin: 5px;
139 padding: 0px;
140}
136#modeAdmin>p a 141#modeAdmin>p a
137{ 142{
138 padding: 2px; 143 padding: 2px;
@@ -142,8 +147,8 @@ form
142{ 147{
143 display: flex; 148 display: flex;
144 justify-content: space-around; 149 justify-content: space-around;
145 border: 1px black solid; 150
146 margin: 10px; 151 margin: 0px;
147 font-size: 85%; 152 font-size: 85%;
148} 153}
149 154
@@ -258,7 +263,7 @@ form
258 263
259 .zoneVideAdmin, #modeAdmin 264 .zoneVideAdmin, #modeAdmin
260 { 265 {
261 height: 100px; 266 height: 70px;
262 } 267 }
263} 268}
264 269
@@ -333,7 +338,7 @@ form
333 338
334 .zoneVideAdmin, #modeAdmin 339 .zoneVideAdmin, #modeAdmin
335 { 340 {
336 height: 90px; 341 height: 75px;
337 } 342 }
338 343
339 #modeAdmin 344 #modeAdmin
@@ -351,6 +356,14 @@ form
351 margin: 0px; 356 margin: 0px;
352 border: none; 357 border: none;
353 } 358 }
359 #modeAdmin
360 {
361 font-size: 90%;
362 }
363 .zoneVideAdmin, #modeAdmin
364 {
365 height: 70px;
366 }
354} 367}
355 368
356@media screen and (max-width: 479px) 369@media screen and (max-width: 479px)
@@ -427,7 +440,7 @@ form
427 440
428 .zoneVideAdmin, #modeAdmin 441 .zoneVideAdmin, #modeAdmin
429 { 442 {
430 height: 80px; 443 height: 65px;
431 } 444 }
432 445
433 #modeAdmin 446 #modeAdmin
@@ -437,7 +450,7 @@ form
437 450
438 #modeAdmin div 451 #modeAdmin div
439 { 452 {
440 margin: 5px; 453 /*margin: 5px;*/
441 } 454 }
442} 455}
443 456
@@ -446,21 +459,26 @@ form
446{ 459{
447 .zoneVideAdmin, #modeAdmin 460 .zoneVideAdmin, #modeAdmin
448 { 461 {
449 height: 100px; 462 height: 80px;
450 } 463 }
451 464
452 #modeAdmin 465 #modeAdmin
453 { 466 {
454 font-size: 95%; 467 font-size: 95%;
468 padding: 0px;
455 } 469 }
456 470 #modeAdmin>p
457 #modeAdmin>p a
458 { 471 {
459 display: block; 472 font-size: 90%;
473 margin: 3px;
460 } 474 }
461 475
462 #modeAdmin div 476 #modeAdmin div
463 { 477 {
464 max-width: 320px; 478 max-width: 320px;
465 } 479 }
480 #modeAdmin>div p
481 {
482 margin: 0px 5px;
483 }
466} 484}
diff --git a/public/main.js b/public/main.js
index ec2b2f1..c392590 100644
--- a/public/main.js
+++ b/public/main.js
@@ -3,25 +3,24 @@
3function versMenu() 3function versMenu()
4{ 4{
5 // ergonomique 5 // ergonomique
6 //window.setTimeout("location=('index.php?page=menu');", 10000); 6 window.setTimeout("location=('index.php?page=menu');", 10000);
7 window.setTimeout(function(){location.href="index.php?page=menu"}, 3000); 7 window.setTimeout(function(){location.href="index.php?page=menu"}, 3000);
8} 8}
9 9
10function deconnexionAutomatique() 10function deconnexionAutomatique()
11{ 11{
12 // minuterie réinitialisée après une action de l'utilisateur 12 // minuterie réinitialisée après une action de l'utilisateur
13 // et sauvegarde avec le plugin "autosave" de l'éditeur
14
15 // 600000 ms = 10 min 13 // 600000 ms = 10 min
16 //window.setTimeout("location=('index.php?action=deconnexion');", 600000); 14 //window.setTimeout("location=('index.php?action=deconnexion');", 600000);
15
16 // sauvegarde de la rédaction en cours avec le plugin "autosave" de l'éditeur
17} 17}
18 18
19// fonction appelée avec onClick dans un lien, 19// fonction appelée avec onClick dans un lien,
20// si on sélectionne pas "oui", on ne doit pas suivre le lien 20// si JS est acti, on ne suit le lien qu'avec un "oui"
21// si javascript est désactivé, le lien fonctionne 21// si JS est désactivé, le lien fonctionne
22function confirmerSuppression() 22function confirmerSuppression()
23{ 23{
24 // ne suivre le lien "href" que si on clique sur oui
25 var oui = confirm('Confirmer la suppression de cet article.'); 24 var oui = confirm('Confirmer la suppression de cet article.');
26 if(!oui) 25 if(!oui)
27 { 26 {
diff --git a/view/connexion.php b/view/password.php
index 1c3aceb..c315610 100644
--- a/view/connexion.php
+++ b/view/password.php
@@ -1,10 +1,21 @@
1<?php 1<?php
2// view/connexion.php 2// view/password.php
3// 3//
4// ce fichier contient le HTML de deux pages du site: 4// ce fichier contient le HTML de deux pages du site:
5// - connexion au mode admin 5// - connexion au mode admin
6// - changement de mot de passe 6// - changement de mot de passe
7 7
8// formulaire création du mot de passe
9ob_start();
10?>
11 <form class="connexionFormulaire" method="post" action="index.php" >
12 <label for="motdepasse" >Mot de passe:</label>
13 <input type="password" name="motdepasse" autofocus required >
14 <input type="submit" value="Valider" >
15 </form>
16<?php
17$formulaireNouveauMDP = ob_get_clean();
18
8// formulaire connexion 19// formulaire connexion
9ob_start(); 20ob_start();
10?> 21?>
@@ -20,7 +31,7 @@ $formulaireConnexion = ob_get_clean();
20// vérification de l'ancien et choix du nouveau à taper deux fois dont une à l'aveugle 31// vérification de l'ancien et choix du nouveau à taper deux fois dont une à l'aveugle
21ob_start(); 32ob_start();
22?> 33?>
23 <form class="connexionFormulaire" method="post" action="index.php?from=<?= $_GET['from'] ?>&action=nouveau_mdp" > 34 <form class="connexionFormulaire" method="post" action="index.php?from=<?= $_GET['from'] ?>&action=modif_mdp" >
24 <label for="motdepasse" >Ancien mot de passe:</label> 35 <label for="motdepasse" >Ancien mot de passe:</label>
25 <input type="password" name="ancienMotdepasse" autofocus required ><br /><br /> 36 <input type="password" name="ancienMotdepasse" autofocus required ><br /><br />
26 <label for="motdepasse" >Nouveau mot de passe:</label> 37 <label for="motdepasse" >Nouveau mot de passe:</label>
@@ -29,7 +40,8 @@ ob_start();
29 <input type="submit" value="Valider" > 40 <input type="submit" value="Valider" >
30 </form> 41 </form>
31<?php 42<?php
32$formulaireNouveauMDP = ob_get_clean(); 43$formulaireModifMDP = ob_get_clean();
44
33 45
34// en-tête 46// en-tête
35ob_start(); 47ob_start();
@@ -60,7 +72,8 @@ $header = ob_get_clean();
60// message d'erreur 72// message d'erreur
61$erreurMDP = '<p class="avertissement" >Mauvais mot de passe</p>'; 73$erreurMDP = '<p class="avertissement" >Mauvais mot de passe</p>';
62 74
63// confirmation modification mot de passe 75
76// confirmation modification du mot de passe
64ob_start(); 77ob_start();
65?> 78?>
66<script type="text/javascript" >nouveauMotdepasse('<?= $_GET["from"] ?>');</script> 79<script type="text/javascript" >nouveauMotdepasse('<?= $_GET["from"] ?>');</script>
@@ -72,10 +85,17 @@ ob_start();
72$message = ob_get_clean(); 85$message = ob_get_clean();
73 86
74 87
88// avertissement
89ob_start();
90?>
91 <p class="avertissement" >Rappel de sécurité<br />Vous n'utilisez pas votre propre ordinateur ou téléphone? Utilisez la navigation privée!</p>
92<?php
93$warning = ob_get_clean();
94
95
75// pied de page 96// pied de page
76ob_start(); 97ob_start();
77?> 98?>
78 <p class="avertissement" >Rappel de sécurité<br />Vous n'utilisez pas votre propre ordinateur ou téléphone: utilisez la navigation privée!</p>
79 <p class="connexionFooter" > 99 <p class="connexionFooter" >
80 <i>N'oubliez de cliquer sur "déconnexion" quand vous aurez fini.</i><br /> 100 <i>N'oubliez de cliquer sur "déconnexion" quand vous aurez fini.</i><br />
81 <a href="index.php?page=<?= $_GET['from'] ?>" >Retour à la page précédente</a> 101 <a href="index.php?page=<?= $_GET['from'] ?>" >Retour à la page précédente</a>
diff --git a/view/template.php b/view/template.php
index ded1d08..dad4e17 100644
--- a/view/template.php
+++ b/view/template.php
@@ -71,11 +71,11 @@ if($_SESSION['admin'] == 1)
71 71
72 <div id="modeAdmin" > 72 <div id="modeAdmin" >
73 <p>Vous êtes en mode administrateur. 73 <p>Vous êtes en mode administrateur.
74 <a href="" >Options</a> 74 <!-- <a id="options" >Options</a> -->
75 <a href="index.php?page=<?= $page_actuelle ?>&action=deconnexion" >Déconnexion</a> 75 <a href="index.php?page=<?= $page_actuelle ?>&action=deconnexion" >Déconnexion</a>
76 </p> 76 </p>
77 <div> 77 <div>
78 <p><a href="index.php?from=<?= $page_actuelle ?>&action=nouveau_mdp" > 78 <p><a href="index.php?from=<?= $page_actuelle ?>&action=modif_mdp" >
79 Changer le mot de passe de connexion.</a></p> 79 Changer le mot de passe de connexion.</a></p>
80 <p><a href="index.php?from=<?= $page_actuelle ?>&action=sauvegarde" > 80 <p><a href="index.php?from=<?= $page_actuelle ?>&action=sauvegarde" >
81 Sauvegarder les données de tout le site.</a></p> 81 Sauvegarder les données de tout le site.</a></p>