Commit 53e75e115f565a8aa59e455b9d8d8a6af21d49c4

Authored by Geoffrey PREUD'HOMME
1 parent d3ada92f

api/connexion 1/2

api/.gitignore 0 → 100644
... ... @@ -0,0 +1 @@
  1 +constantes.php
... ...
api/README.md 0 → 100644
... ... @@ -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 1 <?php
2 2  
  3 +include_once("constantes.php");
  4 +
  5 +// Définition des headers HTTP
3 6 header('Access-Control-Allow-Origin: *'); // Histoire de pouvoir accéder à l'API depuis autre part que le serveur
4 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 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 ?>
... ...
api/connexion.php 0 → 100644
... ... @@ -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 +?>
... ...