From 1cbd0d58dbf9b0f0e6bc3d1c272072b2872e6397 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 15 Jul 2016 17:53:21 +0200 Subject: [PATCH] Ajout/Suppression de permissions pour des groupes d'utilisateurs envers des groupes de machines fonctionnel : repositories 'association/addPermission' + 'association/removePermission' --- manager/repo/association.php | 62 ++++++++++++++++++++++++++++++++++++ test/automate.php | 11 +++++-- 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/manager/repo/association.php b/manager/repo/association.php index fd14ec5..1775b02 100644 --- a/manager/repo/association.php +++ b/manager/repo/association.php @@ -110,6 +110,68 @@ + + + /* SUPPRESSION D'UNE PERMISSION ENTRE 2 GROUPES (UTIL -> MACHINE) + * + * @id_target UID d'un groupe MACHINE + * @id_source UID d'un groupe UTILISATEUR + * @id_permission UID d'une PERMISSION + * + * @return error Retourne l'erreur 'ManagerError' associée + * + */ + public static function removePermission($id_target, $id_source, $id_permission){ + + /* [1] On vérifie que l'entrée existe + =========================================================*/ + /* (1) On effectue la requête */ + $checkExists = self::getByIdTarget($id_target); + + /* (2) Si on a un résultat correspondant aux données, c'est bon */ + $existingId = null; + if( is_array($checkExists) && count($checkExists) > 0 ){ + + /* (3) Si les données sont identiques pour au moins une entrée, on peut supprimer */ + foreach($checkExists as $s=>$sameTarget) + if( $sameTarget['id_source'] == $id_source && $sameTarget['id_permission'] == $id_permission ) + $existingId = $sameTarget['id_association']; + } + + /* (3) Si on a pas trouvé, on retourne une erreur */ + if( is_null($existingId) ) + return ManagerError::NoMatchFound; + + + /* [2] On supprime la permission + =========================================================*/ + /* (1) On effectue la suppression */ + $delete = Database::getPDO()->prepare("DELETE FROM association + WHERE id_association = :id_association + AND id_target = :id_target + AND id_source = :id_source + AND id_permission = :id_permission"); + $deleted = $delete->execute([ + ':id_association' => $existingId, + ':id_target' => $id_target, + ':id_source' => $id_source, + ':id_permission' => $id_permission + ]); + + /* (2) Si erreur SQL, on retourne une erreur */ + if( !$deleted || self::getById($existingId) !== false ) + return ManagerError::RepoError; + + + return ManagerError::Success; + } + + + + + + + } diff --git a/test/automate.php b/test/automate.php index 73bcbc4..b96fce7 100755 --- a/test/automate.php +++ b/test/automate.php @@ -329,10 +329,17 @@ $getAll = new Repo('admin/getAll'); }//createWarehouse(); + + + + + + + debug(); - $req = new Repo('association/addPermission', [ + $req = new Repo('association/removePermission', [ 205, - 1, + 2, 1 ]);