From f5e116f7f29fc53e21c67e79f6a0e049b56ebedf Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 3 Jul 2016 14:20:42 +0200 Subject: [PATCH] Correction et adaptation du module 'userDefault' --- config/modules.json | 4 +--- config/repositories.json | 4 ++-- index.php | 2 ++ manager/ManagerError.php | 8 +++++++- manager/ModuleRequest.php | 2 +- manager/Repo.php | 20 ++++++++++---------- manager/module/userDefault.php | 34 +++++++++++++++++----------------- manager/repo/cluster.php | 4 ++-- manager/repo/user.php | 29 +++++++++++++++-------------- test/ajaxTest.php | 4 ++-- test/sessionTest.php | 4 ++-- view/js/users-min.js | 20 ++++++++++++++++++++ view/js/users.js | 14 ++++++++------ view/users.php | 2 +- 14 files changed, 90 insertions(+), 61 deletions(-) create mode 100644 view/js/users-min.js diff --git a/config/modules.json b/config/modules.json index 9569c3d..7723edb 100755 --- a/config/modules.json +++ b/config/modules.json @@ -156,9 +156,7 @@ "id_cluster": { "description": "UID du groupe auquel détacher.", "type": "id" }, "id_user": { "description": "UID de l'utilisateur à détacher.", "type": "id" } }, - "output": { - - } + "output": {} }, "search": { diff --git a/config/repositories.json b/config/repositories.json index fb237b4..56d60ea 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -8,7 +8,7 @@ "getById", "getByCode", "getByUsername", - + "getClusters", "edit", @@ -48,4 +48,4 @@ "delete" ] -} \ No newline at end of file +} diff --git a/index.php b/index.php index 1e90db5..499cb2a 100755 --- a/index.php +++ b/index.php @@ -16,6 +16,8 @@ debug(); /*******************************************/ + $_SESSION['permission'] = array(); + /* [0] On initialise le routeur ===================================================*/ diff --git a/manager/ManagerError.php b/manager/ManagerError.php index d6a5994..a410c81 100755 --- a/manager/ManagerError.php +++ b/manager/ManagerError.php @@ -72,8 +72,12 @@ // Mauvais format de fichier const FormatError = 18; + /* Erreur de contenu */ + // Aucune donnée trouvée + const NoMatchFound = 19; + /* Erreur au niveau javascript */ - //const JavascriptError = 19; // -> géré en js + //const JavascriptError = 20; // -> géré en js /* EXPLICITE UN CODE D'ERREUR @@ -110,6 +114,8 @@ case self::UploadError: return "Une erreur d'upload est survenue."; break; case self::FormatError: return "Le fichier n'est pas au bon format."; break; + case self::NoMatchFound: return "Aucun résultat correspondant à la requête."; break; + default: return "Description d'erreur inconnue..."; break; } diff --git a/manager/ModuleRequest.php b/manager/ModuleRequest.php index 06fd7c1..12201bd 100755 --- a/manager/ModuleRequest.php +++ b/manager/ModuleRequest.php @@ -270,7 +270,7 @@ /* [1] On verifie que le @path est renseigne =========================================================*/ /* (1) Si le path est dans @url */ - $pathInUrl = is_string($url[0]) && strlen($url[0]) > 0 && preg_match('#^([\w_-]+)/([\w_-]+)/?$#', $url[0], $urlMatches); + $pathInUrl = count($url) > 0 && is_string($url[0]) && strlen($url[0]) > 0 && preg_match('#^([\w_-]+)/([\w_-]+)/?$#', $url[0], $urlMatches); // On l'utilise pour le chemin if( $pathInUrl ) diff --git a/manager/Repo.php b/manager/Repo.php index a87edd8..1e7809c 100755 --- a/manager/Repo.php +++ b/manager/Repo.php @@ -6,8 +6,8 @@ // FORMAT: // // path: "nomModule/nomMethode" - // data1: {donnee1} - // data2: {donnee2} + // params1: {donnee1} + // params2: {donnee2} // ... // // @@ -22,7 +22,7 @@ // Attributs prives utiles (initialisation) private $path; - private $data; + private $params; // Paramètres de la requête private $repositories; // Contiendra la reponse a la requete @@ -38,12 +38,12 @@ /* CONSTRUCTEUR D'UNE REQUETE DE MODULE * * @path Chemin de delegation ("repo/methode") - * @data Tableau contenant les parametres utiles au traitement + * @params Tableau contenant les parametres utiles au traitement * * @return status Retourne si oui ou non tout s'est bien passe * */ - public function __construct($path=null, $data=null){ + public function __construct($path=null, $params=null){ // Si pas parametre manquant, on quitte if( $path == null ){ $this->error = ManagerError::MissingPath; @@ -71,8 +71,8 @@ return false; // On retourne FALSE, si erreur } - // Type de @data (optionnel) - $data = (is_array($data)) ? $data : array(); + // Type de @params (optionnel) + $params = (is_array($params)) ? $params : array(); /* [2] Verification du chemin (existence repo+methode) @@ -84,7 +84,7 @@ /* [3] Construction de l'objet =========================================================*/ - $this->data = $data; + $this->params = $params; $this->error = ManagerError::Success; /* [4] Enregistrement de la reponse @@ -128,7 +128,7 @@ /* [3] On amorce la methode =========================================================*/ - return call_user_func_array( $this->getFunctionCaller(), $this->data ); + return call_user_func_array( $this->getFunctionCaller(), $this->params ); } @@ -150,7 +150,7 @@ // On recupere les donnes de la regex $repository = $matches[1]; - $method = $matches[2]; + $method = $matches[2]; /* [2] Verification de l'existence du repo (conf) =========================================================*/ diff --git a/manager/module/userDefault.php b/manager/module/userDefault.php index 1124937..ccaeed4 100755 --- a/manager/module/userDefault.php +++ b/manager/module/userDefault.php @@ -35,13 +35,14 @@ $create_user = new Repo('user/create', array($code, $username, $firstname, $lastname, $mail, $password_hash, $status) ); $id_user = $create_user->answer(); + var_dump($create_user); + // Si une erreur est retournee, on retourne une erreur if( $id_user === false ) return array('ModuleError' => ManagerError::ModuleError); - /* [3] Creation du groupe de meme nom que l'username =========================================================*/ $create_group = new Repo('cluster/create', array($username) ); @@ -87,7 +88,7 @@ * */ public static function link($params){ - extract($parmas); + extract($params); /* [1] Creation de l'association =========================================================*/ @@ -127,7 +128,7 @@ /* RENVOIE UN UTILISATEUR EN FONCTION D'UN MOT CLE * - * @keyword Element de recherche + * @keywords Element de recherche * * @return users Retourne la liste des utilisateurs trouves * @@ -136,7 +137,7 @@ extract($params); // On recupere les donnees - $user = new Repo('user/search', array($keyword)); + $user = new Repo('user/search', array($keywords)); return array( 'users' => $user->answer() @@ -181,7 +182,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); + return array( 'ModuleError' => ManagerError::NoMatchFound ); return array( @@ -209,7 +210,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); + return array( 'ModuleError' => ManagerError::NoMatchFound ); return array( @@ -238,7 +239,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); + return array( 'ModuleError' => ManagerError::NoMatchFound ); return array( @@ -267,7 +268,7 @@ // Si aucun resultat, on retourne une erreur if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); + return array( 'ModuleError' => ManagerError::NoMatchFound ); return array( @@ -296,7 +297,6 @@ public static function edit($params){ extract($params); - /* [1] On verifie l'existence de l'utilisateur =========================================================*/ $user_exists = new Repo('user/getById', array($id_user)); @@ -304,7 +304,7 @@ // Si on a recupere aucun utilisateur, on retourne une erreur if( !is_array($user_data) ) - return array('ModuleError' => ManagerError::ModuleError); + return array('ModuleError' => ManagerError::NoMatchFound); @@ -314,13 +314,13 @@ /* (1) Verification des parametres (si non nul + differents)*/ $diff_param = array( - 'code' => !is_null($user_data['code']) && $user_data['code'] != $code, - 'username' => !is_null($user_data['username']) && $user_data['username'] != $username, - 'firstname' => !is_null($user_data['firstname']) && $user_data['firstname'] != $firstname, - 'lastname' => !is_null($user_data['lastname']) && $user_data['lastname'] != $lastname, - 'mail' => !is_null($user_data['mail']) && $user_data['mail'] != $mail, - 'password' => !is_null($user_data['password']) && $user_data['password'] != $password_hash, - 'status' => !is_null($user_data['status']) && $user_data['status'] != $status + 'code' => !is_null($code) && $user_data['code'] != $code, + 'username' => !is_null($username) && $user_data['username'] != $username, + 'firstname' => !is_null($firstname) && $user_data['firstname'] != $firstname, + 'lastname' => !is_null($lastname) && $user_data['lastname'] != $lastname, + 'mail' => !is_null($mail) && $user_data['mail'] != $mail, + 'password' => !is_null($password) && $user_data['password'] != $password_hash, + 'status' => !is_null($status) && $user_data['status'] != $status ); /* (2) Gestion des parametres optionnels */ diff --git a/manager/repo/cluster.php b/manager/repo/cluster.php index 57c34f7..0dca54a 100755 --- a/manager/repo/cluster.php +++ b/manager/repo/cluster.php @@ -83,7 +83,7 @@ if( $class == self::USER_CLASS ){ // On verifie si c'est un utilisateur $user_check = userRepo::getById($id_entity); - $entity_exists = ( $user_check !== FALSE ); + $entity_exists = ( $user_check !== FALSE ); /* (2) Machine */ }elseif( $class == self::MACHINE_CLASS ){ @@ -122,7 +122,7 @@ $check_cluster_merge = self::getMerge($id_cluster, $id_entity, $class); // Si n'existe pas on retourne FALSE - if( $check_cluster_merge === false ) + if( !is_array($check_cluster_merge) ) return false; // Sinon, on retourne son id diff --git a/manager/repo/user.php b/manager/repo/user.php index 273a0fa..10180ed 100755 --- a/manager/repo/user.php +++ b/manager/repo/user.php @@ -120,13 +120,13 @@ */ public static function getById($id){ // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM user + $request = Database::getPDO()->prepare("SELECT * FROM user WHERE id_user = :id"); // On execute la requete - $request->execute(array( + $request->execute( array( ':id' => $id - )); + ) ); // On recupere 1 seul utilisateur $answer = $request->fetch(); @@ -156,7 +156,7 @@ */ public static function getByCode($code){ // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM user + $request = Database::getPDO()->prepare("SELECT * FROM user WHERE code = :code"); // On execute la requete @@ -194,7 +194,7 @@ */ public static function getByUsername($username){ // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM user + $request = Database::getPDO()->prepare("SELECT * FROM user WHERE username = :username"); // On execute la requete @@ -299,6 +299,7 @@ /* [1] Verification de l'unicite de code+username (si differents) =========================================================*/ // On recupere les utilisateurs ayant le meme code ou username (si existent) + // pour éviter les collisions (car code/username doivent être uniquent) $getbycode = self::getByCode($code); $getbyusername = self::getByUsername($username); @@ -313,12 +314,12 @@ =========================================================*/ $edit_user = Database::getPDO()->prepare("UPDATE user SET code = :code, - username = :username, - firstname = :firstname, - lastname = :lastname, - mail = :mail, - password = :password, - status = :status + username = :username, + firstname = :firstname, + lastname = :lastname, + mail = :mail, + password = :password, + status = :status WHERE id_user = :id_user"); $edit_user->execute(array( ':code' => $code, @@ -385,7 +386,6 @@ - @@ -394,7 +394,8 @@ - + + @@ -402,4 +403,4 @@ } -?> \ No newline at end of file +?> diff --git a/test/ajaxTest.php b/test/ajaxTest.php index f8765af..592bc87 100644 --- a/test/ajaxTest.php +++ b/test/ajaxTest.php @@ -5,8 +5,8 @@ // DEFAULT SESSION CREDENTIALS - echo '{"data1": "'.session_id().'",'; - echo '"data2": "'. ( $_SESSION['session_token']==$_COOKIE['session_token'] ? 'YES' : 'NO' ). '"}'; + echo '{"data1": "'.session_id().'"}'; + // echo '"data2": "'. ( $_SESSION['session_token']==$_COOKIE['session_token'] ? 'YES' : 'NO' ). '"}'; ?> diff --git a/test/sessionTest.php b/test/sessionTest.php index 036c6ad..ce721d9 100644 --- a/test/sessionTest.php +++ b/test/sessionTest.php @@ -6,13 +6,13 @@ // DEFAULT SESSION CREDENTIALS var_dump( 'SESSID---'.session_id() ); - var_dump( 'TOKEN----'.( $_SESSION['session_token']==$_COOKIE['session_token'] ? 'YES' : 'NO' ) ); + // var_dump( 'TOKEN----'.( $_SESSION['session_token']==$_COOKIE['session_token'] ? 'YES' : 'NO' ) ); ?>
NO VALUE

-
NO VALUE
+



diff --git a/view/js/users-min.js b/view/js/users-min.js new file mode 100644 index 0000000..6ab5e9c --- /dev/null +++ b/view/js/users-min.js @@ -0,0 +1,20 @@ +var section={view:{text:'#CONTAINER > section[data-sublink="view"] ',element:document.querySelector('#CONTAINER > section[data-sublink="view"]'),searchbar:document.querySelector('#CONTAINER > section[data-sublink="view"] > .searchbar')},create:{text:'#CONTAINER > section[data-sublink="create"] ',element:document.querySelector('#CONTAINER > section[data-sublink="create"]')},remove:{text:'#CONTAINER > section[data-sublink="remove"] ',element:document.querySelector('#CONTAINER > section[data-sublink="remove"]')}, +edit:{text:'#CONTAINER > section[data-sublink="edit"] ',element:document.querySelector('#CONTAINER > section[data-sublink="edit"]')}}; +if(null!=section.view.element){section.view.link={edit:document.querySelectorAll(section.view.text+".link_edit[data-user]"),remove:document.querySelectorAll(section.view.text+".link_remove[data-user]")};section.view.searchbar.addEventListener("keyup",function(b){api.send({path:"userDefault/search",data:[section.view.searchbar.value]},function(a){if(0==a.ModuleError&&(console.log(a.users.length),0==a.ModuleError)){for(var b=[],c=0;c article.inline-box[id]");for(c=0;c Liste des utilisateurs =========================================================*/ $request = new ModuleRequest('userDefault/getAll'); // On utilise la methode 'getAll' du module 'userDefault' - $answer = $request->dispatch(); // On recupere la reponse + $answer = $request->dispatch(); // On recupere la reponse echo "
"; // echo 'Liste des utilisateurs:
';