delete
This commit is contained in:
parent
959c63b8a5
commit
c13fe20bbb
|
|
@ -1,18 +0,0 @@
|
||||||
# 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.
|
|
||||||
Loading…
Reference in New Issue