base_url(), // Issuer 'iat' => $issuedAt, // Issued at 'exp' => $expire, // Expiration time 'sub' => $userData['user_id'], // Subject (User ID) 'data' => $userData // Additional user data ]; return JWT::encode($payload, $key, 'HS256'); } } if (!function_exists('validateJWT')) { function validateJWT($token) { $key = getenv('JWT_SECRET'); try { $decoded = JWT::decode($token, new Key($key, 'HS256')); return (array) $decoded; } catch (\Exception $e) { return null; } } }