From 7a08fd7e29b83f7ad7a43f73d66bfb496cf7dd1f Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 14 Jul 2016 09:25:09 +0200 Subject: [PATCH] =?UTF-8?q?Correction=20du=20repo=20'admin'=20pour=20prend?= =?UTF-8?q?re=20en=20compte=20l'appartenance=20=C3=A0=20un=20entrepot=20(i?= =?UTF-8?q?mpl=C3=A9mentation=20manuelle)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/Authentification.php | 10 +- manager/module/authentificationDefault.php | 13 +- manager/repo/admin.php | 156 +++++++++++++++++++++ 3 files changed, 167 insertions(+), 12 deletions(-) diff --git a/manager/Authentification.php b/manager/Authentification.php index 26c1a5f..3b15a50 100644 --- a/manager/Authentification.php +++ b/manager/Authentification.php @@ -105,17 +105,13 @@ /* [3] Si authentification double =========================================================*/ if( self::auth() >= 2 ){ - $checkBranch = new Repo('admin/getByToken', [ $_SESSION['AUTH'][1] ]); + $checkBranch = new Repo('admin/getByToken', [ $_SESSION['WAREHOUSE']['id'], $_SESSION['AUTH'][1] ]); /* (1) Si le token n'existe pas, on retourne une erreur */ if( $checkBranch->answer() == false ) return false; - - /* (2) Si pas administrateur de l'entrepot, on retourne une erreur */ - if( $checkBranch->answer()[0]['id_warehouse'] != $_SESSION['WAREHOUSE']['id'] ) - return false; - - /* (3) On met à jour les informations de l'administrateur */ + + /* (2) On met à jour les informations de l'administrateur */ $_SESSION['ADMIN'] = [ 'id' => (int) $checkBranch->answer()[0]['id_admin'], 'username' => $checkBranch->answer()[0]['username'], diff --git a/manager/module/authentificationDefault.php b/manager/module/authentificationDefault.php index 9fd226f..6ff8f54 100644 --- a/manager/module/authentificationDefault.php +++ b/manager/module/authentificationDefault.php @@ -33,7 +33,7 @@ $nameFetched = $getName->answer(); - // Si aucun résultat, on retourne une erreur + // Si aucun résultat, on retourne le status FALSE if( count($nameFetched) == 0 ) return [ 'status' => false ]; @@ -42,7 +42,7 @@ =========================================================*/ $hash_password = sessionManager::secure_hash($password); - // Si mot de passe faux, on retourne une erreur + // Si mot de passe faux, on retourne le status FALSE if( $nameFetched[0]['password'] != $hash_password ) return [ 'status' => false ]; @@ -81,11 +81,14 @@ /* [1] On recherche un entrepot avec ce nom =========================================================*/ - $getUsername = new Repo('admin/getByUsername', [$username]); + $getUsername = new Repo('admin/getByUsername', [ + $_SESSION['WAREHOUSE']['id'], + $username + ]); $usernameFetched = $getUsername->answer(); - // Si aucun résultat, on retourne une erreur + // Si aucun résultat, on retourne le status FALSE if( count($usernameFetched) == 0 ) return [ 'status' => false ]; @@ -94,7 +97,7 @@ =========================================================*/ $hash_password = sessionManager::secure_hash($password); - // Si mot de passe faux, on retourne une erreur + // Si mot de passe faux, on retourne le status FALSE if( $usernameFetched[0]['password'] != $hash_password ) return [ 'status' => false ]; diff --git a/manager/repo/admin.php b/manager/repo/admin.php index d8464cb..0243190 100644 --- a/manager/repo/admin.php +++ b/manager/repo/admin.php @@ -191,6 +191,162 @@ + /* RETOURNE UN ADMINISTRATEUR PARTICULIER + * + * @id_warehouse UID de l'entrepot + * @id_admin Token de l'administrateur en question + * + * @return admin Retourne le premier résultat + * FALSE si erreur + * + */ + public static function getById($id_warehouse, $id_admin){ + /* [1] On redige/execute la requete + =========================================================*/ + $get_admin = Database::getPDO()->prepare("SELECT * + FROM admin + WHERE id_warehouse = :id_warehouse + AND id_admin = :id_admin"); + $get_admin->execute([ + ':id_warehouse' => $id_warehouse, + ':id_admin' => $id_admin + ]); + + $fetched = $get_admin->fetch(); + + /* [2] On vérifie qu'on a trouvé qqch + =========================================================*/ + if( $fetched === false ) + return false; + + // On retourne le résultat + return Database::delNumeric( $fetched, true ); + } + + + + + + + + + /* RETOURNE UN ADMINISTRATEUR PARTICULIER + * + * @id_warehouse UID de l'entrepot + * @username Identifiant de l'administrateur en question + * + * @return admin Retourne le premier résultat + * FALSE si erreur + * + */ + public static function getByUsername($id_warehouse, $username){ + /* [1] On redige/execute la requete + =========================================================*/ + $get_admin = Database::getPDO()->prepare("SELECT * + FROM admin + WHERE id_warehouse = :id_warehouse + AND username = :username"); + $get_admin->execute([ + ':id_warehouse' => $id_warehouse, + ':username' => $username + ]); + + $fetched = $get_admin->fetch(); + + /* [2] On vérifie qu'on a trouvé qqch + =========================================================*/ + if( $fetched === false ) + return false; + + // On retourne le résultat + return Database::delNumeric( $fetched, true ); + } + + + + + + + + + /* RETOURNE UN ADMINISTRATEUR PARTICULIER + * + * @id_warehouse UID de l'entrepot + * @mail Adresse mail de l'administrateur en question + * + * @return admin Retourne le premier résultat + * FALSE si erreur + * + */ + public static function getByMail($id_warehouse, $mail){ + /* [1] On redige/execute la requete + =========================================================*/ + $get_admin = Database::getPDO()->prepare("SELECT * + FROM admin + WHERE id_warehouse = :id_warehouse + AND mail = :mail"); + $get_admin->execute([ + ':id_warehouse' => $id_warehouse, + ':mail' => $mail + ]); + + $fetched = $get_admin->fetch(); + + /* [2] On vérifie qu'on a trouvé qqch + =========================================================*/ + if( $fetched === false ) + return false; + + // On retourne le résultat + return Database::delNumeric( $fetched, true ); + } + + + + + + + + + /* RETOURNE UN ADMINISTRATEUR PARTICULIER + * + * @id_warehouse UID de l'entrepot + * @token Token de l'administrateur en question + * + * @return admin Retourne le premier résultat + * FALSE si erreur + * + */ + public static function getByToken($id_warehouse, $token){ + /* [1] On redige/execute la requete + =========================================================*/ + $get_admin = Database::getPDO()->prepare("SELECT * + FROM admin + WHERE id_warehouse = :id_warehouse + AND token = :token"); + $get_admin->execute([ + ':id_warehouse' => $id_warehouse, + ':token' => $token + ]); + + $fetched = $get_admin->fetch(); + + /* [2] On vérifie qu'on a trouvé qqch + =========================================================*/ + if( $fetched === false ) + return false; + + // On retourne le résultat + return Database::delNumeric( $fetched, true ); + } + + + + + + + +