diff --git a/automate.php b/automate.php index 9341a9f..71b7b51 100755 --- a/automate.php +++ b/automate.php @@ -1,6 +1,11 @@ prepare("INSERT INTO user(id_user, code, username, firstname, lastname, mail, password, status) + $insertRequest = Database::getPDO()->prepare("INSERT INTO user(id_user, code, username, firstname, lastname, mail, password, status) VALUES( DEFAULT, :code, @@ -59,13 +64,13 @@ * */ function insertMachinesFromJSON(){ - $json = \manager\ResourceDispatcher::getResource('f/json/generated_machines/conf'); + $json = ResourceDispatcher::getResource('f/json/generated_machines/conf'); $json = json_decode( $json, true ); // Pour chaque entree foreach( $json as $machine ){ - $insertRequest = \manager\Database::getPDO()->prepare("INSERT INTO machine(id_machine, code, name) + $insertRequest = Database::getPDO()->prepare("INSERT INTO machine(id_machine, code, name) VALUES( DEFAULT, :code, @@ -102,10 +107,10 @@ function selectUsers(){ // Creation de la requete - $requete = new manager\ModuleRequest('userDefault/getAll'); + $requete = new ModuleRequest('userDefault/getAll'); $answer = $requete->dispatch(); - var_dump( \manager\ManagerError::explicit($answer->error) ); + var_dump( ManagerError::explicit($answer->error) ); var_dump( $answer->get('users') ); return true; @@ -126,10 +131,10 @@ function selectMachines(){ // Creation de la requete - $requete = new manager\ModuleRequest('machineDefault/getAll'); + $requete = new ModuleRequest('machineDefault/getAll'); $answer = $requete->dispatch(); - var_dump( \manager\ManagerError::explicit($answer->error) ); + var_dump( ManagerError::explicit($answer->error) ); var_dump( $answer->get('machines') ); return true; @@ -152,12 +157,12 @@ function displayUsers(){ // Creation de la requete - $request = new \manager\ModuleRequest('userDefault/getAll'); + $request = new ModuleRequest('userDefault/getAll'); $answer = $request->dispatch(); // Debug error - if( $answer->error != \manager\ManagerError::Success ) - var_dump( \manager\ManagerError::explicit($answer->error) ); + if( $answer->error != ManagerError::Success ) + var_dump( ManagerError::explicit($answer->error) ); // display result var_dump( $answer->getAll() ); @@ -182,9 +187,9 @@ function testModuleDispatcher(){ // Creation d'une requete en objet - $req1 = new manager\ModuleRequest('firstModule/returnvar', array('id_user' => 10, 'code' => '11-22-33-44') ); + $req1 = new ModuleRequest('firstModule/returnvar', array('id_user' => 10, 'code' => '11-22-33-44') ); // Creation d'une requete a partir d'un json en - $req2 = manager\ModuleRequest::fromString('{"path": "firstModule/returnvar", "data": {"id_user":10, "code":"11-22-33-44"}}'); + $req2 = ModuleRequest::fromString('{"path": "firstModule/returnvar", "data": {"id_user":10, "code":"11-22-33-44"}}'); var_dump( $req1->dispatch() ); @@ -204,12 +209,12 @@ function testRepoDispatcher(){ // Creation d'une requete en objet - $req1 = new manager\Repo('user/getById', array('19')); - // $req1 = new manager\Repo('user/getByCode', array('92-55-B9-B3')); + $req1 = new Repo('user/getById', array('19')); + // $req1 = new Repo('user/getByCode', array('92-55-B9-B3')); var_dump( $req1->answer() ); - if( $req1->error != manager\ManagerError::Success ) - var_dump( manager\ManagerError::explicit($req1->error) ); + if( $req1->error != ManagerError::Success ) + var_dump( ManagerError::explicit($req1->error) ); return true; @@ -230,17 +235,15 @@ function insertUsersComposite(){ // Creation de la requete - $request = new \manager\ModuleRequest('userDefault/create', array('92-55-B9-B3', 'b', 'bla', 'bla', 'bla@test.com', 'sadas', '1') ); + $request = new ModuleRequest('userDefault/create', array('92-55-B9-B1', 'b', 'bla', 'bla', 'bla@test.com', 'sadas', '1') ); $answer = $request->dispatch(); // Debug error - var_dump( $answer->error ); - var_dump( \manager\ManagerError::explicit($answer->error) ); + if( $answer->error != ManagerError::Success ) + var_dump( ManagerError::explicit($answer->error) ); var_dump( $answer->getAll() ); return true; - }//insertUsersComposite(); - - + }insertUsersComposite(); ?> \ No newline at end of file diff --git a/config/repositories.json b/config/repositories.json index 5be92f0..7ed0083 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -21,13 +21,15 @@ "getGroup" ], - "group" :[ + "cluster" :[ "create", "link", "unlink", "getAll", "getById", + "getByName", + "getMerge", "getMembers" ] diff --git a/manager/module/userDefault.php b/manager/module/userDefault.php index f1a7342..c054cf9 100755 --- a/manager/module/userDefault.php +++ b/manager/module/userDefault.php @@ -72,7 +72,7 @@ /* [3] Creation du groupe de meme nom que l'username =========================================================*/ - $create_group = new Repo('group/create', array($username) ); + $create_group = new Repo('cluster/create', array($username) ); $id_group = $create_group->answer(); // Si une erreur est retournee, on retourne une erreur @@ -84,7 +84,7 @@ /* [4] Association au groupe =========================================================*/ - $assoc_goup = new Repo('group/link', array($id_user, $id_group)); + $assoc_goup = new Repo('cluster/link', array($id_group, $id_user)); $id_assoc = $assoc_goup->answer(); // Si une erreur est retournee, on retourne une erreur diff --git a/manager/repo/cluster.php b/manager/repo/cluster.php new file mode 100755 index 0000000..28fcc25 --- /dev/null +++ b/manager/repo/cluster.php @@ -0,0 +1,286 @@ + Nom du groupe + * + * @return id_user Renvoie l'UID du groupe cree + * Renvoie FALSE si une erreur occure + * + */ + public static function create($name){ + /* [1] Verification de l'unicite de name + =========================================================*/ + $check_unique = ( self::getByName($name) === false ); + + // Si un groupe a deja ce nom, on renvoie une erreur + if( !$check_unique ) + return false; + + + /* [2] Creation du groupe + =========================================================*/ + $insert_user = Database::getPDO()->prepare("INSERT INTO cluster(id_cluster, name) + VALUES(DEFAULT, :name)"); + $insert_user->execute(array( + ':name' => $name + )); + + /* [3] On retourne l'id_group ou FALSE si erreur + =========================================================*/ + $check_group = self::getByName($name); + + // Si n'existe pas on retourne FALSE + if( $check_group === false ) + return false; + + // Sinon, on retourne son id + return $check_group['id_cluster']; + + } + + /* ASSOCIATION D'UN(E) UTILISATEUR/MACHINE A UN GROUPE + * + * @id_cluster UID du groupe + * @id_entity UID de la machine ou de l'utilisateur + * + * @return association Renvoie l'UID de l'association cree + * Renvoie FALSE si une erreur occure + * + */ + public static function link($id_cluster, $id_entity){ + /* [1] Verification de l'existence du groupe + =========================================================*/ + $group_check = self::getById($id_cluster); + + // Si le groupe n'existe pas, on retourne ue erreur + if( $group_check === false ) + return false; + + + + /* [2] Verification de l'existente de l'entite + =========================================================*/ + // On verifie si c'est une machine + $machine_check = machineRepo::getById($id_entity); + $is_machine = ( $machine_check !== FALSE ); + + // On verifie si c'est un utilisateur + $user_check = userRepo::getById($id_entity); + $is_user = ( $machine_check !== FALSE ); + + // Si aucune entite existante, on retourne une erreur + if( !$is_machine && !$is_user ) + return false; + + + + /* [3] On cree l'association + =========================================================*/ + $link_entity = Database::getPDO()->prepare("INSERT INTO cluster_merge(id_cluster_merge, id_cluster, id_entity) + VALUES(DEFAULT, :id_cluster, :id_entity)"); + $link_entity->execute(array( + ':id_cluster' => $id_cluster, + ':id_entity' => $id_entity + )); + + /* [3] On retourne l'id_cluster_merge ou FALSE si erreur + =========================================================*/ + $check_cluster_merge = self::getMerge($id_cluster, $id_entity); + + // Si n'existe pas on retourne FALSE + if( $check_cluster_merge === false ) + return false; + + // Sinon, on retourne son id + return $check_cluster_merge['id_cluster_merge']; + + } + + + + + + + + /* RENVOIE LA LISTE DE TOUS LES GROUPES + * + * @return groups Liste des groupes de la BDD + * + */ + public static function getAll(){ + // On ecrit la requete + $request = Database::getPDO()->query("SELECT * FROM cluster ORDER BY name"); + + // On recupere le resultat + $answer = $request->fetchAll(); + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer ); + } + + + + + + + + + /* RENVOIE LE GROUPE D'ID DONNE + * + * @id UID du groupe en question + * + * @return group Renvoie le groupe d'id donne si existe + * @return error Retourne FALSE si aucun resultat + * + */ + public static function getById($id){ + // On ecrit la requete + $request = Database::getPDO()->prepare("SELECT * FROM cluster + WHERE id_cluster = :id"); + + // On execute la requete + $request->execute(array( + ':id' => $id + )); + + // On recupere 1 seul groupe + $answer = $request->fetch(); + + // Gestion d'erreur -> aucun resultat + if( $answer === false ) + return false; + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer, true ); + } + + + + + + + + + /* RENVOIE LE GROUPE DE NOM DONNE + * + * @name Nom du groupe en question + * + * @return groupe Renvoie le groupe de nom donne si existe + * @return error Retourne FALSE si aucun resultat + * + */ + public static function getByName($name){ + // On ecrit la requete + $request = Database::getPDO()->prepare("SELECT * FROM cluster + WHERE name = :name"); + + + // On execute la requete + $request->execute(array( + ':name' => $name + )); + + // On recupere 1 seul groupe + $answer = $request->fetch(); + + // Gestion d'erreur -> aucun resultat + if( $answer === false ) + return false; + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer, true ); + + + } + + + + + + + + + /* RENVOIE L'ID D'UNE ASSOCIATION D'UN(E) UTILISATEUR/MACHINE A UN GROUPE + * + * @id_cluster UID du groupe + * @id_entity UID de la machine ou de l'utilisateur + * + * @return association Renvoie l'UID de l'association cree + * Renvoie FALSE si une erreur occure + * + */ + public static function getMerge($id_cluster, $id_entity){ + // On ecrit la requete + $request = Database::getPDO()->prepare("SELECT * FROM cluster_merge + WHERE id_cluster = :id_cluster + AND id_entity = :id_entity"); + + // On execute la requete + $request->execute(array( + ':id_cluster' => $id_cluster, + ':id_entity' => $id_entity + )); + + // On recupere 1 seule relation + $answer = $request->fetch(); + + // Gestion d'erreur -> aucun resultat + if( $answer === false ) + return false; + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer, true ); + } + + + + + + + + + /* SUPPRIME UN GROUPE DONNE + * + * @id_cluster UID du groupe en question + * + * @return status Retourne si oui ou non le groupe a bien ete supprime + * + */ + public static function delete($id_cluster){ + /* [1] On redige/execute la requete + =========================================================*/ + $delete_group = Database::getPDO()->prepare("DELETE FROM cluster WHERE id_cluster = :id_cluster"); + $delete_group->execute(array( + ':id_cluster' => $id_cluster + )); + + + /* [2] On verifie que le groupe n'existe plus + =========================================================*/ + return ( self::getById($id_group) === false ); + } + + + + + + + + + + + + + + } + + +?> \ No newline at end of file diff --git a/manager/repo/machine.php b/manager/repo/machine.php new file mode 100644 index 0000000..8e8fcd9 --- /dev/null +++ b/manager/repo/machine.php @@ -0,0 +1,188 @@ + Nom du groupe + * + * @return id_user Renvoie l'UID du groupe cree + * Renvoie FALSE si une erreur occure + * + */ + public static function create($name){ + /* [1] Verification de l'unicite de name + =========================================================*/ + $check_unique = ( self::getByName($name) === false ); + + // Si un groupe a deja ce nom, on renvoie une erreur + if( !$check_unique ) + return false; + + + /* [2] Creation du groupe + =========================================================*/ + $insert_user = Database::getPDO()->prepare("INSERT INTO cluster(id_cluster, name) + VALUES(DEFAULT, :name)"); + $insert_user->execute(array( + ':name' => $name + )); + + /* [3] On retourne l'id_group ou FALSE si erreur + =========================================================*/ + $check_group = self::getByName($name); + + // Si n'existe pas on retourne FALSE + if( $check_group === false ) + return false; + + // Sinon, on retourne son id + return $check_group['id_cluster']; + + } + + + + + + + + /* RENVOIE LA LISTE DE TOUTES LES MACHINES + * + * @return machine Liste des machines de la BDD + * + */ + public static function getAll(){ + // On ecrit la requete + $request = Database::getPDO()->query("SELECT * FROM machine ORDER BY id_machine"); + + // On recupere le resultat + $answer = $request->fetchAll(); + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer ); + } + + + + + + + + + /* RENVOIE LA MACHINE D'ID DONNE + * + * @id Id de la machine en question + * + * @return machine Renvoie la machine d'id donne si existe + * @return error Retourne FALSE si aucun resultat + * + */ + public static function getById($id){ + // On ecrit la requete + $request = Database::getPDO()->prepare("SELECT * FROM machine + WHERE id_machine = :id"); + + // On execute la requete + $request->execute(array( + ':id' => $id + )); + + // On recupere 1 seule machine + $answer = $request->fetch(); + + // Gestion d'erreur -> aucun resultat + if( $answer === false ) + return false; + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer, true ); + } + + + + + + + + + /* RENVOIE LA MACHINE DE NOM DONNE + * + * @name Nom du groupe en question + * + * @return groupe Renvoie le groupe de nom donne si existe + * @return error Retourne FALSE si aucun resultat + * + */ + public static function getByName($name){ + // On ecrit la requete + $request = Database::getPDO()->prepare("SELECT * FROM cluster + WHERE name = :name"); + + + // On execute la requete + $request->execute(array( + ':name' => $name + )); + + // On recupere 1 seul groupe + $answer = $request->fetch(); + + // Gestion d'erreur -> aucun resultat + if( $answer === false ) + return false; + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer, true ); + + + } + + + + + + + + + /* SUPPRIME UNE MACHINE DONNE + * + * @id_machine UID de la machine en question + * + * @return status Retourne si oui ou non la machine a bien ete supprime + * + */ + public static function delete($id_machine){ + /* [1] On redige/execute la requete + =========================================================*/ + $delete_machine = Database::getPDO()->prepare("DELETE FROM machine WHERE id_machine = :id_machine"); + $delete_machine->execute(array( + ':id_machine' => $id_machine + )); + + + /* [2] On verifie que la machine n'existe plus + =========================================================*/ + return ( self::getById($id_machine) === false ); + } + + + + + + + + + + + + + + } + + +?> \ No newline at end of file diff --git a/manager/repo/user.php b/manager/repo/user.php index 52b731d..445cc10 100755 --- a/manager/repo/user.php +++ b/manager/repo/user.php @@ -2,6 +2,7 @@ namespace manager\repo; use \manager\Database; + use \manager\repo\cluster as clusterRepo; class user{ @@ -15,16 +16,44 @@ * @password Mot de passe de l'utilisateur * @status Status de l'utilisateur * - * @return nomRetour Description du retour + * @return id_user Renvoie l'UID de l'utilisateur cree + * Renvoie FALSE si une erreur occure * */ public static function create($code, $username, $firstname, $lastname, $mail, $password, $status){ - /* [1] Creation de l'utilisateur (unicite de l'username) + /* [1] Verification de l'unicite de code+username =========================================================*/ $check_unique = ( self::getByCode($code) == false ); $check_unique = $check_unique && ( self::getByUsername($username) == false ); - var_dump($check_unique); + // Si un utilisateur a deja ce code ou cet username, on renvoie une erreur + if( !$check_unique ) + return false; + + /* [2] Creation de l'utilisateur + =========================================================*/ + $insert_user = Database::getPDO()->prepare("INSERT INTO user(id_user, code, username, firstname, lastname, mail, password, status) + VALUES(DEFAULT, :code, :username, :firstname, :lastname, :mail, :password, :status)"); + $insert_user->execute(array( + ':code' => $code, + ':username' => $username, + ':firstname' => $firstname, + ':lastname' => $lastname, + ':mail' => $mail, + ':password' => $password, + ':status' => $status + )); + + /* [3] On retourne l'id_user ou FALSE si erreur + =========================================================*/ + $check_user = self::getByCode($code); + + // Si n'existe pas on retourne FALSE + if( $check_user === false ) + return false; + + // Sinon, on retourne son id + return $check_user['id_user']; } @@ -79,7 +108,7 @@ $answer = $request->fetch(); // Gestion d'erreur -> aucun resultat - if( $answer == null ) + if( $answer === false ) return false; // On retourne en supprimant les indices numeriques @@ -115,7 +144,7 @@ $answer = $request->fetch(); // Gestion d'erreur -> aucun resultat - if( $answer == null ) + if( $answer === false ) return false; // On retourne en supprimant les indices numeriques @@ -153,7 +182,7 @@ $answer = $request->fetch(); // Gestion d'erreur -> aucun resultat - if( $answer == null ) + if( $answer === false ) return false; // On retourne en supprimant les indices numeriques diff --git a/todo.md b/todo.md index 9372e09..d5b3a8c 100755 --- a/todo.md +++ b/todo.md @@ -15,7 +15,7 @@ ############ - [ ] Gestion des groupes (utilisateurs/machines) - [x] bdd - - [ ] Creation d'un groupe individuel pour utilisateurs + - [x] Creation d'un groupe individuel pour utilisateurs + association - [ ] Creation d'un groupe individuel pour machines - [ ] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine) - [ ] Prendre en compte au lieu de SERVER['HTTP_HOST'] l'hote et son dossier source @@ -39,6 +39,10 @@ ######## # FAIT # ######## +- [x] [manager/repo/]Creation des repos + - [x] [user] utilisateur + - [x] [machine] machines + - [x] [cluster] groupes - [x] [view/][view] Ajout de "use CLASS;" - [x] Ajout de "use CLASS;" dans les fichiers pour simplifier la lisibilite - [x] [phpunit/sessionManager] test unitaires du manager de session php