fnSessionCheck.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. use \Firebase\JWT\JWT;
  3. /**
  4. * Verification du token JWT seul, validité, signature, expiration
  5. *
  6. * @param string $token Token JWT à vérifier
  7. * @param string $jwtSecret Clé secrète JWT
  8. * @return object Payload JWT
  9. */
  10. function verifyJWTtoken(string $token, string $jwtSecret) {
  11. try {
  12. return JWT::decode($token, $jwtSecret, ["HS256"]);
  13. } catch (\Firebase\JWT\SignatureInvalidException $e) {
  14. echo "Identité invalide";
  15. die();
  16. } catch (Exception $e) {
  17. // echo $e->getMessage();
  18. echo "Erreur lors de la vérification de l'identité";
  19. die();
  20. }
  21. }
  22. /**
  23. * Contacte le backend d'Asclepia pour vérifier que la session existe, que l'utilisateur existe et qu'il soit
  24. * bien premium
  25. *
  26. * @param string $token Token JWT de l'utilisateur à authentifier
  27. */
  28. function verifyUserPremium(string $token) {
  29. $curl = curl_init();
  30. curl_setopt($curl, CURLOPT_URL, "https://interface.asclepia.io/auth/user");
  31. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  32. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
  33. curl_setopt($curl, CURLOPT_TIMEOUT, 60);
  34. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
  35. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  36. curl_setopt($curl, CURLOPT_HTTPHEADER, [
  37. "authorization: JWT ".$_GET["jwt"],
  38. "accept: application/json, text/plain, */*"
  39. ]);
  40. $response = curl_exec($curl);
  41. // Vérification de la réponse
  42. $httpResponseCode = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
  43. if ($httpResponseCode === 200) {
  44. $userData = json_decode($response, true);
  45. if ($userData === NULL || !isset($userData["premium"])) {
  46. echo "Echec de récupération des données utilisateur";
  47. die();
  48. }
  49. // Vérification du statut premium de l'utilisateur
  50. if ($userData["premium"] === FALSE) {
  51. echo "Abonnement requis.";
  52. die();
  53. }
  54. } else {
  55. echo "Echec de l'authentification utilisateur";
  56. die();
  57. }
  58. }