diff --git a/build/api/module/adminDefault.php b/build/api/module/adminDefault.php new file mode 100644 index 0000000..dd23c76 --- /dev/null +++ b/build/api/module/adminDefault.php @@ -0,0 +1,211 @@ + Liste des administrateurs de l'entrepôt + * + */ + public function getAll($params){ + /* (1) Fetch admin list + ---------------------------------------------------------*/ + /* (1) Prepare request */ + $listRq = new Repo('admin/getByIdWarehouse', [ $_SESSION['WAREHOUSE']['id'] ]); + + /* (2) Get response */ + $listRs = $listRq->answer(); + + /* (3) Manage error */ + if( !is_array($listRs) ) + return ['error' => new Error(Err::RepoError)]; + + + /* (2) Setup data (remove self) + ---------------------------------------------------------*/ + return ['admins' => $listRs]; + + } + + + + + + + + /* MODIFICATION MOT DE PASSE ADMINISTRATEUR + * + * @old Ancien mot de passe (actuel) + * @new Nouveau mot de passe + * @confirm Confirmation mot de passe + * + * @return status TRUE si les crédits sont bons, sinon FALSE + * + */ + public function update($params){ + extract($params); + + + + /* [1] On vérifie la confirmation de mot de passe + =========================================================*/ + if( $new !== $confirm ) + return [ 'error' => new Error(Err::WrongParam, 'confirm') ]; + + + /* [2] On vérifie le mot de passe actuel + =========================================================*/ + /* (1) On hash le mot de passe actuel */ + $hash_old = secure_hash($old, $_SESSION['ADMIN']['username']); + + /* (2) On vérifie que le mot de passe est correct */ + $checkPassword = new Repo('admin/getById', [ + $_SESSION['WAREHOUSE']['id'], + $_SESSION['ADMIN']['id'] + ]); + + $adminFetched = $checkPassword->answer(); + + // Si aucun résultat -> erreur + if( $adminFetched === false ) + return [ 'error' => new Error(Err::NoMatchFound) ]; + + + /* [3] On vérifie le mot de passe actuel + =========================================================*/ + // Si mot de passe faux, on retourne une erreur + if( $adminFetched['password'] != $hash_old ) + return [ 'error' => new Error(Err::WrongParam, 'old') ]; + + + /* [3] On met à jour le mot de passe + =========================================================*/ + /* (1) On hash le nouveau mot de passe */ + $hash_new = secure_hash($new, $adminFetched['username']); + + /* (w) Requête */ + $update = new Repo('admin/edit', [ + $adminFetched['id_admin'], + $adminFetched['username'], + $adminFetched['mail'], + $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) ]; + } + + + + + + /* CREATION D'UN NOUVEAL ADMINISTRATEUR + * + * @username Identifiant du nouvel administrateur + * + * @return password Mot de passe généré + * + */ + public function create($params){ + extract($params); + + + + /* [1] On génère un mot de passe + =========================================================*/ + $password = secure_hash(uniqid(), uniqid()); + + + /* [2] On vérifie l'unicité de l'identifiant + =========================================================*/ + /* (1) On vérifie que l'identifiant n'existe pas */ + $checkPassword = new Repo('admin/getByUsername', [ + $_SESSION['WAREHOUSE']['id'], + $username + ]); + + $adminFetched = $checkPassword->answer(); + + // Si un résultat -> erreur + if( $adminFetched !== false ) + return [ 'error' => new Error(Err::AlreadyExists, 'username') ]; + + + /* [3] On crée l'administrateur + =========================================================*/ + /* (1) Requête */ + $create = new Repo('admin/create', [ + $_SESSION['WAREHOUSE']['id'], + $username, + $mail, + $password + ]); + + + + /* (3) Gestion erreur */ + if( !$create->answer() ) + return [ 'error' => new Error(Err::RepoError) ]; + + /* (4) Succès si tout ok */ + return [ 'password' => $password ]; + } + + + + + + + + /* SUPPRESSION D'UN ADMINISTRATEUR DU MEME ENTREPOT + * + * @id_admin UID de l'administrateur + * + */ + public function delete($params){ + extract($params); + + /* [1] On vérifie que ce n'est pas nous-même + =========================================================*/ + if( $id_admin == $_SESSION['ADMIN']['id'] ) + return ['error' => new Error(Err::NoMatchFound) ]; + + + /* [2] On essaie de supprimer + =========================================================*/ + /* (1) On vérifie que l'identifiant n'existe pas */ + $del_req = new Repo('admin/delete', [ + $_SESSION['WAREHOUSE']['id'], + $id_admin + ]); + + /* (2) Gestion erreur */ + if( !$del_req->answer() ) + return [ 'error' => new Error(Err::RepoError) ]; + + /* (4) Succès si tout ok */ + return []; + } + + } + + +?> diff --git a/build/api/module/authenticationDefault.php b/build/api/module/authenticationDefault.php index c9d4435..7b7b864 100755 --- a/build/api/module/authenticationDefault.php +++ b/build/api/module/authenticationDefault.php @@ -121,116 +121,6 @@ - - /* RETOURNE LA LISTE DSE ADMINISTRATEURS DE L'ENTREPOT - * - * @return admins Liste des administrateurs de l'entrepôt - * - */ - public function get_admins($params){ - /* (1) Fetch admin list - ---------------------------------------------------------*/ - /* (1) Prepare request */ - $listRq = new Repo('admin/getByIdWarehouse', [ $_SESSION['WAREHOUSE']['id'] ]); - - /* (2) Get response */ - $listRs = $listRq->answer(); - - /* (3) Manage error */ - if( !is_array($listRs) ) - return ['error' => new Error(Err::RepoError)]; - - - /* (2) Setup data (remove self) - ---------------------------------------------------------*/ - return ['admins' => $listRs]; - - } - - - - - - - - /* MODIFICATION MOT DE PASSE ADMINISTRATEUR - * - * @old Ancien mot de passe (actuel) - * @new Nouveau mot de passe - * @confirm Confirmation mot de passe - * - * @return status TRUE si les crédits sont bons, sinon FALSE - * - */ - public function update_admin($params){ - extract($params); - - - - /* [1] On vérifie la confirmation de mot de passe - =========================================================*/ - if( $new !== $confirm ) - return [ 'error' => new Error(Err::WrongParam, 'confirm') ]; - - - /* [2] On vérifie le mot de passe actuel - =========================================================*/ - /* (1) On hash le mot de passe actuel */ - $hash_old = secure_hash($old, $_SESSION['ADMIN']['username']); - - /* (2) On vérifie que le mot de passe est correct */ - $checkPassword = new Repo('admin/getById', [ - $_SESSION['WAREHOUSE']['id'], - $_SESSION['ADMIN']['id'] - ]); - - $adminFetched = $checkPassword->answer(); - - // Si aucun résultat -> erreur - if( $adminFetched === false ) - return [ 'error' => new Error(Err::NoMatchFound) ]; - - - /* [3] On vérifie le mot de passe actuel - =========================================================*/ - // Si mot de passe faux, on retourne une erreur - if( $adminFetched['password'] != $hash_old ) - return [ 'error' => new Error(Err::WrongParam, 'old') ]; - - - /* [3] On met à jour le mot de passe - =========================================================*/ - /* (1) On hash le nouveau mot de passe */ - $hash_new = secure_hash($new, $adminFetched['username']); - - /* (w) Requête */ - $update = new Repo('admin/edit', [ - $adminFetched['id_admin'], - $adminFetched['username'], - $adminFetched['mail'], - $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) ]; - } - - - - - - - - - - - - - /* MODIFICATION CODE D'ACCES ENTREPOT * * @old Ancien code d'accès (actuel) @@ -296,69 +186,6 @@ } - - - - - - - - - - - - /* CREATION D'UN NOUVEAL ADMINISTRATEUR - * - * @username Identifiant du nouvel administrateur - * - * @return password Mot de passe généré - * - */ - public function create_admin($params){ - extract($params); - - - - /* [1] On génère un mot de passe - =========================================================*/ - $password = secure_hash(uniqid(), uniqid()); - - - /* [2] On vérifie l'unicité de l'identifiant - =========================================================*/ - /* (1) On vérifie que l'identifiant n'existe pas */ - $checkPassword = new Repo('admin/getByUsername', [ - $_SESSION['WAREHOUSE']['id'], - $username - ]); - - $adminFetched = $checkPassword->answer(); - - // Si un résultat -> erreur - if( $adminFetched !== false ) - return [ 'error' => new Error(Err::AlreadyExists, 'username') ]; - - - /* [3] On crée l'administrateur - =========================================================*/ - /* (1) Requête */ - $create = new Repo('admin/create', [ - $_SESSION['WAREHOUSE']['id'], - $username, - $mail, - $password - ]); - - - - /* (3) Gestion erreur */ - if( !$create->answer() ) - return [ 'error' => new Error(Err::RepoError) ]; - - /* (4) Succès si tout ok */ - return [ 'password' => $password ]; - } - } diff --git a/build/database/repo/admin.php b/build/database/repo/admin.php index da5cb14..d6d6fe4 100755 --- a/build/database/repo/admin.php +++ b/build/database/repo/admin.php @@ -131,15 +131,17 @@ /* SUPPRIME UN ENTREPOT DONNE * - * @id_admin UID de l'administrateur en question + * @id_warehouse UID de l'entrepôt en question + * @id_admin UID de l'administrateur en question * * @return status Retourne si oui ou non l'administrateur a bien ete supprime * */ - public static function delete($id_admin){ + public static function delete($id_warehouse, $id_admin){ /* [1] On redige/execute la requete =========================================================*/ $deleted = Table::get('admin') + ->whereIdWarehouse($id_warehouse) ->whereId($id_admin) ->delete(); diff --git a/build/generic/view/settings/admin/view/main.php b/build/generic/view/settings/admin/view/main.php index b728d72..6137381 100644 --- a/build/generic/view/settings/admin/view/main.php +++ b/build/generic/view/settings/admin/view/main.php @@ -33,7 +33,7 @@ public function get_admins(){ /* (1) On exécute la requête */ - $adminListRq = new Request('authenticationDefault/get_admins'); + $adminListRq = new Request('adminDefault/getAll'); /* (2) On recupere la reponse */ $adminListRs = $adminListRq->dispatch(); diff --git a/build/generic/view/settings/admin/view/main.twig b/build/generic/view/settings/admin/view/main.twig index 17966fa..0446745 100644 --- a/build/generic/view/settings/admin/view/main.twig +++ b/build/generic/view/settings/admin/view/main.twig @@ -4,7 +4,7 @@ {% block entry_tag %}
{% endblock %} - {% block entry_name %} #{{ admin.username }} {% endblock %} + {% block entry_name %} {{ admin.username }} {% endblock %} {% block entry_mail %} diff --git a/config/modules.json b/config/modules.json index e55adc3..d0f4694 100755 --- a/config/modules.json +++ b/config/modules.json @@ -61,7 +61,23 @@ } }, - "POST::get_admins": { + "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": {} + } + + }, + + + "adminDefault": { + + "POST::getAll": { "description": "Retourne la liste des administrateurs de l'entrepôt.", "permissions": [["admin"]], "parameters": {}, @@ -70,7 +86,7 @@ } }, - "POST::update_admin": { + "POST::update": { "description": "Changement de mot de passe administrateur", "permissions": [["admin"]], "parameters": { @@ -81,18 +97,16 @@ "output": {} }, - "POST::update_warehouse": { - "description": "Changement de code d'accés de l'entrepôt", + "POST::delete": { + "description": "Suppression d'un accès administrateur", "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" } + "id_admin": { "description": "Identifiant de l'administrateur", "type": "id" } }, "output": {} }, - "POST::create_admin": { + "POST::create": { "description": "Création d'un administrateur", "permissions": [["admin"]], "parameters": {