Nom de l'entrepot * @password Mot de passe de l'entrepot * * @return status TRUE si les crédits sont bons, sinon FALSE * */ public function warehouse($params){ extract($params); /* [0] Par défaut, on déconnecte =========================================================*/ $_SESSION['AUTH'] = []; /* [1] On recherche un entrepot avec ce nom =========================================================*/ $getName = new Repo('warehouse/getByName', [$name]); $nameFetched = $getName->answer(); // Si aucun résultat, on retourne le status FALSE if( count($nameFetched) == 0 ) return [ 'status' => false ]; /* [2] On vérifie le mot de passe =========================================================*/ $hash_password = secure_hash($password, $name); // Si mot de passe faux, on retourne le status FALSE if( $nameFetched[0]['password'] != $hash_password ) return [ 'status' => false ]; /* [3] On définit le token =========================================================*/ $_SESSION['AUTH'][0] = $nameFetched[0]['token']; // On retourne le status return [ 'status' => true ]; } /* CONNEXION EN TANT QU'ADMINISTRATEUR * * @username Nom de l'administrateur * @password Mot de passe de l'administrateur * * @return status TRUE si les crédits sont bons, sinon FALSE * */ public function admin($params){ extract($params); /* [0] Par défaut, on déconnecte l'administrateur =========================================================*/ $_SESSION['AUTH'][1] = ''; /* [1] On recherche un administrateur avec ce nom =========================================================*/ $getUsername = new Repo('admin/getByUsername', [ $_SESSION['WAREHOUSE']['id'], $username ]); $usernameFetched = $getUsername->answer(); // Si aucun résultat, on retourne le status FALSE if( $usernameFetched === false ) return [ 'status' => false ]; /* [2] On vérifie le mot de passe =========================================================*/ $hash_password = secure_hash($password, $username); // Si mot de passe faux, on retourne le status FALSE if( $usernameFetched['password'] != $hash_password ) return [ 'status' => false ]; /* [3] On définit le token =========================================================*/ $_SESSION['AUTH'][1] = $usernameFetched['token']; // On retourne le status return [ 'status' => true ]; } /* 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) ]; } } ?>