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 []; } } ?>