From dc30fbfccad3ea9298321dc98fcc0cf22364e27e Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 24 Oct 2016 15:34:18 +0200 Subject: [PATCH] Suppression des non-administrateurs de : 1. BDD 2. Modules 3. Repo 4. Vue 5. Javascript --- autoloader.php | 4 +-- build/api/core/ModuleRequest.php | 5 +-- build/api/module/user.php | 19 ++-------- build/database/repo/user.php | 55 +++++++---------------------- build/lightdb/core/lightdb.php | 2 +- config/modules.json | 12 +++---- config/server.json | 16 ++++----- public_html/index.php | 7 ++-- public_html/js/action-script.js | 4 +-- public_html/js/min/action-script.js | 4 +-- public_html/view/js/min/settings.js | 2 +- public_html/view/js/settings.js | 14 ++++---- public_html/view/settings.php | 27 +++++--------- 13 files changed, 57 insertions(+), 114 deletions(-) diff --git a/autoloader.php b/autoloader.php index 2be6fd5..f03a9a4 100644 --- a/autoloader.php +++ b/autoloader.php @@ -52,10 +52,10 @@ /* [3] Gestion des droits des utilisateurs =========================================================*/ /* (1) Retourne si l'utilisateur est connecte ou non */ - function connected(){ return isset($_SESSION['permission']) && count($_SESSION['permission']) > 0; } + function connected(){ return isset($_SESSION['permission']) && $_SESSION['permission']; } /* (2) Retourne si l'utilisateur a le status en question */ - function permission($type){ return connected() && in_array($type, $_SESSION['permission']); } + function permission(){ return connected() && $_SESSION['permission']; } ?> diff --git a/build/api/core/ModuleRequest.php b/build/api/core/ModuleRequest.php index c5e514a..abd3973 100644 --- a/build/api/core/ModuleRequest.php +++ b/build/api/core/ModuleRequest.php @@ -400,7 +400,8 @@ /* [3] Gestion si aucun token, avec utilisateur connecté =========================================================*/ }else if( isset($_SESSION['permission']) ) - $local_permissions = $_SESSION['permission']; + $local_permissions = $_SESSION['permission'] ? ['admin'] : []; + // Si ni token, ni SESSION, erreur else{ $this->error = ManagerError::PermissionError; @@ -414,7 +415,7 @@ $permissions = $method['permissions']; /* (2) Si aucune permission n'est definie, on laisse l'acces */ - if( count($permissions) == 0 ) return true; + if( !$permissions == 0 ) return true; /* (3) On verifie qu'il y a au moins une permission ok */ foreach($permissions as $permission) diff --git a/build/api/module/user.php b/build/api/module/user.php index 3799913..c070ad5 100644 --- a/build/api/module/user.php +++ b/build/api/module/user.php @@ -33,11 +33,10 @@ =========================================================*/ $_SESSION['userid'] = $user['id_user']; $_SESSION['username'] = $user['login']; - $_SESSION['permission'] = explode( ',', str_replace(' ', '', $user['permission']) ); + $_SESSION['permission'] = true; /* [4] Retour de l'id user =========================================================*/ - return [ 'ModuleError' => ManagerError::Success, 'id_user' => $user['id_user'] @@ -77,11 +76,6 @@ // Si aucun utilisateur n'est trouve if( count($user_data) == 0 ) return ['ModuleError' => ManagerError::ModuleError]; - - /* [2] On met les permissions au bon format (string -> array) - =========================================================*/ - $user_data[0]['permission'] = explode( ',', str_replace(' ', '', $user_data[0]['permission']) ); - /* [3] Gestion du retour =========================================================*/ return [ @@ -107,11 +101,6 @@ // Si aucun utilisateur n'est trouve if( $users_data === false ) return ['ModuleError' => ManagerError::ModuleError]; - /* [2] On met les permissions au bon format (string -> array) - =========================================================*/ - foreach($users_data as $i=>$user) - $users_data[$i]['permission'] = explode( ',', str_replace(' ', '', $user['permission']) ); - /* [3] Gestion du retour =========================================================*/ return [ @@ -129,8 +118,6 @@ * @login Login (identifiant) de l'utilisateur * @password Password de l'utilisateur * @mail Adresse mail de l'utilisateur - * @reference Reference vers une Personne (sinon NULL) - * @permissions Liste des permissions de l'utilisateur * * @return id_user Renvoie l'id de l'utilisateur cree * @@ -141,13 +128,11 @@ /* [0] Verification et formattage des INPUT =========================================================*/ $password = sessionManager::sha1($password); - $reference = (is_numeric($reference)) ? (int) $reference : null; - $permission = ($permission=='admin') ? 'admin' : 'subject'; /* [1] Creation de l'utilisateur =========================================================*/ - $create = new Repo('user/create', [$login, $password, $mail, $reference, $permission]); + $create = new Repo('user/create', [$login, $password, $mail]); $created_id = $create->answer(); // Si erreur de creation, on retourne une erreur diff --git a/build/database/repo/user.php b/build/database/repo/user.php index 0f84fe0..ce796c6 100644 --- a/build/database/repo/user.php +++ b/build/database/repo/user.php @@ -32,7 +32,7 @@ /* [1] On verifie son login/password dans la BDD =========================================================*/ - $check = Database::getPDO()->prepare("SELECT id_user, login, permission + $check = Database::getPDO()->prepare("SELECT id_user, login FROM users WHERE ( login = :username OR mail = :mail ) AND password = :password"); $check->execute(array( @@ -62,20 +62,16 @@ * @login Login (identifiant) de l'utilisateur * @password Password de l'utilisateur * @mail Adresse mail de l'utilisateur - * @reference Reference vers une Personne (sinon NULL) - * @permissions Liste des permissions de l'utilisateur * * @return id_user Renvoie l'id de l'utilisateur cree ou FALSE si erreur * */ - public static function create($login, $password, $mail, $reference, $permission){ + public static function create($login, $password, $mail){ /* [0] Verification et formattage des INPUT =========================================================*/ $checkInput = Checker::run('hash', $password); $checkInput = $checkInput && Checker::run('varchar(3, 30)', $login); $checkInput = $checkInput && Checker::run('mail', $mail); - $checkInput = $checkInput && ( Checker::run('id', $reference) || is_null($reference) ); - $checkInput = $checkInput && in_array($permission, ['admin', 'subject']); // Si erreur en entree, on retourne FAUX if( !$checkInput ) return false; @@ -86,12 +82,10 @@ $checkUnique = Database::getPDO()->prepare("SELECT id_user FROM users WHERE login = :login - OR mail = :mail - OR ( reference = :reference AND reference is not NULL )"); + OR mail = :mail "); $checkUnique->execute(array( ':login' => $login, - ':mail' => $mail, - ':reference' => $reference + ':mail' => $mail )); // Si un utilisateur a le meme LOGIN/MAIL ou REFERENCE qu'un autre, on retourne une erreur @@ -100,32 +94,13 @@ /* [2] Creation de l'utilisateur =========================================================*/ - /* (1) Si reference NULL */ - if( $reference == null ){ - - $create = Database::getPDO()->prepare("INSERT INTO users(id_user, login, password, mail, reference, permission) - VALUES(DEFAULT, :login, :password, :mail, NULL, :permission)"); - $create->execute(array( - ':login' => $login, - ':password' => $password, - ':mail' => $mail, - ':permission' => $permission - )); - - /* (2) Si reference est defini */ - }else{ - - $create = Database::getPDO()->prepare("INSERT INTO users(id_user, login, password, mail, reference, permission) - VALUES(DEFAULT, :login, :password, :mail, :reference, :permission)"); - $create->execute(array( - ':login' => $login, - ':password' => $password, - ':mail' => $mail, - ':reference' => (int) $reference, - ':permission' => $permission - )); - - } + $create = Database::getPDO()->prepare("INSERT INTO users(id_user, login, password, mail) + VALUES(DEFAULT, :login, :password, :mail)"); + $create->execute(array( + ':login' => $login, + ':password' => $password, + ':mail' => $mail + )); /* [3] Verification de la creation + recuperation id =========================================================*/ @@ -133,15 +108,11 @@ FROM users WHERE login = :login AND password = :password - AND mail = :mail - AND ( reference = :reference OR reference is NULL ) - AND permission = :permission"); + AND mail = :mail"); $checkCreate->execute(array( ':login' => $login, ':password' => $password, - ':mail' => $mail, - ':reference' => (int) $reference, - ':permission' => $permission + ':mail' => $mail )); // On recupere l'id de l'utilisateur diff --git a/build/lightdb/core/lightdb.php b/build/lightdb/core/lightdb.php index 9c02a25..2047983 100644 --- a/build/lightdb/core/lightdb.php +++ b/build/lightdb/core/lightdb.php @@ -6,7 +6,7 @@ class lightdb{ // REPERTOIRE RACINE DE TOUTES LES BDD - public static function default_root(){ return __BUILD__.'/lightdb/storage'; } + public static function default_root(){ return __BUILD__.'/lightdb/storage/'; } // ATTRIBUTS private $root; diff --git a/config/modules.json b/config/modules.json index fc18903..2f8c566 100755 --- a/config/modules.json +++ b/config/modules.json @@ -94,17 +94,15 @@ "create": { - "description": "Creation d'un nouvel utilisateur.", + "description": "Creation d'un nouvel administrateur.", "permissions": ["admin"], "parameters": { - "login": { "description": "Login de l'utilisateur, 30 caracteres maximum.", "type": "varchar(3,30)" }, - "password": { "description": "Mot de passe de l'utilisateur.", "type": "text" }, - "mail": { "description": "Adresse mail de l'utilisateur.", "type": "mail" }, - "reference": { "description": "UID d'une personne d'un sondage, peut etre vide.", "type": "text" }, - "permission": { "description": "Permissions de l'utilisateur : 'admin' ou 'subject'", "type": "varchar(5,7)" } + "login": { "description": "Login de l'administrateur, 30 caracteres maximum.", "type": "varchar(3,30)" }, + "password": { "description": "Mot de passe de l'administrateur.", "type": "text" }, + "mail": { "description": "Adresse mail de l'administrateur.", "type": "mail" } }, "output": { - "id_user": { "description": "Identifiant de l'utilisateur créé", "type": "id" } + "id_user": { "description": "Identifiant de l'administrateur créé", "type": "id" } } }, diff --git a/config/server.json b/config/server.json index 38ff9a2..67df2d7 100644 --- a/config/server.json +++ b/config/server.json @@ -1,13 +1,13 @@ { - "local" : { - "host" : "http://socioview", - "root" : "/" - }, + "local" : { + "host" : "http://nxtic/", + "root" : "/" + }, - "remote" : { - "host" : "https://socioview.xdrm.io", - "root" : "/" - } + "remote" : { + "host" : "https://nxtic.xdrm.io/", + "root" : "/" + } } diff --git a/public_html/index.php b/public_html/index.php index 299e2d2..781d382 100644 --- a/public_html/index.php +++ b/public_html/index.php @@ -11,7 +11,6 @@ use \manager\MenuManager; - /*******************************************/ /* DEBUGGER */ /*******************************************/ @@ -27,13 +26,13 @@ /* (1) Valeurs par defaut */ if( !isset($_SESSION['userid']) ) $_SESSION['userid'] = null; if( !isset($_SESSION['username']) ) $_SESSION['username'] = null; - if( !isset($_SESSION['permission']) ) $_SESSION['permission'] = []; + if( !isset($_SESSION['permission']) ) $_SESSION['permission'] = false; /* (2) Gestion de la connection */ $login_vars = isset($_POST['login-sub']); - $login_vars = $login_vars && isset($_POST['login']) && Checker::run('varchar(3,50)', $_POST['login']); - $login_vars = $login_vars && isset($_POST['password']) && Checker::run('text', $_POST['password']); + $login_vars = $login_vars && isset($_POST['login']); + $login_vars = $login_vars && isset($_POST['password']); // Status de login $_SESSION['login_status'] = 'no'; diff --git a/public_html/js/action-script.js b/public_html/js/action-script.js index ea8082d..3072bb7 100644 --- a/public_html/js/action-script.js +++ b/public_html/js/action-script.js @@ -147,7 +147,7 @@ var navMenu = function(section){ var refresher = function(){ - navSubMenu(); + navSubMenu(pageManager.vars[0]); }; @@ -159,7 +159,7 @@ DOM = { HEADER: $('body > #WRAPPER > #HEADER'), MENUSIDE: $('body > #WRAPPER > #MENU-SIDE'), CONTAINER: $('body > #WRAPPER > #CONTAINER') - }; +}; // On cree une instance de l'api api = new APIClass('/api/'); diff --git a/public_html/js/min/action-script.js b/public_html/js/min/action-script.js index 65ab563..1f8f152 100644 --- a/public_html/js/min/action-script.js +++ b/public_html/js/min/action-script.js @@ -1,8 +1,8 @@ var DOM,pageManager,api,Notification,navSubMenu=function(a){var c=$("#MENU-SIDE > span[data-link="+pageManager.page+'] + div.sub > span[data-sublink="'+pageManager.vars[0]+'"]'),b=null,b=a instanceof Element?a:null,b="string"==typeof a?$("#MENU-SIDE > span[data-link="+pageManager.page+'] + div.sub > span[data-sublink="'+a+'"]'):b,b=null==b?$("#MENU-SIDE > span[data-link="+pageManager.page+"] + div.sub > span[data-sublink]"):b;if(null==b)return!1;null!=c&&c.remClass("active");c=$$("#CONTAINER > section[data-sublink].active"); for(a=0;a section[data-sublink="'+b.getData("sublink")+'"]'),a=0;a #MENU-SIDE > span[data-link="'+pageManager.page+'"]'),b=null,b=a instanceof Element?a:null,b=(b="string"==typeof a?$('#WRAPPER > #MENU-SIDE > span[data-link="'+ a+'"]'):b)||$('#WRAPPER > #MENU-SIDE > span[data-link="'+pageManager.pagelist[0]+'"]');if(null==b)return!1;c&&c.remClass("active");b&&b.addClass("active");b.getData("link")&&(DOM.HEADER.addClass("loading"),a=function(){1<=pageManager.vars.length&&null!=$('#CONTAINER > section[data-sublink="'+pageManager.vars[0]+'"]')?navSubMenu(pageManager.vars[0]):navSubMenu(null);var a=$("#MENU-SIDE > span[data-link="+pageManager.page+"] + div.sub");null!=a&&a.addEventListener("click",function(a){for(a=a.target;a!= -document.body&&!a.getData("sublink");)a=a.parentNode;a.getData("sublink")&&navSubMenu(a)},!1);DOM.HEADER.remClass("loading")},pageManager.page!=b.getData("link")&&pageManager.setPage(b.getData("link")),pageManager.activeXHR?pageManager.activeXHR.addEventListener("loadend",a,!1):a.call())},refresher=function(){navSubMenu()};DOM={WRAPPER:$("body > #WRAPPER"),HEADER:$("body > #WRAPPER > #HEADER"),MENUSIDE:$("body > #WRAPPER > #MENU-SIDE"),CONTAINER:$("body > #WRAPPER > #CONTAINER")};api=new APIClass("/api/"); -Notification=new NotificationClass($("#notification-container"));Notification.defaultTimeout=4E3; +document.body&&!a.getData("sublink");)a=a.parentNode;a.getData("sublink")&&navSubMenu(a)},!1);DOM.HEADER.remClass("loading")},pageManager.page!=b.getData("link")&&pageManager.setPage(b.getData("link")),pageManager.activeXHR?pageManager.activeXHR.addEventListener("loadend",a,!1):a.call())},refresher=function(){navSubMenu(pageManager.vars[0])};DOM={WRAPPER:$("body > #WRAPPER"),HEADER:$("body > #WRAPPER > #HEADER"),MENUSIDE:$("body > #WRAPPER > #MENU-SIDE"),CONTAINER:$("body > #WRAPPER > #CONTAINER")}; +api=new APIClass("/api/");Notification=new NotificationClass($("#notification-container"));Notification.defaultTimeout=4E3; Notification.errorCodes={"-1":"Erreur de r\u00e9seau, veuillez recharger la page et r\u00e9essayer",0:"Erreur interne",1:"Erreur interne",2:"Erreur interne",3:"Le fichier est introuvable",4:"Erreur interne",5:"Erreur interne",6:"Erreur interne",7:"Erreur interne",8:"Erreur interne",9:"Certaines donn\u00e9es sont manquantes",10:"Erreur interne",11:"Erreur interne",12:"Erreur interne",13:"Erreur interne",14:"Erreur interne",15:"Erreur interne",16:"Vous n'avez pas la permission d'effectuer cette action", 17:"Le t\u00e9l\u00e9chargement a \u00e9chou\u00e9",18:"Le fichier est invalide (format incorrect)"};lsi.setStorage(localStorage);DOM.MENUSIDE.addEventListener("click",function(a){for(a=a.target;a!=document.body&&!a.getData("link");)a=a.parentNode;a.getData("link")&&navMenu(a.getData("link"))},!1);function reload(){pageManager.refresh()}var LOGIN={show:document.getElementById("user-data"),hide:document.getElementById("login-close"),page:document.getElementById("LOGIN")}; LOGIN.show.addEventListener("click",function(a){LOGIN.page.className="active"},!1);LOGIN.hide.addEventListener("click",function(a){LOGIN.page.className=""},!1);api.send({path:"download/menu"},function(a){if(0===a.ModuleError){pagelist=[];for(var c=0;c dispatch(); // Si erreur de requete if( $answer_users->error != ManagerError::Success ) var_dump( ManagerError::explicit($answer_users->error) ); - // On recupere la liste des utilisateurs + // On recupere la liste des administrateurs $users = $answer_users->get('users'); ?>
-
Gestion des utilisateurs

+
Gestion des administrateurs

- Gestion des utilisateurs + Gestion des administrateurs
- -
Liste des utilisateurs de la plateforme. Un administrateur peut tout faire. Un sujet peut compléter ses données et les consulter.
+ +
Liste des administrateurs de la plateforme exhaustive.
Identifiant
Adresse mail
Mot de passe
Vérification du mot de passe
- Droits -    -
- Identifiant d'étude (optionnel)
- +
@@ -129,12 +125,7 @@ if( permission('admin') ){ if( $user['login'] == $_SESSION['username'] ) continue; echo "
  • "; - // Si user actif - if( in_array('admin', $user['permission']) ) - echo "
    Administrateur
    "; - else - echo "
    Sujet
    "; - + echo "
    Administrateur
    "; echo "
    "; echo "".$user['login']."";