From 4211fb916038477edc5bbde5d2454869ec115c58 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 12 Apr 2016 15:37:17 +0200 Subject: [PATCH 1/3] Gestion de l'affichage de "settings" uniquement si on est "admin" --- view.php | 14 ++++--- view/settings.php | 104 +++++++++++++++++++++++++--------------------- 2 files changed, 65 insertions(+), 53 deletions(-) diff --git a/view.php b/view.php index 572ff6c..df5b620 100755 --- a/view.php +++ b/view.php @@ -98,11 +98,15 @@ Statistiques Visualisation - Paramètres -
- Gestion des tokens - Gestion des utilisateurs -
+ + + Paramètres +
+ Gestion des tokens + Gestion des utilisateurs +
+ + diff --git a/view/settings.php b/view/settings.php index 96442b9..7ac1bb0 100755 --- a/view/settings.php +++ b/view/settings.php @@ -8,66 +8,74 @@ -/* [1] On recupere les tokens + +/* [1] Gestion des tokens =========================================================*/ +// permission: admin +//=======================================================// + +/* (1) On recupere la liste des tokens */ $req_tokens = new Repo('token/getAll'); $tokens = $req_tokens->answer(); -?> + +/* (2) Gestion des droits */ +if( permission('admin') ){ ?> + +
+ +
Gestion des accès distants

+ + +
+ +
+ Gestion des accès distants + +
+ + +
Liste des accès distants actifs. Ils seront automatiquement désactivés a la date d'expiration. Veuillez toutefois les supprimer.
+ +
+

+

+ +
+ + +
    + + + "; + // Si token actif + if( !$token['expired'] ) + echo "
    actif
    "; + else + echo "
    Expiré
    "; -
    + echo "
    "; + echo "".$token['name'].""; + echo "".Database::frDate($token['expires']).""; + echo "".$token['token'].""; + echo "
    "; -
    Gestion des accès distants

    - - -
    - -
    - Gestion des accès distants - -
    - - -
    Liste des accès distants actifs. Ils seront automatiquement désactivés a la date d'expiration. Veuillez toutefois les supprimer.
    - -
    -

    -

    - -
    - - -
      - - - "; - // Si token actif - if( !$token['expired'] ) - echo "
      actif
      "; - else - echo "
      Expiré
      "; - - - echo "
      "; - echo "".$token['name'].""; - echo "".Database::frDate($token['expires']).""; - echo "".$token['token'].""; - echo "
      "; - - echo ""; - echo ""; - } - ?> + echo ""; + echo ""; + } + ?> -
    +
+
- + +
Gestion des utilisateurs From f00cdc67f7b750b9c72922b523947192b7d6cd92 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 12 Apr 2016 16:30:14 +0200 Subject: [PATCH 2/3] Gestion graphique et js de la connection mais encore erreur --- css/layout.css | 2 +- css/layout.css.map | 2 +- css/layout.scss | 13 +++++++--- js/action-script.js | 27 ++++++++++++++++--- manager/module/users.php | 15 ++++++++--- manager/repo/users.php | 4 +-- src/static/container/back.svg | 49 +++++++++++++++++++++++++++++++++++ view.php | 17 ++++++------ view/charts.php | 2 +- 9 files changed, 108 insertions(+), 23 deletions(-) create mode 100644 src/static/container/back.svg diff --git a/css/layout.css b/css/layout.css index 81bc8f8..d2d03ca 100755 --- a/css/layout.css +++ b/css/layout.css @@ -1,2 +1,2 @@ -body{font-family:'Open Sans';font-size:15px}#WRAPPER{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e8e8e8;overflow-x:hidden;overflow-y:auto;z-index:1}#WRAPPER>#HEADER{display:block;position:fixed;top:0;left:0;width:100%;height:calc( 4em - 1px );border-bottom:1px solid #cfcfcf;background-color:#fff;z-index:9}#WRAPPER>#MENU-SIDE{display:block;position:fixed;top:4em;left:0;width:15em;height:calc( 100% - 4em );box-shadow:2px 1px 3px #ddd;background-color:#32323a;transition:all .3s;z-index:10}#WRAPPER>#CONTAINER{display:flex;position:absolute;top:4em;left:15em;width:calc( 100% - 15em - 2*1em );min-height:calc( 100% - 4em - 2*1em );padding:1em;flex-direction:row;justify-content:space-between;overflow-x:none;overflow-y:auto}#LOGIN{display:flex;position:fixed;top:0;left:-100%;width:100%;height:100%;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-items:center;background-color:#32323a;transition:left .3s ease-in-out;z-index:101}#LOGIN.active{left:0}#LOGIN>#login-icon{width:35em;height:10em;background:url("/f/svg/icon/st") center center no-repeat;background-size:auto 100%}#LOGIN>#login-form{display:block}#LOGIN>#login-form>input[type='text'],#LOGIN>#login-form>input[type='password'],#LOGIN>#login-form>input[type='button']{display:flex;width:20em;margin:2em 0;padding:1em 2em;flex-direction:column;justify-content:space-around;flex-wrap:nowrap;align-items:middle;border-radius:5px;border:1px solid #6b6b6b;background-color:#32323a;color:#fff;transition:border .2s ease-in-out;cursor:default}#LOGIN>#login-form>input[type='text']:hover,#LOGIN>#login-form>input[type='text']:focus,#LOGIN>#login-form>input[type='password']:hover,#LOGIN>#login-form>input[type='password']:focus,#LOGIN>#login-form>input[type='button']:hover,#LOGIN>#login-form>input[type='button']:focus{border-color:#53d192}#LOGIN>#login-form>input[type='button']{margin:2em auto;border:0;background-color:#53d192;color:#fff;font-weight:bold;cursor:pointer}#LOGIN>#login-form>input[type='button']:hover{background-color:#33be79;box-shadow:0 0 1em #1a1a1f}#LOGIN>#login-form>#lost-password{color:#ddd;cursor:pointer}#LOGIN>#login-form>#lost-password:hover{color:#53d192;text-decoration:underline}#LOGIN>#login-close{display:block;position:absolute;top:2em;right:2em;width:2em;height:2em;background:url("/f/svg/close/st/container/ffffff") center center no-repeat;background-size:80%;cursor:pointer} +body{font-family:'Open Sans';font-size:15px}#WRAPPER{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e8e8e8;overflow-x:hidden;overflow-y:auto;z-index:1}#WRAPPER>#HEADER{display:block;position:fixed;top:0;left:0;width:100%;height:calc( 4em - 1px );border-bottom:1px solid #cfcfcf;background-color:#fff;z-index:9}#WRAPPER>#MENU-SIDE{display:block;position:fixed;top:4em;left:0;width:15em;height:calc( 100% - 4em );box-shadow:2px 1px 3px #ddd;background-color:#32323a;transition:all .3s;z-index:10}#WRAPPER>#CONTAINER{display:flex;position:absolute;top:4em;left:15em;width:calc( 100% - 15em - 2*1em );min-height:calc( 100% - 4em - 2*1em );padding:1em;flex-direction:row;justify-content:space-between;overflow-x:none;overflow-y:auto}#LOGIN{display:flex;position:fixed;top:0;left:-100%;width:100%;height:100%;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-items:center;background-color:#32323a;transition:left .3s ease-in-out;z-index:101}#LOGIN.active{left:0}#LOGIN>#login-icon{width:35em;height:10em;background:url("/f/svg/icon/st") center center no-repeat;background-size:auto 100%}#LOGIN>#login-form{display:block}#LOGIN>#login-form>input[type='text'],#LOGIN>#login-form>input[type='password'],#LOGIN>#login-form>input[type='button']{display:flex;width:20em;margin:2em 0;padding:1em 2em;flex-direction:column;justify-content:space-around;flex-wrap:nowrap;align-items:middle;border-radius:5px;border:1px solid #6b6b6b;background-color:#32323a;color:#fff;font-weight:bold;letter-spacing:.07em;transition:border .2s ease-in-out;cursor:default}#LOGIN>#login-form>input[type='text']:hover,#LOGIN>#login-form>input[type='text']:focus,#LOGIN>#login-form>input[type='password']:hover,#LOGIN>#login-form>input[type='password']:focus,#LOGIN>#login-form>input[type='button']:hover,#LOGIN>#login-form>input[type='button']:focus{border-color:#53d192}#LOGIN>#login-form>input[type='button']{margin:2em auto;border:0;background-color:#53d192;color:#fff;font-weight:bold;cursor:pointer}#LOGIN>#login-form>input[type='button']:hover{background-color:#33be79;box-shadow:0 0 1em #1a1a1f}#LOGIN>#login-form>#lost-password{color:#ddd;cursor:pointer}#LOGIN>#login-form>#lost-password:hover{color:#53d192;text-decoration:underline}#LOGIN>#login-close{display:block;position:absolute;top:2em;right:2em;min-width:2em;height:2em;background:url("/f/svg/back/st/container/ffffff") right center no-repeat;background-size:1em;color:#fff;padding-right:2em;line-height:2em;font-weight:bold;cursor:pointer} /*# sourceMappingURL=layout.css.map */ diff --git a/css/layout.css.map b/css/layout.css.map index 4dc2742..db3de1f 100755 --- a/css/layout.css.map +++ b/css/layout.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["layout.scss","constants.scss"], "names": [], "file": "layout.css" diff --git a/css/layout.scss b/css/layout.scss index 87720c2..ac9aff7 100755 --- a/css/layout.scss +++ b/css/layout.scss @@ -156,6 +156,8 @@ body{ background-color: $dark-bg; color: $dark-fg-primary; + font-weight: bold; + letter-spacing: .07em; transition: border .2s ease-in-out; @@ -216,11 +218,16 @@ body{ position: absolute; top: 2em; right: 2em; - width: 2em; + min-width: 2em; height: 2em; - background: url('/f/svg/close/st/container/ffffff') center center no-repeat; - background-size: 80%; + background: url('/f/svg/back/st/container/ffffff') right center no-repeat; + background-size: 1em; + + color: #fff; + padding-right: 2em; + line-height: 2em; + font-weight: bold; cursor: pointer; } diff --git a/js/action-script.js b/js/action-script.js index 90ce0b7..cd74f80 100755 --- a/js/action-script.js +++ b/js/action-script.js @@ -207,14 +207,35 @@ var LOGIN = { show: document.getElementById('user-data'), hide: document.getElementById('login-close'), - page: document.getElementById('LOGIN') + page: document.getElementById('LOGIN'), + + login: document.getElementById('login-login'), + password: document.getElementById('login-password'), + submit: document.getElementById('login-submit') }; - // Ouverture de la page de login + /* (1) Gestion de l'affichage de la page de login */ LOGIN.show.addEventListener('click', function(e){ LOGIN.page.className = 'active'; }, false); - // Fermeture de la page de login + /* (2) Gestion de la fermeture de la page de login */ LOGIN.hide.addEventListener('click', function(e){ LOGIN.page.className = ''; }, false); + /* (3) Gestion du login */ + LOGIN.submit.addEventListener('click', function(e){ + // Creation de la requete de connexion + var request = { + path: 'users/login', + login: LOGIN.login.value, + password: LOGIN.password.value + }; + + // On lance la requete et recupere la reponse + api.send(request, function(answer){ + console.log( answer ); + if( answer.ModuleError == 0 ) // Si on est bien connecte, on recharge la page + document.location = '/'; + }, js_access_token); + + }, false); // } \ No newline at end of file diff --git a/manager/module/users.php b/manager/module/users.php index 28258cc..35eb4fa 100755 --- a/manager/module/users.php +++ b/manager/module/users.php @@ -21,17 +21,24 @@ /* [1] On verifie les logins =========================================================*/ $check = new Repo('users/login', array($login, $password)); - $success = $check->answer(); + $user = $check->answer(); // Si le login/password est incorrect, on retourne une erreur - if( $success === false ) return array('ModuleError' => ManagerError::ModuleError); + if( $user === false ) return array('ModuleError' => ManagerError::ModuleError); - /* [2] Si les logins sont ok, on retourne l'id de l'utilisateur + /* [2] Gestion du login =========================================================*/ + $_SESSION['userid'] = $user['id_user']; + $_SESSION['username'] = $user['login']; + $_SESSION['permission'] = explode( ',', str_replace(' ', '', $user['permission']) ); + + /* [4] Retour de l'id user + =========================================================*/ + return array( 'ModuleError' => ManagerError::Success, - 'id_user' => $success + 'id_user' => $user['id_user'] ); } diff --git a/manager/repo/users.php b/manager/repo/users.php index 52c849a..13e8e53 100755 --- a/manager/repo/users.php +++ b/manager/repo/users.php @@ -26,7 +26,7 @@ /* [1] On verifie son login/password dans la BDD =========================================================*/ - $check = Database::getPDO()->prepare("SELECT id_user + $check = Database::getPDO()->prepare("SELECT id_user, login, permission FROM users WHERE ( login = :username OR mail = :mail ) AND password = :password"); $check->execute(array( @@ -43,7 +43,7 @@ // On retourne le resultat - return (int) $result['id_user']; + return $result; } diff --git a/src/static/container/back.svg b/src/static/container/back.svg new file mode 100644 index 0000000..b03cde3 --- /dev/null +++ b/src/static/container/back.svg @@ -0,0 +1,49 @@ + +image/svg+xml \ No newline at end of file diff --git a/view.php b/view.php index df5b620..6139500 100755 --- a/view.php +++ b/view.php @@ -43,14 +43,15 @@ "; else echo "
"; ?> - + +
- +
Accéder à la plateforme
- - - + + + Mot de passe oublié ?
@@ -90,9 +91,9 @@ Acquisition
- Questionnaire - Facebook - Journal telephonique + Questionnaire + Facebook + Journal telephonique
Statistiques diff --git a/view/charts.php b/view/charts.php index 6029e47..04a074e 100755 --- a/view/charts.php +++ b/view/charts.php @@ -25,7 +25,7 @@ $data = $answer->get('data'); /* (2) On recupere le rendu */ -$getRender = new ModuleRequest('charts/network_render', array($data)); +$getRender = new ModuleRequest('charts/network_render', array('dataset' => $data)); $answer = $getRender->dispatch(); // Si pas d'erreur From 5871cf15916e98b31a6568d8215296075fb322fc Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 12 Apr 2016 16:47:06 +0200 Subject: [PATCH 3/3] Gestion des droits pour l'API et les modules --- config/modules.json | 14 +++++++++- manager/ManagerError.php | 3 +++ manager/ModuleRequest.php | 54 ++++++++++++++++++++++++++++++--------- manager/module/users.php | 13 ++++++++++ 4 files changed, 71 insertions(+), 13 deletions(-) diff --git a/config/modules.json b/config/modules.json index eee84b0..f48a578 100755 --- a/config/modules.json +++ b/config/modules.json @@ -2,11 +2,18 @@ "users": { "login": { - "description": "Test de connexion avec un login (identifiant ou adresse mail) et un mot de passe.", + "description": "Connexion avec un login (identifiant ou adresse mail) et un mot de passe.", + "permissions": [], "parameters": { "login": { "description": "Identifiant ou adresse mail", "type": "varchar(255)" }, "password": { "description": "Mot de passe", "type":"text" } } + }, + + "logout": { + "description": "Deconnexion", + "permissions": [], + "parameters": {} } }, @@ -14,6 +21,7 @@ "call_log": { "unserialize": { "description": "Recupere le contenu d'un fichier XML de journal d'appel.", + "permissions": ["admin"], "parameters": { "filecontent": { "description": "Contenu du fichier XML", "type": "text" } } @@ -24,11 +32,13 @@ "network_data": { "description": "Renvoie un jeu de donnees fictif pour un graphique de type #network.", + "permissions": ["admin"], "parameters": {} }, "network_render": { "description": "Renvoie le contenu du svg representant un graphique de type #network avec les donnees recues.", + "permissions": ["admin"], "parameters": { "dataset": { "description": "Dataset au bon format pour un graphique de type #network." } } @@ -40,6 +50,7 @@ "remove": { "description": "Suppression d'un token d'id donne.", + "permissions": ["admin"], "parameters": { "token_id": { "description": "UID du token a supprimer", "type": "id" } } @@ -48,6 +59,7 @@ "generate": { "description": "Creation d'un token de nom et de duree donnee", + "permissions": ["admin"], "parameters": { "name": { "description": "Nom attribue au token", "type": "varchar(50)" }, "duration": { "description": "Duree du token en nombre de jours", "type": "numeric" } diff --git a/manager/ManagerError.php b/manager/ManagerError.php index 83c6547..d724603 100755 --- a/manager/ManagerError.php +++ b/manager/ManagerError.php @@ -64,6 +64,8 @@ // Token inexistant ou faux const TokenError = 15; + const PermissionError = 16; + /* EXPLICITE UN CODE D'ERREUR * @@ -95,6 +97,7 @@ case self::PDOConnection: return "La connexion avec la base de donnees a echoue"; break; case self::TokenError: return "Le token de connection est absent ou errone"; break; + case self::PermissionError: return "Vous n'avez pas la permission d'effectuer cette action"; break; // default: return "Erreur inconnue..."; break; } diff --git a/manager/ModuleRequest.php b/manager/ModuleRequest.php index 9e32de0..718d987 100755 --- a/manager/ModuleRequest.php +++ b/manager/ModuleRequest.php @@ -3,16 +3,6 @@ namespace manager; use \manager\Database; - // FORMAT: - // - // path: "nomModule/nomMethode" - // data1: {donnee1} - // data2: {donnee2} - // ... - // - // - // - // class ModuleRequest{ @@ -80,14 +70,23 @@ if( !$this->checkPath($path) ) // Verification de la coherence du chemin + attribution return false; - /* [3] Verification des parametres (si @type est defini) + + /* [3] Verification des droits + =========================================================*/ + if( !$this->checkPermission() ){ // Si on a pas les droits + $this->error = ManagerError::PermissionError; + return false; + } + + + /* [4] Verification des parametres (si @type est defini) =========================================================*/ if( !$this->checkParams($params) ){ // Verification de tous les types $this->error = ManagerError::ParamError; return false; } - /* [4] Construction de l'objet + /* [5] Construction de l'objet =========================================================*/ $this->params = $params; $this->error = ManagerError::Success; @@ -265,6 +264,37 @@ + + + /* RETOURNE SI ON A LA PERMISSION D'EXECUTER CETTE METHODE + * + * @return permission Retourne si on a les droits ou pas pour executer cette methode + * + */ + private function checkPermission(){ + // On recupere le nom de la methode + $method = $this->modules[$this->path['module']][$this->path['method']]; + + // Si aucune permission n'est definie + if( !isset($method['permissions']) ) return true; + + // On recupere les permissions + $permissions = $method['permissions']; + + // Si aucune permission n'est definie, on laisse l'acces + if( count($permissions) == 0 ) return true; + + // On verifie qu'il y a au moins une permission ok + foreach($permissions as $permission) + if( permission($permission) ) return true; + + // On retourne FAUX si aucun droit n'a ete trouve + return false; + } + + + + /* VERIFICATION DU TYPE DES PARAMETRES ENVOYES * * @params Tableau associatif contenant les parametres diff --git a/manager/module/users.php b/manager/module/users.php index 35eb4fa..7a80c37 100755 --- a/manager/module/users.php +++ b/manager/module/users.php @@ -42,7 +42,20 @@ ); } + + + + /* DECONNEXION D'UN UTILISATEUR + * + */ + public static function logout(){ + $_SESSION['userid'] = null; + $_SESSION['username'] = null; + $_SESSION['permission'] = array(); + } + // [x] "login", + // [x] "logout", // [ ] "getById", // [ ] "getAll",