summaryrefslogtreecommitdiff
path: root/controller/password.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/password.php')
-rw-r--r--controller/password.php178
1 files changed, 171 insertions, 7 deletions
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