TKK_E32230206/laporan_autentikasi_baru.md

2.9 KiB

Laporan Alur Teknis Autentikasi dan Manajemen Sesi Aplikasi JTA

Alur teknis autentikasi dan manajemen sesi setelah pembaruan sistem dijelaskan sebagai berikut:

  1. Registrasi Akun dan Pemisahan Klaim Perangkat (Device Claiming): Proses pendaftaran akun kini terpisah dari klaim perangkat. Pengguna terlebih dahulu melakukan registrasi akun menggunakan nama, email, dan kata sandi yang disimpan langsung di layanan autentikasi Supabase Auth. Setelah akun terdaftar dan pengguna masuk ke aplikasi, pengguna dapat menghubungkan perangkat IoT (ESP32) secara terpisah di halaman utama dengan memasukkan Claim Code unik. Backend REST API kemudian memetakan device_id ke user_id di database. Hal ini memastikan hanya pemilik sah yang memiliki otorisasi kontrol dan mencegah akses ilegal dari pengguna lain.

  2. Autentikasi Mandiri dan Cache Sesi Lokal: Pengguna melakukan login menggunakan email dan kata sandi yang diverifikasi secara aman oleh Supabase. Setelah autentikasi berhasil, token akses (JWT) dikelola secara otomatis oleh SDK Supabase Flutter. Bersamaan dengan itu, sistem mengambil informasi perangkat yang terikat (device_id) dari database backend via REST API dan menyimpannya ke penyimpanan lokal perangkat menggunakan SharedPreferences sebagai cache (cached_device_id). Saat aplikasi dibuka kembali, sistem memeriksa sesi aktif melalui Supabase dan memulihkan device_id dari cache secara instan (offline-safe) tanpa memicu delay request API berulang.

  3. Integrasi Identitas, REST API, dan Notifikasi (OneSignal): Setelah berhasil masuk, aplikasi tidak mengontrol perangkat secara langsung menggunakan protokol MQTT, melainkan melalui REST API (Dio) dengan menyertakan token autentikasi dan device_id. Sementara itu, protokol MQTT tetap digunakan oleh modul perangkat keras (ESP32) untuk mengirim data ke backend. Dari sisi notifikasi, User ID dari Supabase didaftarkan ke layanan OneSignal (OneSignal.login(user.id)). Integrasi ini menjamin notifikasi push (seperti peringatan suhu/kelembapan kritis dari kumbung) hanya dikirimkan ke perangkat mobile pengguna yang terikat secara sah dengan alat tersebut.

  4. Manajemen Navigasi Reaktif dan Terminasi Sesi (Logout): Navigasi antarhalaman tidak lagi menggunakan route guarding manual pada setiap transisi rute, melainkan dikendalikan secara reaktif menggunakan manajemen state Riverpod (AuthNotifier). Sistem akan otomatis mengarahkan rute halaman (Splash Screen, Landing Page, atau Dashboard Utama) berdasarkan status autentikasi aktif. Akhir dari siklus sesi terjadi saat pengguna menekan tombol Logout, di mana sistem secara berurutan akan:

    • Melakukan pemutusan sesi pada server Supabase (signOut).
    • Menghapus cache device_id dari penyimpanan lokal (SharedPreferences).
    • Melakukan logout/de-registrasi akun dari layanan OneSignal (OneSignal.logout()) guna memastikan tidak ada kebocoran notifikasi di masa mendatang.