Lewati ke konten

Autentikasi dan peran

Peran Cara masuk Boleh
Owner Email + password (backoffice) Semua urusan bisnisnya
Manajer Email + password (backoffice) dan PIN (POS) Kelola kasir, void, pengaturan, stok
Kasir PIN di POS Jual, bayar, buka/tutup shift
Operator/Reviewer Konsol tim dataset Hanya katalog bersama; tidak punya akses ke data bisnis

Owner dan manajer tenant tidak bisa memakai /v1/tenants dan /v1/internal/* (konsol dataset).

sequenceDiagram
  participant O as Owner (backoffice)
  participant A as API
  participant P as POS
  O->>A: POST /v1/owner/pairings (kind, label, outletId)
  A-->>O: token perangkat (tampil sekali)
  O->>P: tempel kode di layar "Hubungkan perangkat"
  P->>A: GET /v1/devices/me (Bearer token)
  A-->>P: tenant, outlet, kind
  P->>P: simpan sesi (SecureStore / localStorage)

Token perangkat dicabut dari backoffice → Perangkat → Putuskan. POS menghapus sesi bila server menjawab 401.

stateDiagram-v2
  [*] --> BelumLogin
  BelumLogin --> Login: pilih staf dan isi PIN
  Login --> Aktif: PIN benar (sesi 12 jam)
  Login --> BelumLogin: PIN salah
  Login --> Terkunci: 5 kali salah
  Terkunci --> BelumLogin: setelah 5 menit
  Aktif --> BelumLogin: keluar atau kedaluwarsa
  • GET /v1/staff/roster memberi daftar staf aktif untuk layar login.
  • POST /v1/staff/login mengembalikan staffToken; pos-core mengirimnya sebagai X-Staff-Token.
  • Bila roster kosong, POS berjalan tanpa login (mode tanpa staf) dan transaksi tidak mencatat kasir.
  • Pengaturan outlet Wajib login kasir membuat server menolak transaksi tanpa sesi staf (STAFF_REQUIRED).

Void dan penyesuaian stok butuh owner/manajer. Dari POS: Authorization = token perangkat ditambah X-Staff-Token milik manajer/owner. Dari backoffice: token sesi owner/manajer.