Commit 53e75e115f565a8aa59e455b9d8d8a6af21d49c4
1 parent
d3ada92f
api/connexion 1/2
Showing
4 changed files
with
81 additions
and
2 deletions
Show diff stats
@@ -0,0 +1 @@ | @@ -0,0 +1 @@ | ||
1 | +constantes.php |
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +#Configuration | ||
2 | + | ||
3 | +L'API a besoin d'un fichier de configuration pour se connecter à la base de donnée. Il doit se nommer `constantes.php` et doit contenir les informations de connexion sous la forme suivante : | ||
4 | + | ||
5 | +```php | ||
6 | +<?php | ||
7 | + | ||
8 | +define("DB_HOST", "localhost"); | ||
9 | +define("DB_USER", "10p5"); | ||
10 | +define("DB_NAME", "10p5"); | ||
11 | +define("DB_PASS", "uu4oshooW7"); | ||
12 | + | ||
13 | +?> | ||
14 | +``` |
api/commun.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | +include_once("constantes.php"); | ||
4 | + | ||
5 | +// Définition des headers HTTP | ||
3 | header('Access-Control-Allow-Origin: *'); // Histoire de pouvoir accéder à l'API depuis autre part que le serveur | 6 | header('Access-Control-Allow-Origin: *'); // Histoire de pouvoir accéder à l'API depuis autre part que le serveur |
4 | header('Content-type: application/json'); // Histoire de faire comprendre au client que c'est du JSON | 7 | header('Content-type: application/json'); // Histoire de faire comprendre au client que c'est du JSON |
5 | 8 | ||
6 | -function retour($status, $donnees = array()) { | 9 | +// Fonctions utiles |
10 | +function retour($status, $donnees = array()) { // Renvoie les données passées | ||
7 | $donnees['status'] = $status; | 11 | $donnees['status'] = $status; |
8 | - echo json_encode($donnees); | 12 | + echo json_encode($donnees)."\r\n"; |
13 | + global $db; | ||
14 | + if (isset($db) && $db) { | ||
15 | + $db->close(); | ||
16 | + } | ||
17 | + exit(); | ||
18 | +} | ||
19 | + | ||
20 | +function donne($parametre) { // Vérifie si le paramètre est donné | ||
21 | + if (isset($_POST[$parametre]) && $_POST[$parametre]) { | ||
22 | + return $_POST[$parametre]; | ||
23 | + } else { | ||
24 | + return false; | ||
25 | + } | ||
9 | } | 26 | } |
10 | 27 | ||
28 | +mysqli_report(MYSQLI_REPORT_ALL); | ||
29 | + | ||
30 | +// Connexion à la base de donnée | ||
31 | +$db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); | ||
32 | + | ||
33 | +if ($db->connect_error) { | ||
34 | + retour("erreur_bdd", ["message" => $db->connect_error]); | ||
35 | +} | ||
36 | + | ||
37 | +$db->set_charset("utf8"); | ||
38 | + | ||
39 | +// Vérification de la présence de bcrypt | ||
40 | +if (!defined("CRYPT_BLOWFISH") || !CRYPT_BLOWFISH) { | ||
41 | + retour("manque_bcrypt"); | ||
42 | +} | ||
43 | + | ||
44 | + | ||
11 | ?> | 45 | ?> |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +<?php | ||
2 | + | ||
3 | +require_once("commun.php"); | ||
4 | + | ||
5 | +// Vérification des paramètres | ||
6 | + | ||
7 | +if (donne("login") && donne("mdp")) { | ||
8 | + // Si l'utilisateur s'authentifie par login + mdp | ||
9 | + $login = donne("login"); | ||
10 | + $requete = $db->prepare("SELECT mdp FROM Utilisateurs WHERE login = ?"); | ||
11 | + $requete->bind_param("s", $login); | ||
12 | + $requete->execute(); | ||
13 | + $requete->bind_result($mdpHash); | ||
14 | + if ($requete->fetch()) { | ||
15 | + if (!password_verify(donne("mdp"), $mdpHash)) { | ||
16 | + retour("identifiants_invalides"); // Mot de passe incorrect | ||
17 | + } | ||
18 | + } else { | ||
19 | + retour("identifiants_invalides"); // Identifiant inconnu | ||
20 | + } | ||
21 | +} else if (donne("idCarte")) { | ||
22 | + // Si l'utilisateur s'authentifie par carte | ||
23 | + retour("non_implemente"); // TODO | ||
24 | +} else { | ||
25 | + retour("requete_malformee"); | ||
26 | +} | ||
27 | + | ||
28 | +retour("ok"); | ||
29 | + | ||
30 | +?> |