- [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
This commit is contained in:
xdrm-brackets 2016-02-14 12:37:19 +01:00
parent eed21581ef
commit a2234af7e7
7 changed files with 545 additions and 33 deletions

View File

@ -1,6 +1,11 @@
<?php define('__ROOT__', dirname(__FILE__) ); <?php define('__ROOT__', dirname(__FILE__) );
require_once __ROOT__.'/manager/autoloader.php'; require_once __ROOT__.'/manager/autoloader.php';
use \manager\ModuleRequest;
use \manager\ResourceDispatcher;
use \manager\ManagerError;
use \manager\Repo;
debug(); debug();
@ -14,13 +19,13 @@
* *
*/ */
function insertUsersFromJSON(){ function insertUsersFromJSON(){
$json = \manager\ResourceDispatcher::getResource('f/json/generated_users/conf'); $json = ResourceDispatcher::getResource('f/json/generated_users/conf');
$json = json_decode( $json, true ); $json = json_decode( $json, true );
// Pour chaque entree // Pour chaque entree
foreach( $json as $user ){ foreach( $json as $user ){
$insertRequest = \manager\Database::getPDO()->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( VALUES(
DEFAULT, DEFAULT,
:code, :code,
@ -59,13 +64,13 @@
* *
*/ */
function insertMachinesFromJSON(){ function insertMachinesFromJSON(){
$json = \manager\ResourceDispatcher::getResource('f/json/generated_machines/conf'); $json = ResourceDispatcher::getResource('f/json/generated_machines/conf');
$json = json_decode( $json, true ); $json = json_decode( $json, true );
// Pour chaque entree // Pour chaque entree
foreach( $json as $machine ){ 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( VALUES(
DEFAULT, DEFAULT,
:code, :code,
@ -102,10 +107,10 @@
function selectUsers(){ function selectUsers(){
// Creation de la requete // Creation de la requete
$requete = new manager\ModuleRequest('userDefault/getAll'); $requete = new ModuleRequest('userDefault/getAll');
$answer = $requete->dispatch(); $answer = $requete->dispatch();
var_dump( \manager\ManagerError::explicit($answer->error) ); var_dump( ManagerError::explicit($answer->error) );
var_dump( $answer->get('users') ); var_dump( $answer->get('users') );
return true; return true;
@ -126,10 +131,10 @@
function selectMachines(){ function selectMachines(){
// Creation de la requete // Creation de la requete
$requete = new manager\ModuleRequest('machineDefault/getAll'); $requete = new ModuleRequest('machineDefault/getAll');
$answer = $requete->dispatch(); $answer = $requete->dispatch();
var_dump( \manager\ManagerError::explicit($answer->error) ); var_dump( ManagerError::explicit($answer->error) );
var_dump( $answer->get('machines') ); var_dump( $answer->get('machines') );
return true; return true;
@ -152,12 +157,12 @@
function displayUsers(){ function displayUsers(){
// Creation de la requete // Creation de la requete
$request = new \manager\ModuleRequest('userDefault/getAll'); $request = new ModuleRequest('userDefault/getAll');
$answer = $request->dispatch(); $answer = $request->dispatch();
// Debug error // Debug error
if( $answer->error != \manager\ManagerError::Success ) if( $answer->error != ManagerError::Success )
var_dump( \manager\ManagerError::explicit($answer->error) ); var_dump( ManagerError::explicit($answer->error) );
// display result // display result
var_dump( $answer->getAll() ); var_dump( $answer->getAll() );
@ -182,9 +187,9 @@
function testModuleDispatcher(){ function testModuleDispatcher(){
// Creation d'une requete en objet // 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 <String> // Creation d'une requete a partir d'un json en <String>
$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() ); var_dump( $req1->dispatch() );
@ -204,12 +209,12 @@
function testRepoDispatcher(){ function testRepoDispatcher(){
// Creation d'une requete en objet // Creation d'une requete en objet
$req1 = new manager\Repo('user/getById', array('19')); $req1 = new Repo('user/getById', array('19'));
// $req1 = new manager\Repo('user/getByCode', array('92-55-B9-B3')); // $req1 = new Repo('user/getByCode', array('92-55-B9-B3'));
var_dump( $req1->answer() ); var_dump( $req1->answer() );
if( $req1->error != manager\ManagerError::Success ) if( $req1->error != ManagerError::Success )
var_dump( manager\ManagerError::explicit($req1->error) ); var_dump( ManagerError::explicit($req1->error) );
return true; return true;
@ -230,17 +235,15 @@
function insertUsersComposite(){ function insertUsersComposite(){
// Creation de la requete // 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(); $answer = $request->dispatch();
// Debug error // Debug error
var_dump( $answer->error ); if( $answer->error != ManagerError::Success )
var_dump( \manager\ManagerError::explicit($answer->error) ); var_dump( ManagerError::explicit($answer->error) );
var_dump( $answer->getAll() ); var_dump( $answer->getAll() );
return true; return true;
}//insertUsersComposite(); }insertUsersComposite();
?> ?>

View File

@ -21,13 +21,15 @@
"getGroup" "getGroup"
], ],
"group" :[ "cluster" :[
"create", "create",
"link", "link",
"unlink", "unlink",
"getAll", "getAll",
"getById", "getById",
"getByName",
"getMerge",
"getMembers" "getMembers"
] ]

View File

@ -72,7 +72,7 @@
/* [3] Creation du groupe de meme nom que l'username /* [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(); $id_group = $create_group->answer();
// Si une erreur est retournee, on retourne une erreur // Si une erreur est retournee, on retourne une erreur
@ -84,7 +84,7 @@
/* [4] Association au groupe /* [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(); $id_assoc = $assoc_goup->answer();
// Si une erreur est retournee, on retourne une erreur // Si une erreur est retournee, on retourne une erreur

286
manager/repo/cluster.php Executable file
View File

@ -0,0 +1,286 @@
<?php
namespace manager\repo;
use \manager\Database;
use \manager\repo\machine as machineRepo;
use \manager\repo\user as userRepo;
class cluster{
/* CREATION D'UN GROUPE
*
* @name<String> Nom du groupe
*
* @return id_user<int> 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<int> UID du groupe
* @id_entity<int> UID de la machine ou de l'utilisateur
*
* @return association<int> 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<Array> 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<int> UID du groupe en question
*
* @return group<Array> Renvoie le groupe d'id donne si existe
* @return error<Boolean> 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<String> Nom du groupe en question
*
* @return groupe<Array> Renvoie le groupe de nom donne si existe
* @return error<Boolean> 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<int> UID du groupe
* @id_entity<int> UID de la machine ou de l'utilisateur
*
* @return association<int> 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<int> UID du groupe en question
*
* @return status<Boolean> 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 );
}
}
?>

188
manager/repo/machine.php Normal file
View File

@ -0,0 +1,188 @@
<?php
namespace manager\repo;
use \manager\Database;
use \manager\repo\cluster as clusterRepo;
class machine{
/* CREATION D'UNE MACHINE
*
* @name<String> Nom du groupe
*
* @return id_user<int> 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<Array> 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<int> Id de la machine en question
*
* @return machine<Array> Renvoie la machine d'id donne si existe
* @return error<Boolean> 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<String> Nom du groupe en question
*
* @return groupe<Array> Renvoie le groupe de nom donne si existe
* @return error<Boolean> 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<int> UID de la machine en question
*
* @return status<Boolean> 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 );
}
}
?>

View File

@ -2,6 +2,7 @@
namespace manager\repo; namespace manager\repo;
use \manager\Database; use \manager\Database;
use \manager\repo\cluster as clusterRepo;
class user{ class user{
@ -15,16 +16,44 @@
* @password<String> Mot de passe de l'utilisateur * @password<String> Mot de passe de l'utilisateur
* @status<String> Status de l'utilisateur * @status<String> Status de l'utilisateur
* *
* @return nomRetour<typeRetour> Description du retour * @return id_user<int> Renvoie l'UID de l'utilisateur cree
* Renvoie FALSE si une erreur occure
* *
*/ */
public static function create($code, $username, $firstname, $lastname, $mail, $password, $status){ 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 = ( self::getByCode($code) == false );
$check_unique = $check_unique && ( self::getByUsername($username) == 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(); $answer = $request->fetch();
// Gestion d'erreur -> aucun resultat // Gestion d'erreur -> aucun resultat
if( $answer == null ) if( $answer === false )
return false; return false;
// On retourne en supprimant les indices numeriques // On retourne en supprimant les indices numeriques
@ -115,7 +144,7 @@
$answer = $request->fetch(); $answer = $request->fetch();
// Gestion d'erreur -> aucun resultat // Gestion d'erreur -> aucun resultat
if( $answer == null ) if( $answer === false )
return false; return false;
// On retourne en supprimant les indices numeriques // On retourne en supprimant les indices numeriques
@ -153,7 +182,7 @@
$answer = $request->fetch(); $answer = $request->fetch();
// Gestion d'erreur -> aucun resultat // Gestion d'erreur -> aucun resultat
if( $answer == null ) if( $answer === false )
return false; return false;
// On retourne en supprimant les indices numeriques // On retourne en supprimant les indices numeriques

View File

@ -15,7 +15,7 @@
############ ############
- [ ] Gestion des groupes (utilisateurs/machines) - [ ] Gestion des groupes (utilisateurs/machines)
- [x] bdd - [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'un groupe individuel pour machines
- [ ] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine) - [ ] Creation d'une liaison entre 2 groupes (groupeUtilisateur, groupeMachine)
- [ ] Prendre en compte au lieu de SERVER['HTTP_HOST'] l'hote et son dossier source - [ ] Prendre en compte au lieu de SERVER['HTTP_HOST'] l'hote et son dossier source
@ -39,6 +39,10 @@
######## ########
# FAIT # # FAIT #
######## ########
- [x] [manager/repo/]Creation des repos
- [x] [user] utilisateur
- [x] [machine] machines
- [x] [cluster] groupes
- [x] [view/][view] Ajout de "use CLASS;" - [x] [view/][view] Ajout de "use CLASS;"
- [x] Ajout de "use CLASS;" dans les fichiers pour simplifier la lisibilite - [x] Ajout de "use CLASS;" dans les fichiers pour simplifier la lisibilite
- [x] [phpunit/sessionManager] test unitaires du manager de session php - [x] [phpunit/sessionManager] test unitaires du manager de session php