From 89c1420f623415b0d37bfdf3b45436fc2b954769 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sat, 13 Feb 2016 18:41:19 +0100 Subject: [PATCH] - [x] Ajout de "use CLASS;" dans les fichiers pour simplifier la lisibilite --- automate.php | 12 +-- config/repositories.json | 21 +++-- index.php | 12 ++- manager/Database.php | 8 +- manager/ModuleAnswer.php | 1 + manager/ModuleRequest.php | 4 +- manager/autoloader.php | 37 +++++++- manager/module/userDefault.php | 46 ++++++---- manager/repo/user.php | 154 ++++++++++++++++++++++++++------- todo.md | 1 + 10 files changed, 222 insertions(+), 74 deletions(-) diff --git a/automate.php b/automate.php index a0c84ef..9341a9f 100755 --- a/automate.php +++ b/automate.php @@ -1,13 +1,7 @@ \ No newline at end of file diff --git a/config/repositories.json b/config/repositories.json index 02c919b..5be92f0 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -2,25 +2,34 @@ "user" :[ "create", + "getAll", "getById", "getByCode", - "getAll", - "getGroup", + "getByUsername", + + "getGroups", "delete" ], "machine" :[ - "get", + "create", + "getAll", + "getById", + "getGroup" ], "group" :[ - "get", + "create", + "link", + "unlink", + "getAll", - "getUser", - "getMachine" + "getById", + + "getMembers" ] } \ No newline at end of file diff --git a/index.php b/index.php index 2138ed7..4572487 100755 --- a/index.php +++ b/index.php @@ -1,7 +1,11 @@ get('settings/', function(){ include __ROOT__.'/view.php'; }); // Dispatcher - $R->get('f(?:/([\w-]+))*/?', function(){ new \manager\ResourceDispatcher($_GET['url'], true); }); + $R->get('f(?:/([\w-]+))*/?', function(){ new ResourceDispatcher($_GET['url'], true); }); // Api $R->post('api/?', function(){ - $request = \manager\ModuleRequest::fromPost($_POST); + $request = ModuleRequest::fromPost($_POST); $answer = $request->dispatch(); echo $answer->serialize(); diff --git a/manager/Database.php b/manager/Database.php index 6f285a2..17a1fcc 100755 --- a/manager/Database.php +++ b/manager/Database.php @@ -1,6 +1,8 @@ host.';dbname='.$this->dbname, $this->username, $this->password); // On signale que tout s'est bien passe - self::$error = \manager\ManagerError::Success; + self::$error = ManagerError::Success; }catch(Exception $e){ // On signale qu'il y a une erreur - self::$error = \manager\ManagerError::PDOConnection; + self::$error = ManagerError::PDOConnection; } } /* retourne une instance de la classe */ public static function getInstance(){ - if( self::$instance == null || self::$error != \manager\ManagerError::Success ){ // Si aucune instance existante OU erreur de connection + if( self::$instance == null || self::$error != ManagerError::Success ){ // Si aucune instance existante OU erreur de connection // chargement de la configuration du server SQL if( !isset($_SERVER['HTTP_HOST']) || isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] == 'stefproject' ) diff --git a/manager/ModuleAnswer.php b/manager/ModuleAnswer.php index 808a4b3..493f95b 100755 --- a/manager/ModuleAnswer.php +++ b/manager/ModuleAnswer.php @@ -1,6 +1,7 @@ Tableau contenant le nom des classes + * + */ + function autoload($classes){ + foreach($classes as $class){ + $name_only = substr(strrchr($class, '\\'), 1); + var_dump('use '.$class.' as '.$name_only.';'); + eval('use '.$class.' as '.$name_only.';'); + } + } + + + + + + + + /* AUTOLOADER * @@ -30,9 +58,10 @@ $path = str_replace('\\', '/', $className) . '.php'; $path = __ROOT__.'/'.$path; - // Si le fichier existe, on l'inclut + // Si le fichier existe if( file_exists($path) ) - require_once $path; + require_once $path; // on inclue le fichier + } // On definit l'autoloader comme autoloader (obvious) diff --git a/manager/module/userDefault.php b/manager/module/userDefault.php index db5885d..f1a7342 100755 --- a/manager/module/userDefault.php +++ b/manager/module/userDefault.php @@ -1,6 +1,10 @@ $users->answer() @@ -37,54 +41,62 @@ public static function create($code=null, $username=null, $firstname=null, $lastname=null, $mail=null, $password=null, $status=null){ /* [1] Normalisation + verification des donnees =========================================================*/ - $password_hash = \manager\sessionManager::secure_sha1($password); + $password_hash = sessionManager::secure_sha1($password); - $correct_param = \manager\Database::check('user.code', $code); - $correct_param = $correct_param && \manager\Database::check('user.username', $username); - $correct_param = $correct_param && \manager\Database::check('user.firstname', $firstname); - $correct_param = $correct_param && \manager\Database::check('user.lastname', $lastname); - $correct_param = $correct_param && \manager\Database::check('user.mail', $mail); - $correct_param = $correct_param && \manager\Database::check('user.password', $password_hash); - $correct_param = $correct_param && \manager\Database::check('user.status', $status); + $correct_param = Database::check('user.code', $code); + $correct_param = $correct_param && Database::check('user.username', $username); + $correct_param = $correct_param && Database::check('user.firstname', $firstname); + $correct_param = $correct_param && Database::check('user.lastname', $lastname); + $correct_param = $correct_param && Database::check('user.mail', $mail); + $correct_param = $correct_param && Database::check('user.password', $password_hash); + $correct_param = $correct_param && Database::check('user.status', $status); // Si les parametres ne sont pas corrects, on retourne une erreur if( !$correct_param ) - return array('ModuleError' => \manager\ManagerError::ParamError); + return array('ModuleError' => ManagerError::ParamError); + + /* [2] Creation de l'utilisateur =========================================================*/ - $create_user = new \manager\Repo('user/create', array($code, $username, $firstname, $lastname, $mail, $password_hash, $status) ); + $create_user = new Repo('user/create', array($code, $username, $firstname, $lastname, $mail, $password_hash, $status) ); $id_user = $create_user->answer(); // Si une erreur est retournee, on retourne une erreur if( $id_user === false ) - return array('ModuleError' => \manager\ManagerError::ModuleError); + return array('ModuleError' => ManagerError::ModuleError); + + /* [3] Creation du groupe de meme nom que l'username =========================================================*/ - $create_group = new \manager\Repo('group/create', array($username) ); + $create_group = new Repo('group/create', array($username) ); $id_group = $create_group->answer(); // Si une erreur est retournee, on retourne une erreur if( $id_group === false ) - return array('ModuleError' => \manager\ManagerError::ModuleError); + return array('ModuleError' => ManagerError::ModuleError); + + /* [4] Association au groupe =========================================================*/ - $assoc_goup = new \manager\Repo('group/associate', array($id_user, $id_group)); + $assoc_goup = new Repo('group/link', array($id_user, $id_group)); $id_assoc = $assoc_goup->answer(); // Si une erreur est retournee, on retourne une erreur if( $id_assoc === false ) - return array('ModuleError' => \manager\ManagerError::ModuleError); + return array('ModuleError' => ManagerError::ModuleError); + + /* [5] Gestion du retour =========================================================*/ return array( - 'ModuleError' => \manager\ManagerError::Success, + 'ModuleError' => ManagerError::Success, 'id_user' => $id_user ); } diff --git a/manager/repo/user.php b/manager/repo/user.php index 926dacb..52b731d 100755 --- a/manager/repo/user.php +++ b/manager/repo/user.php @@ -1,9 +1,38 @@ Code RFID de l'utilisateur + * @username Identifiant l'utilisateur + * @firstname Prenom de l'utilisateur + * @lastcode Nom de l'utilisateur + * @mail Adresse email de l'utilisateur + * @password Mot de passe de l'utilisateur + * @status Status de l'utilisateur + * + * @return nomRetour Description du retour + * + */ + public static function create($code, $username, $firstname, $lastname, $mail, $password, $status){ + /* [1] Creation de l'utilisateur (unicite de l'username) + =========================================================*/ + $check_unique = ( self::getByCode($code) == false ); + $check_unique = $check_unique && ( self::getByUsername($username) == false ); + + var_dump($check_unique); + + } + + + + + + /* RENVOIE LA LISTE DE TOUS LES UTILISATEURS * @@ -12,13 +41,13 @@ */ public static function getAll(){ // On ecrit la requete - $request = \manager\Database::getPDO()->query("SELECT * FROM user ORDER BY id_user"); + $request = Database::getPDO()->query("SELECT * FROM user ORDER BY id_user"); // On recupere le resutat $answer = $request->fetchAll(); // On retourne en supprimant les indices numeriques - return \manager\Database::delNumeric( $answer ); + return Database::delNumeric( $answer ); } @@ -28,11 +57,6 @@ - - - - - /* RENVOIE L'UTILISATEUR D'ID DONNE * * @id Id de l'utilisateur en question @@ -43,7 +67,7 @@ */ public static function getById($id){ // On ecrit la requete - $request = \manager\Database::getPDO()->prepare("SELECT * FROM user + $request = Database::getPDO()->prepare("SELECT * FROM user WHERE id_user = :id"); // On execute la requete @@ -59,7 +83,7 @@ return false; // On retourne en supprimant les indices numeriques - return \manager\Database::delNumeric( $answer, true ); + return Database::delNumeric( $answer, true ); } @@ -69,11 +93,6 @@ - - - - - /* RENVOIE L'UTILISATEUR DE CODE DONNE * * @code Code de l'utilisateur en question @@ -84,7 +103,7 @@ */ public static function getByCode($code){ // On ecrit la requete - $request = \manager\Database::getPDO()->prepare("SELECT * FROM user + $request = Database::getPDO()->prepare("SELECT * FROM user WHERE code = :code"); // On execute la requete @@ -100,7 +119,9 @@ return false; // On retourne en supprimant les indices numeriques - return \manager\Database::delNumeric( $answer, true ); + return Database::delNumeric( $answer, true ); + + } @@ -110,31 +131,104 @@ - /* CREATION D'UN UTILISATEUR ET DE SON GROUPE INDIVIDUEL + /* RENVOIE L'UTILISATEUR D'USERNAME DONNE * - * @code Code RFID de l'utilisateur - * @username Identifiant l'utilisateur - * @firstname Prenom de l'utilisateur - * @lastcode Nom de l'utilisateur - * @mail Adresse email de l'utilisateur - * @password Mot de passe de l'utilisateur - * @status Status de l'utilisateur + * @username Identifiant de l'utilisateur en question * - * @return nomRetour Description du retour + * @return utilisateur Renvoie l'utilisateur d'username donne si existe + * @return error Retourne FALSE si aucun resultat * */ - public static function create($code, $username, $firstname, $lastname, $mail, $password, $status){ - /* [1] Creation de l'utilisateur (unicite de l'username) - =========================================================*/ - $check_unique = ( self::getByCode($code) == false ); + public static function getByUsername($username){ + // On ecrit la requete + $request = Database::getPDO()->prepare("SELECT * FROM user + WHERE username = :username"); - var_dump($check_unique); + // On execute la requete + $request->execute(array( + ':username' => $username + )); + // On recupere 1 seul utilisateur + $answer = $request->fetch(); + + // Gestion d'erreur -> aucun resultat + if( $answer == null ) + return false; + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $answer, true ); } + + + + + /* RENVOIE LES GROUPE AUQUELS UN UTILISATEUR DONNE APPARTIENT + * + * @id_user UID de l'utilisateur en question + * + * @return groups Renvoie un tableau d'UID des groupes + * + */ + public static function getGroups($id_user){ + /* [1] On redige/execute la requete + =========================================================*/ + $select_groups = Database::getPDO()->prepare("SELECT gm.id_group FROM user as u, group_merge as gm + WHERE u.id_user = gm.id_user + AND u.id_user = :id_user + ORDER BY gm.id_user ASC"); + $select_groups->execute(array( + ':id_user' => $id_user + )); + + // On retourne en supprimant les indices numeriques + return Database::delNumeric( $select_groups->fetchAll() ); + } + + + + + + + + + /* SUPPRIME UN UTILISATEUR DONNE + * + * @id_user UID de l'utilisateur en question + * + * @return status Retourne si oui ou non l'utilisateur a bien ete supprime + * + */ + public static function delete($id_user){ + /* [1] On redige/execute la requete + =========================================================*/ + $delete_user = Database::getPDO()->prepare("DELETE FROM user WHERE id_user = :id_user"); + $delete_user->execute(array( + ':id_user' => $id_user + )); + + + /* [2] On verifie que l'utilisateur n'existe plus + =========================================================*/ + return ( self::getById($id_user) === false ); + } + + + + + + + + + + + + + } diff --git a/todo.md b/todo.md index 835a672..35a99aa 100755 --- a/todo.md +++ b/todo.md @@ -39,6 +39,7 @@ ######## # FAIT # ######## +- [x] Ajout de "use CLASS;" dans les fichiers pour simplifier la lisibilite - [x] [phpunit/sessionManager] test unitaires du manager de session php - [x] [ModuleAnswer] Gestion des erreurs au niveau interne des Modules - [x] [autoloader][phpunit/bootstrap.php] Correction des bugs de $_SERVER avec PHPUnit -> autoloader + bootstrap personnalise