From 84e3cf33b6afac770a4685876757417a76f412c0 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 14 Feb 2016 12:37:19 +0100 Subject: [PATCH] - [x] [manager/repo/]Creation des repos - [x] [user] utilisateur - [x] [machine] machines - [x] [cluster] groupes - [ ] Gestion des groupes (utilisateurs/machines) - [x] bdd - [x] Creation d'un groupe individuel pour utilisateurs + association --- automate.php | 49 +++--- config/bdd.sql | 153 +++++++++++++++++- config/repositories.json | 4 +- manager/module/userDefault.php | 4 +- manager/repo/cluster.php | 286 +++++++++++++++++++++++++++++++++ manager/repo/machine.php | 188 ++++++++++++++++++++++ manager/repo/user.php | 41 ++++- todo.md | 6 +- 8 files changed, 691 insertions(+), 40 deletions(-) create mode 100755 manager/repo/cluster.php create mode 100644 manager/repo/machine.php 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/bdd.sql b/config/bdd.sql index 5aff9cd..70ecd5d 100755 --- a/config/bdd.sql +++ b/config/bdd.sql @@ -3,7 +3,7 @@ -- http://www.phpmyadmin.net -- -- Client: localhost --- Généré le: Lun 08 Février 2016 à 18:09 +-- Généré le: Dim 14 Février 2016 à 12:20 -- Version du serveur: 5.5.47-0ubuntu0.14.04.1 -- Version de PHP: 5.5.9-1ubuntu4.14 @@ -22,6 +22,38 @@ SET time_zone = "+00:00"; -- -------------------------------------------------------- +-- +-- Structure de la table `cluster` +-- + +CREATE TABLE IF NOT EXISTS `cluster` ( + `id_cluster` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL, + PRIMARY KEY (`id_cluster`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; + +-- +-- Contenu de la table `cluster` +-- + +INSERT INTO `cluster` (`id_cluster`, `name`) VALUES +(2, 'b'); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `cluster_merge` +-- + +CREATE TABLE IF NOT EXISTS `cluster_merge` ( + `id_cluster_merge` int(11) NOT NULL AUTO_INCREMENT, + `id_cluster` int(11) NOT NULL, + `id_entity` int(11) NOT NULL, + PRIMARY KEY (`id_cluster_merge`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + -- -- Structure de la table `history` -- @@ -29,8 +61,8 @@ SET time_zone = "+00:00"; CREATE TABLE IF NOT EXISTS `history` ( `id_history` int(11) NOT NULL AUTO_INCREMENT, `action` int(11) NOT NULL, - `id_acteur` varchar(20) NOT NULL, - `id_machine` varchar(20) NOT NULL, + `id_acteur` int(11) NOT NULL, + `id_machine` int(11) NOT NULL, PRIMARY KEY (`id_history`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; @@ -43,9 +75,115 @@ CREATE TABLE IF NOT EXISTS `history` ( CREATE TABLE IF NOT EXISTS `machine` ( `id_machine` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, - `name` int(11) NOT NULL, + `name` varchar(30) NOT NULL, PRIMARY KEY (`id_machine`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=201 ; + +-- +-- Contenu de la table `machine` +-- + +INSERT INTO `machine` (`id_machine`, `code`, `name`) VALUES +(101, 'CB-40-70-A0', 'WNTKO'), +(102, 'C9-42-46-45', 'RMUAY'), +(103, '30-DA-23-C0', 'ZSCMZ'), +(104, '6B-F0-82-05', 'AWCUX'), +(105, 'C8-67-58-0E', 'HKSWO'), +(106, 'CB-94-1E-F3', 'ASIFJ'), +(107, '3F-A6-B3-5E', 'CCKEV'), +(108, '8E-24-B5-24', 'KDVSJ'), +(109, '27-15-0B-9D', 'VCEWY'), +(110, 'FE-38-93-E9', 'UKWVN'), +(111, '07-6F-B6-B6', 'FFJDJ'), +(112, '3A-A8-8E-B1', 'NHCWO'), +(113, 'A3-15-41-38', 'IBRFK'), +(114, '99-30-04-B1', 'FGLXK'), +(115, '80-A8-91-C8', 'BUZRV'), +(116, '97-F3-00-93', 'WKNTM'), +(117, 'C6-F7-45-02', 'SPQOQ'), +(118, '25-11-D9-70', 'SSRWE'), +(119, '5B-EF-81-00', 'TIBAH'), +(120, '74-18-01-AE', 'EKOFT'), +(121, '07-27-C3-41', 'GJTJW'), +(122, '23-38-C6-B5', 'XIPNP'), +(123, '35-49-0B-88', 'FDFXQ'), +(124, '36-00-7F-1C', 'HSCUZ'), +(125, 'CB-60-BB-1A', 'BYKBF'), +(126, 'FE-5F-E7-FB', 'GNOKK'), +(127, '54-D1-4D-EC', 'WLSUB'), +(128, '9D-D8-C8-53', 'DMTTJ'), +(129, '32-A8-CB-08', 'OCFWD'), +(130, 'A4-B4-FC-74', 'CABWU'), +(131, '9E-E7-87-A0', 'BUWRJ'), +(132, '3F-90-8D-56', 'OULIX'), +(133, 'C7-95-56-96', 'XCDYM'), +(134, '98-5B-99-35', 'LREGF'), +(135, 'C0-1C-52-1E', 'DDLSP'), +(136, 'AE-01-18-81', 'DTGHG'), +(137, '85-46-39-94', 'BZWUE'), +(138, '9C-3C-45-AB', 'LGDDS'), +(139, '14-A5-92-CE', 'ERXMY'), +(140, 'A4-35-C5-76', 'VJGER'), +(141, '69-8E-6A-11', 'LOXIE'), +(142, '04-73-52-C8', 'IHARA'), +(143, '66-48-DF-7B', 'ZIQJQ'), +(144, '01-D9-22-86', 'ZKUEW'), +(145, 'B4-AC-F6-93', 'BLDTO'), +(146, 'E3-B8-CC-D4', 'OZRQF'), +(147, 'FF-18-3D-CB', 'NWPBM'), +(148, '68-2D-86-1D', 'OZDYC'), +(149, '65-AC-44-36', 'ETUZU'), +(150, '9D-3F-90-E9', 'CNQAB'), +(151, '8B-DE-55-B5', 'OPIIW'), +(152, '15-1B-34-D7', 'ACARQ'), +(153, '0D-E1-41-A8', 'NMHYG'), +(154, '19-FB-D2-82', 'ASKZD'), +(155, 'C6-55-0A-22', 'QMIJT'), +(156, '61-E4-51-C7', 'BBDZL'), +(157, '65-78-34-50', 'WKKYH'), +(158, '41-9A-BF-99', 'AFHJH'), +(159, '05-0D-82-31', 'CASXB'), +(160, '0D-21-6F-00', 'LOXOZ'), +(161, 'F7-84-53-CF', 'ZTUNO'), +(162, 'C2-9A-2D-9A', 'QGQNK'), +(163, 'BE-57-E3-29', 'SVIBS'), +(164, '13-39-5D-21', 'RSVXL'), +(165, 'A6-3D-D3-AC', 'EMESC'), +(166, 'F2-EF-83-5E', 'BBXON'), +(167, '52-F5-7D-2B', 'NGLBK'), +(168, 'BA-30-5C-C7', 'MZHBC'), +(169, 'B5-43-98-38', 'OYEPB'), +(170, '95-AC-FD-6F', 'RQFNK'), +(171, 'E0-12-F0-7D', 'MRUUS'), +(172, 'E2-5F-C1-1F', 'DJDVW'), +(173, '0B-0B-AF-49', 'SOJEJ'), +(174, 'C1-AF-BE-FD', 'YYSRC'), +(175, '6B-71-12-94', 'AJNMI'), +(176, 'E0-D3-67-BB', 'IVUSU'), +(177, 'D7-02-23-82', 'VYPUB'), +(178, '3F-AA-D7-E0', 'SJYUN'), +(179, 'CA-0E-31-E6', 'QRGTG'), +(180, 'D4-92-6B-03', 'LXIFX'), +(181, 'EE-0A-F5-D3', 'YXWTP'), +(182, '73-EB-04-C8', 'SMEFT'), +(183, '32-37-21-39', 'HUTUW'), +(184, '97-13-49-2E', 'DYCLY'), +(185, 'EE-63-92-60', 'VBJWP'), +(186, 'B3-88-BB-2B', 'CZRPO'), +(187, 'F5-7D-F5-7E', 'JCNSP'), +(188, 'AA-A9-B2-83', 'EOKCA'), +(189, 'EA-62-F6-F9', 'PZEAK'), +(190, '3D-3B-BE-D9', 'ERIMX'), +(191, '75-57-68-54', 'NGVPC'), +(192, '0E-F0-AD-27', 'MVONW'), +(193, '84-39-68-9B', 'ZUHOD'), +(194, '75-E4-50-0C', 'YIATG'), +(195, 'E8-F6-C1-CF', 'WFQGC'), +(196, '55-89-B7-34', 'NKZQL'), +(197, 'B2-67-DD-0C', 'EMIWA'), +(198, '11-7C-2E-A4', 'WOYWY'), +(199, 'CB-D8-B5-A2', 'ZBLQG'), +(200, 'CE-A1-20-27', 'STQYS'); -- -------------------------------------------------------- @@ -63,7 +201,7 @@ CREATE TABLE IF NOT EXISTS `user` ( `password` varchar(40) NOT NULL, `status` int(11) NOT NULL, PRIMARY KEY (`id_user`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=101 ; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=107 ; -- -- Contenu de la table `user` @@ -169,7 +307,8 @@ INSERT INTO `user` (`id_user`, `code`, `username`, `firstname`, `lastname`, `mai (97, '48-03-38-1F', 'Witt', 'Larsen', 'Strong', 'larsenstrong@corecom.com', '8292d357d783eb4ab3900fba170fb8977e9a8720', 0), (98, 'E0-4B-04-F6', 'Valarie', 'Craft', 'Klein', 'craftklein@corecom.com', 'b1f2ec40a2f4457d88662b3ef22ff8fe16fb5e4c', 0), (99, '2F-7D-0A-51', 'Jessica', 'Delgado', 'Campos', 'delgadocampos@corecom.com', '8125b1397016438dc4342d829c286b7597c69803', 0), -(100, '91-D4-7E-65', 'Velez', 'Mcmahon', 'Lott', 'mcmahonlott@corecom.com', 'b6a433da4441737be56635dd80d1a5a8eec2bcd3', 1); +(100, '91-D4-7E-65', 'Velez', 'Mcmahon', 'Lott', 'mcmahonlott@corecom.com', 'b6a433da4441737be56635dd80d1a5a8eec2bcd3', 1), +(106, '92-55-B9-B1', 'b', 'bla', 'bla', 'bla@test.com', '718838c9021dbcf095e9e41271010cb668cacee5', 1); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 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