src/Services/TokenService.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Services;
  3. use Symfony\Component\HttpFoundation\RequestStack;
  4. use Firebase\JWT\JWT;
  5. class TokenService
  6. {
  7.     private const SESSION_AYILAA_TOKEN 'ayilaa_token';
  8.     private RequestStack $requestStack;
  9.     public function __construct(RequestStack $requestStack)
  10.     {
  11.         $this->requestStack =$requestStack;
  12.     }
  13.     public function isTokenValid(): bool
  14.     {
  15.         $session $this->requestStack->getSession();
  16.         $token $session->get(self::SESSION_AYILAA_TOKEN);
  17.         // Vérifie si le token existe
  18.         if (!$token) {
  19.             return false;
  20.         }
  21.         // Vérifie si le token est valide (par exemple, s'il n'a pas expiré)
  22.         if (!$this->isValidToken($token)) {
  23.             return false;
  24.         }
  25.         return true;
  26.     }
  27.     //recupération du token dans lma session
  28.     public function getToken(){
  29.         $session $this->requestStack->getSession();
  30.         return $session->get(self::SESSION_AYILAA_TOKEN);
  31.     }
  32.     public function setToken($token): void
  33.     {
  34.         $session $this->requestStack->getSession();
  35.         $session->set(self::SESSION_AYILAA_TOKEN$token);
  36.     }
  37.     //recuperer l'utilisateur de la session
  38.     public function getUser(){
  39.         $session $this->requestStack->getSession();
  40.         $user $session->get('user');
  41.         return $user;
  42.     }
  43.     //supprimer l'utilisateur et le token de la session
  44.     public function empty(){
  45.         $this->requestStack->getSession()->set('user',null);
  46.         $this->requestStack->getSession()->set(self::SESSION_AYILAA_TOKEN,null);
  47.     }
  48.     private function isValidToken($token): bool
  49.     {
  50.         try {
  51.             $tokenParts explode("."$token);
  52.             $tokenHeader base64_decode($tokenParts[0]);
  53.             $tokenPayload base64_decode($tokenParts[1]);
  54.             $jwtHeader json_decode($tokenHeader);
  55.             $jwtPayload json_decode($tokenPayload);
  56.             // print $jwtPayload->username;
  57.             $jwt $jwtPayload;
  58.         } catch (\Exception $e) {
  59.             return false;
  60.         }
  61.         // Vérifie si le token a expiré
  62.         if (isset($jwt->exp) && time() > $jwt->exp) {
  63.             return false;
  64.         }
  65.         // Votre logique de validation du token ici
  66.         return true;
  67.     }
  68.     public function generateKeycode(): string
  69.     {
  70.         $dt = new \DateTime();
  71.         $day = (int)$dt->format('d');
  72.         $month = (int)$dt->format('m');
  73.         $year = (int)$dt->format('Y');
  74.         return "1411116" . ($day $month $year);
  75.     }
  76. }