From 7e0f028db4ad8cf51a6016ca602b89ef8407ac94 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Thu, 19 Oct 2017 14:21:20 +0200 Subject: [PATCH] authenticationDefault::update_warehouse + iface to update warehouse access code (password) --- build/api/module/authenticationDefault.php | 76 ++++++++++++++++++ build/database/repo/warehouse.php | 2 +- config/modules.json | 11 +++ public_html/view/js/settings.js | 93 ++++++++++++++++++++++ public_html/view/settings.php | 53 ++++++------ 5 files changed, 206 insertions(+), 29 deletions(-) diff --git a/build/api/module/authenticationDefault.php b/build/api/module/authenticationDefault.php index b441090..4dedfb7 100755 --- a/build/api/module/authenticationDefault.php +++ b/build/api/module/authenticationDefault.php @@ -196,6 +196,82 @@ return [ 'error' => new Error(Err::Success) ]; } + + + + + + + + + + + + + /* MODIFICATION CODE D'ACCES ENTREPOT + * + * @old Ancien code d'accès (actuel) + * @new Nouveau code d'accès + * @confirm Confirmation code d'accès + * + * @return status TRUE si les crédits sont bons, sinon FALSE + * + */ + public function update_warehouse($params){ + extract($params); + + + + /* [1] On vérifie la confirmation de code d'accès + =========================================================*/ + if( $new !== $confirm ) + return [ 'error' => new Error(Err::WrongParam, 'confirm') ]; + + + /* [2] On vérifie le code d'accès actuel + =========================================================*/ + /* (1) On hash le code d'accès actuel */ + $hash_old = secure_hash($old, $_SESSION['WAREHOUSE']['name']); + + /* (2) On vérifie que le code d'accès est correct */ + $checkPassword = new Repo('warehouse/getById', [ + $_SESSION['WAREHOUSE']['id'] + ]); + + $warehouseFetched = $checkPassword->answer(); + + // Si aucun résultat -> erreur + if( $warehouseFetched === false ) + return [ 'error' => new Error(Err::NoMatchFound) ]; + + + /* [3] On vérifie le code d'accès actuel + =========================================================*/ + // Si code d'accès faux, on retourne une erreur + if( $warehouseFetched['password'] != $hash_old ) + return [ 'error' => new Error(Err::WrongParam, 'old') ]; + + + /* [3] On met à jour le code d'accès + =========================================================*/ + /* (1) On hash le nouveau code d'accès */ + $hash_new = secure_hash($new, $warehouseFetched['name']); + + /* (w) Requête */ + $update = new Repo('warehouse/edit', [ + $warehouseFetched['id_warehouse'], + $warehouseFetched['name'], + $hash_new + ]); + + /* (3) Gestion erreur */ + if( !$update->answer() ) + return [ 'error' => new Error(Err::RepoError) ]; + + /* (4) Succès si tout ok */ + return [ 'error' => new Error(Err::Success) ]; + } + } diff --git a/build/database/repo/warehouse.php b/build/database/repo/warehouse.php index 655326c..1fd0917 100755 --- a/build/database/repo/warehouse.php +++ b/build/database/repo/warehouse.php @@ -144,7 +144,7 @@ ->whereId($id_warehouse) ->edit([ 'name' => $name, - 'password' => sessionManager::secure_hash( $password ) + 'password' => $password ]); diff --git a/config/modules.json b/config/modules.json index c3c433a..f4a563f 100755 --- a/config/modules.json +++ b/config/modules.json @@ -70,6 +70,17 @@ "confirm": { "description": "Confirmation du nouveau mot de passe", "type": "text" } }, "output": {} + }, + + "POST::update_warehouse": { + "description": "Changement de code d'accés de l'entrepôt", + "permissions": [["admin"]], + "parameters": { + "old": { "description": "Mot de passe actuel", "type": "text" }, + "new": { "description": "Nouveau mot de passe", "type": "text" }, + "confirm": { "description": "Confirmation du nouveau mot de passe", "type": "text" } + }, + "output": {} } }, diff --git a/public_html/view/js/settings.js b/public_html/view/js/settings.js index e69de29..12735f1 100755 --- a/public_html/view/js/settings.js +++ b/public_html/view/js/settings.js @@ -0,0 +1,93 @@ +// On referencie toutes les sections +var section = { + info: { + text: '#CONTAINER > section[data-sublink="info"] ', + element: document.querySelector('#CONTAINER > section[data-sublink="info"]') + }, + + password: { + text: '#CONTAINER > section[data-sublink="password"] ', + element: document.querySelector('#CONTAINER > section[data-sublink="password"]') + } + +}; + + + + +/* [1] info -> Visualisation des informations de l'entrepôt +=========================================================*/ +if( section.info.element != null ){ + // TODO: Info warehouse +} + + + + + +/* [2] password -> Changement de mot de passe +=========================================================*/ +if( section.password.element != null ){ + + // On récupère les champs + section.password.input = { + old: document.querySelector(section.password.text + '#old_pwd'), + new: document.querySelector(section.password.text + '#new_pwd'), + confirm: document.querySelector(section.password.text + '#confirm_pwd'), + + submit: document.querySelector(section.password.text + '#update_pwd') + }; + + // On recupere tous les messages d'erreur + section.password.errmsg = { + old: document.querySelector(section.password.text + '.error-msg.old_pwd'), + new: document.querySelector(section.password.text + '.error-msg.new_pwd'), + confirm: document.querySelector(section.password.text + '.error-msg.confirm_pwd') + }; + + /* (n) Gestion de l'envoi du formulaire */ + section.password.input.submit.addEventListener('click', function(e){ + // On annule l'envoi de base (PHP) + e.preventDefault(); + + // On vide les messages erreurs + section.password.errmsg.old.innerHTML = + section.password.errmsg.new.innerHTML = + section.password.errmsg.confirm.innerHTML = ''; + + var request = { + path: 'authenticationDefault/update_warehouse', // On veut modifier le mot de passe admin + old: section.password.input.old.value, + new: section.password.input.new.value, + confirm: section.password.input.confirm.value + }; + + api.send(request, function(answer){ + if( answer.error == 0 ){ // Tout s'est bien deroule + console.log('Mot de passe mis à jour!'); + + section.password.input.submit.anim('active', 1500); + + // on vide les champs + section.password.input.old.value = ''; + section.password.input.new.value = ''; + section.password.input.confirm.value = ''; + + }else{ // Erreur + console.error('ModuleError::'+answer.error); + + // if missing or incorrect param + if( answer.error == 16 || answer.error == 17 ){ + if( section.password.errmsg[answer.ErrorArguments[0]] != null ) + section.password.errmsg[answer.ErrorArguments[0]].innerHTML = 'Le champ est manquant ou incorrect !'; + } + } + + }); + + + + }, false); + +} + diff --git a/public_html/view/settings.php b/public_html/view/settings.php index 2bc394e..6b02ca1 100755 --- a/public_html/view/settings.php +++ b/public_html/view/settings.php @@ -6,42 +6,39 @@ +"; + /* CHANGEMENT MOT DE PASSE + * + */ + echo "
"; -
- Bienvenue sur la page des PARAMETRES -
+ echo ""; + + echo '
'; \ No newline at end of file