Bizeto v1.0.0-002: Perbaikan Otentikasi WebSocket & QR Code Device Pairing WhatsApp
Penyelesaian isu barcode QR code pairing yang tidak muncul dengan penambahan ekstraksi token query param pada middleware otentikasi Go dan WebSocket client.
1mnt baca
Pada saat pengguna membuka antarmuka pendaftaran / koneksi perangkat (Connectivity), barcode WhatsApp tidak kunjung muncul.
Investigasi menemukan bahwa endpoint WebSocket pairing (/api/ws/pair) berada di bawah middleware otentikasi JWT yang hanya memeriksa header HTTP Authorization: Bearer <token> dan cookie auth_token. Karena objek standar browser new WebSocket(...) tidak mendukung kustomisasi header otentikasi, koneksi ditolak dengan status 401 Unauthorized sebelum permintaan pembuatan QR code ke Whatsmeow sempat dijalankan.
- Backend Go Middleware (
auth_middleware.go):- Menambahkan kemampuan parsing token dari query parameter (
c.Query("token")/c.Query("auth_token")) dan header subprotokol (Sec-WebSocket-Protocol).
- Menambahkan kemampuan parsing token dari query parameter (
- Backend Pairing Handler (
device_handler.go):- Menambahkan penanganan daur hidup client (
client.Disconnect()) saat koneksi WebSocket tertutup untuk mencegah session leak. - Menambahkan log diagnosa saat QR code diterima dari WhatsApp engine dan dipancarkan ke WebSocket client.
- Menambahkan penanganan daur hidup client (
- Frontend WebSocket Clients:
- Menambahkan parameter query
?token=${encodeURIComponent(token)}pada inisialisasi WebSocket diAppContext.tsx,Connect.tsx, danAgentIntelligence.tsx. - Memperbaiki routing WS dari
/ws/pairmenjadi/api/ws/pairagar diteruskan dengan benar oleh Traefik ke backend Go.
- Menambahkan parameter query
- Backend Go berhasil dikompilasi ulang (Linux AMD64) dan frontend Vite SPA diperbarui.
- Service telah aktif di server VPS produksi (
bizeto.samkarsa.com).