Gambaran Umum

Keamanan dan kemudahan akses merupakan prioritas tertinggi dalam operasional SaaS. Temuya POS tidak mengelola kata sandi pengguna secara langsung; sebaliknya, kami mempercayakan proses autentikasi kepada penyedia identitas kelas dunia melalui integrasi Google OAuth. Mekanisme ini diorkestrasikan oleh layanan eksternal tersentralisasi yang kami sebut sebagai Mocha Users Service.

Dengan mendelegasikan proses otentikasi, pengguna baru tidak perlu lagi menghabiskan waktu mengingat kata sandi yang rumit atau melewati proses registrasi panjang. Mereka cukup menekan tombol β€˜Login dengan Google’, dan dalam hitungan detik, sistem akan membuatkan atau mencocokkan profil mereka di database kami, lalu menerbitkan token sesi yang aman berupa cookie HTTP-only yang berlaku selama 60 hari.

Alur Kerja

Proses login melibatkan β€˜tarian’ (dance) OAuth standar dengan beberapa penyesuaian untuk menjaga keamanan di lingkungan multi-tenant.

sequenceDiagram
    participant User as Pengguna (Browser)
    participant React as Frontend React
    participant Worker as Hono Worker (API)
    participant Mocha as Mocha Users Service
    participant Google as Google OAuth API
    
    User->>React: Klik "Login via Google"
    React->>Worker: GET /api/auth/login-url
    Worker-->>React: Kembalikan URL Redirect Mocha
    React->>Mocha: Redirect browser ke Mocha
    Mocha->>Google: Redirect ke Halaman Login Google
    Google-->>Mocha: Callback dengan Authorization Code
    Mocha->>Mocha: Verifikasi Code & Ambil Data Profil (Email, Nama)
    Mocha-->>React: Redirect ke /AuthCallback dengan Session Token
    React->>Worker: POST /api/auth/verify-session (Kirim Token)
    Worker->>Worker: Validasi Token & Set HTTP-Only Cookie
    Worker-->>React: Konfirmasi Berhasil & Data User Awal
    React->>User: Menampilkan Dashboard Temuya

Alur ini dirancang sedemikian rupa sehingga token sensitif tidak dapat diakses langsung oleh skrip klien (berkat flag httpOnly pada cookie), melindunginya dari serangan Cross-Site Scripting (XSS).

Teknologi & Infrastruktur

Berikut adalah daftar titik akhir (endpoints) utama yang memfasilitasi keseluruhan siklus hidup autentikasi dan manajemen sesi:

Endpoint Hono WorkerMetode HTTPTujuan dan Deskripsi Fungsi
/api/auth/login-urlGETMenghasilkan URL dinamis untuk me-redirect pengguna ke portal login Mocha.
/api/auth/verifyPOSTEndpoint yang dipanggil oleh halaman AuthCallback. Menerima token sementara dari Mocha, menukarnya menjadi cookie sesi permanen untuk Temuya.
/api/auth/meGETMengembalikan data profil pengguna saat ini yang terikat dengan cookie sesi yang sedang aktif. Dipanggil saat aplikasi React dimuat (bootstrapping).
/api/auth/logoutPOSTMenghancurkan sesi aktif dengan menghapus atau mengatur ulang masa kedaluwarsa (expire) cookie sesi pada peramban.

Untuk middleware, kami mengimplementasikan authMiddleware yang menyusup pada setiap request ke endpoint terproteksi. Middleware ini bertugas membaca cookie temuya_session, memeriksa validitasnya terhadap KV storage atau database, dan melampirkan objek user ke konteks Hono (context context.set(β€˜user’, user)).

Keterkaitan dengan Fitur Lain

Sistem autentikasi ini merupakan prasyarat mutlak sebelum sistem multi-tenant dapat bekerja. Tanpa mengetahui dengan pasti SIAPA pengguna yang sedang membuat request (yang ditentukan oleh Google OAuth), sistem tidak akan bisa menentukan TOKO MANA saja yang boleh dia akses. Proses login yang sukses adalah titik awal berjalannya alur pemilihan tenant.

Hal Penting yang Perlu Diketahui

Terdapat beberapa skenario pinggir (edge cases) yang perlu dipahami secara mendalam. Pertama, apa yang terjadi bila cookie kedaluwarsa (expired) saat pengguna sedang berada di tengah transaksi? API akan mengembalikan status 401 Unauthorized. Aplikasi React telah diprogram dengan interseptor HTTP (HTTP interceptor) yang akan menangkap kode 401 ini, menyimpan status keranjang belanja sementara ke localStorage, dan mengarahkan pengguna secara elegan ke halaman login kembali. Setelah login berhasil, mereka akan diarahkan persis ke halaman terakhir sebelum mereka terputus.

Skenario Bisnis Lanjutan dan Kasus Penggunaan

Dalam skenario operasional ke-1, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-1 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-2, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-2 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-3, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-3 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-4, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-4 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-5, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-5 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-6, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-6 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-7, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-7 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-8, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-8 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-9, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-9 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-10, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-10 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-11, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-11 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-12, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-12 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-13, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-13 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-14, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-14 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.

Dalam skenario operasional ke-15, sistem dirancang untuk menangani berbagai macam kendala yang mungkin terjadi di lapangan. Misalnya, ketika seorang kasir menghadapi antrean yang sangat panjang di jam sibuk, setiap detik sangatlah berharga. Sistem Temuya POS memastikan bahwa waktu respons aplikasi tetap berada di bawah standar industri, memberikan pengalaman yang mulus dan meminimalisir kesalahan input data.

Bagi pemilik bisnis, informasi dari transaksi ke-15 ini akan langsung dikumpulkan dan diakumulasi pada dashboard laporan akhir hari. Keputusan strategis seperti penambahan stok barang, rotasi karyawan, hingga merencanakan promosi baru sangat bergantung pada kelengkapan dan kecepatan data yang disajikan oleh arsitektur sistem ini.