| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- use \Firebase\JWT\JWT;
- /**
- * Verification du token JWT seul, validité, signature, expiration
- *
- * @param string $token Token JWT à vérifier
- * @param string $jwtSecret Clé secrète JWT
- * @return object Payload JWT
- */
- function verifyJWTtoken(string $token, string $jwtSecret) {
- try {
- return JWT::decode($token, $jwtSecret, ["HS256"]);
- } catch (\Firebase\JWT\SignatureInvalidException $e) {
- echo "Identité invalide";
- die();
- } catch (Exception $e) {
- // echo $e->getMessage();
- echo "Erreur lors de la vérification de l'identité";
- die();
- }
- }
- /**
- * Contacte le backend d'Asclepia pour vérifier que la session existe, que l'utilisateur existe et qu'il soit
- * bien premium
- *
- * @param string $token Token JWT de l'utilisateur à authentifier
- */
- function verifyUserPremium(string $token) {
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, "https://interface.asclepia.io/auth/user");
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
- curl_setopt($curl, CURLOPT_TIMEOUT, 60);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
- curl_setopt($curl, CURLOPT_HTTPHEADER, [
- "authorization: JWT ".$_GET["jwt"],
- "accept: application/json, text/plain, */*"
- ]);
- $response = curl_exec($curl);
- // Vérification de la réponse
- $httpResponseCode = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
- if ($httpResponseCode === 200) {
- $userData = json_decode($response, true);
- if ($userData === NULL || !isset($userData["premium"])) {
- echo "Echec de récupération des données utilisateur";
- die();
- }
-
- // Vérification du statut premium de l'utilisateur
- if ($userData["premium"] === FALSE) {
- echo "Abonnement requis.";
- die();
- }
- } else {
- echo "Echec de l'authentification utilisateur";
- die();
- }
- }
|