From 35c0c64ddfcf46dee003d13c16161ea339ed0db0 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sun, 24 Apr 2016 17:57:50 +0200 Subject: [PATCH] api/utilisateur/{ajout,supprim}er --- BDD.sql | 2 +- api/commun.php | 37 +++++++++++++++++++++++++++++-------- api/utilisateur/ajouter.php | 27 +++++++++++++++++++++++++++ api/utilisateur/connexion.php | 12 +++++++++--- api/utilisateur/deconnexion.php | 9 +-------- api/utilisateur/supprimer.php | 24 ++++++++++++++++++++++++ 6 files changed, 91 insertions(+), 20 deletions(-) create mode 100644 api/utilisateur/ajouter.php create mode 100644 api/utilisateur/supprimer.php diff --git a/BDD.sql b/BDD.sql index 7157dd5..17151c2 100644 --- a/BDD.sql +++ b/BDD.sql @@ -2,7 +2,7 @@ CREATE TABLE Utilisateurs ( loginLille1 char(30), idCarte char(8), login char(30) PRIMARY KEY, - mdp char(60), + mdp char(255), droit integer DEFAULT '0' ); diff --git a/api/commun.php b/api/commun.php index 40ee6fa..155626d 100644 --- a/api/commun.php +++ b/api/commun.php @@ -33,7 +33,9 @@ function donne($parametre) { // Vérifie si le paramètre est donné function supprimerJeton($jeton) { $requete = $db->prepare("DELETE FROM Sessions WHERE jeton=?"); $requete->bind_param("s", $jeton); - $requete->execute(); + if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); + } $requete->close(); } @@ -41,7 +43,9 @@ function verifierJeton($jeton) { global $db, $login, $droit; $requete = $db->prepare("SELECT Utilisateurs.login, Utilisateurs.droit, UNIX_TIMESTAMP(Sessions.date) FROM Utilisateurs JOIN Sessions ON Utilisateurs.login=Sessions.utilisateur WHERE Sessions.jeton=?"); $requete->bind_param("s", $jeton); - $requete->execute(); + if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); + } $requete->bind_result($login, $droit, $date); if ($requete->fetch()) { if (time() > $date + JETON_DUREE) { @@ -53,6 +57,29 @@ function verifierJeton($jeton) { $requete->close(); } +function verifierDroit($droitMinimum) { + global $droit; + if (donne("jeton")) { + verifierJeton(donne("jeton")); + if ($droit < $droitMinimum) { + retour("droits_insuffisants"); + } + } else { + retour("jeton_vide"); + } +} + +function utilisateurExiste($login) { + global $db; + $requete = $db->prepare("SELECT login FROM Utilisateurs WHERE login=?"); + $requete->bind_param("s", $login); + if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); + } + return $requete->fetch(); + $requete->close(); +} + // Variables globales $login = ""; @@ -65,11 +92,5 @@ if ($db->connect_error) { retour("erreur_bdd", ["message" => $db->connect_error]); } -// Vérification de la présence de bcrypt -if (!defined("CRYPT_BLOWFISH") || !CRYPT_BLOWFISH) { - retour("manque_bcrypt"); -} - - ?> diff --git a/api/utilisateur/ajouter.php b/api/utilisateur/ajouter.php new file mode 100644 index 0000000..1b37bfd --- /dev/null +++ b/api/utilisateur/ajouter.php @@ -0,0 +1,27 @@ +prepare("INSERT INTO Utilisateurs (login, mdp, droit) VALUES (?, ?, ?)"); +$mdpHash = password_hash($_POST["mdp"], PASSWORD_DEFAULT); +$requete->bind_param("sss", $_POST["login"], $mdpHash, $_POST["droit"]); +if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); +} +$requete->close(); + +// TODO loginLille1 && idCarte + +retour("ok"); + +?> diff --git a/api/utilisateur/connexion.php b/api/utilisateur/connexion.php index 5de62e2..aad1ae0 100644 --- a/api/utilisateur/connexion.php +++ b/api/utilisateur/connexion.php @@ -19,7 +19,9 @@ if (donne("login") && donne("mdp")) { $login = donne("login"); $requete = $db->prepare("SELECT mdp FROM Utilisateurs WHERE login = ?"); $requete->bind_param("s", $login); - $requete->execute(); + if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); + } $requete->bind_result($mdpHash); if ($requete->fetch()) { if (!password_verify(donne("mdp"), $mdpHash)) { @@ -42,14 +44,18 @@ $jeton = random_str(JETON_TAILLE); $requete = $db->prepare("INSERT INTO Sessions (jeton, utilisateur) VALUES (?, ?)"); $requete->bind_param("ss", $jeton, $login); -$requete->execute(); +if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); +} $requete->close(); // Récupération des données de l'utilisateur $requete = $db->prepare("SELECT droit FROM Utilisateurs WHERE login = ?"); $requete->bind_param("s", $login); -$requete->execute(); +if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); +} $requete->bind_result($droit); $requete->fetch(); $requete->close(); diff --git a/api/utilisateur/deconnexion.php b/api/utilisateur/deconnexion.php index 744758b..654561e 100644 --- a/api/utilisateur/deconnexion.php +++ b/api/utilisateur/deconnexion.php @@ -2,14 +2,7 @@ require_once("../commun.php"); - -// Vérification des paramètres - -if (!donne("jeton")) { - retour("requete_malformee"); -} - -verifierJeton(donne("jeton")); +verifierDroit(0); supprimerJeton(donne("jeton")); diff --git a/api/utilisateur/supprimer.php b/api/utilisateur/supprimer.php new file mode 100644 index 0000000..5cfef97 --- /dev/null +++ b/api/utilisateur/supprimer.php @@ -0,0 +1,24 @@ +prepare("DELETE FROM Utilisateurs WHERE login=?"); +$requete->bind_param("s", $_POST["login"]); +if (!$requete->execute()) { + retour("erreur_bdd", ["message" => $requete->error]); +} +$requete->close(); + +retour("ok"); + +?> -- libgit2 0.21.2