HandyCafe Docs
owner

Peran & Izin Kasir

HandyCafe menggunakan kontrol akses berbasis peran (RBAC) untuk mengelola apa yang dapat dilihat dan dilakukan setiap anggota staf dalam sistem. Setiap kasir ditetapkan sebuah peran dan peran tersebut menentukan izin persis mereka di seluruh aplikasi.


Tipe Peran

HandyCafe menyediakan tiga tipe peran:

Admin

Peran Admin memberikan akses tanpa batas ke setiap fitur dalam sistem. Admin dapat mengelola kasir, melihat semua laporan, mengubah pengaturan, dan melakukan operasi apa pun. Peran ini ditujukan untuk pemilik kafe dan manajer senior yang membutuhkan kendali penuh.

Selalu ada minimal satu akun Admin dalam sistem. Peran Admin tidak dapat dihapus atau dikurangi izinnya.

Default

Peran Default tidak memiliki izin khusus yang ditetapkan. Kasir dengan peran Default dapat masuk dan melakukan operasi dasar tetapi tidak dapat mengakses area terbatas seperti manajemen anggota, pelaporan, atau konfigurasi konsol. Gunakan ini sebagai titik awal untuk karyawan baru yang hanya perlu menangani tugas dasar.

Kustom

Peran kustom memungkinkan Anda mendefinisikan persis izin apa yang dimiliki kasir. Anda memilih nama, mengatur level, dan kemudian mencentang atau menghilangkan centang tanda izin individual di enam kategori. Ini memberi Anda kendali terperinci atas apa yang dapat diakses setiap anggota staf.


Kategori Izin

HandyCafe memiliki 22 tanda izin individual yang diatur ke dalam 6 kategori. Setiap tanda mengontrol aksi atau tampilan tertentu dalam sistem.

1. Autentikasi (1 tanda)

Tanda Deskripsi
CLIENT_LOGIN Mengizinkan kasir untuk masuk ke PC klien (memulai sesi atas nama pelanggan)

Tanpa izin ini, kasir tidak dapat memulai atau mengelola sesi klien.

2. Anggota (6 tanda)

Tanda Deskripsi
VIEW Melihat daftar anggota dan detail anggota
ADD Membuat akun anggota baru
DELETE Menghapus akun anggota dari sistem
UPDATE Mengedit informasi anggota yang ada (nama, saldo, dll.)
DISPLAY_EMAIL Melihat alamat email anggota di daftar anggota
DISPLAY_GSM Melihat nomor telepon anggota di daftar anggota

Kasir yang hanya memiliki VIEW dapat menelusuri daftar anggota tetapi tidak dapat membuat, mengedit, atau menghapus anggota. Tanda DISPLAY_EMAIL dan DISPLAY_GSM mengontrol apakah informasi kontak sensitif terlihat. Ini berguna untuk kepatuhan privasi di mana tidak semua staf harus melihat data pribadi.

3. Konsol (4 tanda)

Tanda Deskripsi
VIEW Melihat halaman konsol dan kartu status konsol
ADD Mendaftarkan konsol gaming baru di sistem
DELETE Menghapus konsol dari sistem
UPDATE Mengedit detail konsol (nama, alamat MAC, harga)

4. Log (4 tanda)

Tanda Deskripsi
VIEW Mengakses halaman log
DISPLAY_FULL Melihat riwayat log lengkap (semua tanggal)
DISPLAY_TODAY Melihat hanya entri log hari ini
DELETE Menghapus entri log

Jika kasir memiliki VIEW dan DISPLAY_TODAY tetapi tidak DISPLAY_FULL, mereka hanya dapat melihat entri log dari hari ini. Ini berguna untuk supervisor shift yang perlu memantau aktivitas saat ini tanpa mengakses catatan historis.

5. Laporan (3 tanda)

Tanda Deskripsi
PAGE_VIEW Mengakses halaman laporan/laporan kas
DISPLAY_FULL Melihat riwayat laporan lengkap (semua tanggal)
DISPLAY_TODAY Melihat hanya data laporan hari ini

Mirip dengan log, izin laporan memungkinkan Anda mengontrol apakah staf dapat melihat riwayat keuangan lengkap atau hanya angka hari ini. Kasir dengan PAGE_VIEW dan DISPLAY_TODAY dapat meninjau transaksi shift mereka sendiri tetapi tidak dapat mengakses data pendapatan historis.

6. Metode Pembayaran (4 tanda)

Tanda Deskripsi
MANAGE Mengakses area manajemen metode pembayaran
ADD Membuat metode pembayaran baru (tunai, kartu, pembayaran mobile, dll.)
DELETE Menghapus metode pembayaran dari sistem
UPDATE Mengedit detail metode pembayaran yang ada

Ringkasan

Kategori Tanda Total
Autentikasi CLIENT_LOGIN 1
Anggota VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM 6
Konsol VIEW, ADD, DELETE, UPDATE 4
Log VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE 4
Laporan PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY 3
Metode Pembayaran MANAGE, ADD, DELETE, UPDATE 4
Total 22

Cara Kerja Izin

Setiap kategori izin memiliki sekumpulan tanda izin individual. Setiap tanda dapat diaktifkan atau dinonaktifkan secara independen menggunakan kotak centang di editor peran.

UI menyediakan kotak centang untuk setiap izin. Cukup centang atau hilangkan centang izin yang ingin Anda berikan atau cabut. Sistem menangani penyimpanan yang mendasarinya secara otomatis -- Anda tidak perlu menghitung nilai apa pun secara manual.

Misalnya, dalam kategori Anggota, Anda dapat secara independen mengaktifkan atau menonaktifkan: VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, dan DISPLAY_GSM. Kasir yang hanya mencentang VIEW dan UPDATE dapat melihat dan mengedit anggota, tetapi tidak dapat menambah atau menghapus mereka.


Membuat Akun Kasir

  1. Navigasikan ke Manajemen > Kasir di aplikasi server.
  2. Klik tombol Tambah Kasir.
  3. Masukkan nama pengguna kasir. Ini yang akan mereka gunakan untuk masuk.
  4. Atur kata sandi. Pilih kata sandi yang kuat. Akun ini mungkin memiliki akses ke data keuangan dan informasi pelanggan.
  5. Pilih peran dari dropdown. Anda dapat memilih Admin, Default, atau peran kustom apa pun yang telah Anda buat.
  6. Klik Simpan untuk membuat akun.

Kasir baru sekarang dapat masuk ke server HandyCafe menggunakan kredensial mereka.


Membuat Peran Kustom

  1. Navigasikan ke Manajemen > Peran Kasir di aplikasi server.
  2. Klik tombol Tambah Peran.
  3. Masukkan nama peran (misalnya, "Supervisor Shift", "Kasir Junior", "Staf Malam").
  4. Atur level peran. Level yang lebih tinggi menunjukkan otoritas lebih besar. Ini digunakan untuk pengurutan tampilan dan hierarki organisasi.
  5. Centang atau hilangkan centang izin individual di semua enam kategori. Setiap kotak centang sesuai dengan satu dari 22 pengaturan izin.
  6. Klik Simpan untuk membuat peran.

Setelah dibuat, Anda dapat menetapkan peran ini ke akun kasir mana pun.


Penegakan di Backend

Izin ditegakkan di sisi server, bukan hanya disembunyikan di UI. Bahkan jika seseorang melewati antarmuka klien atau memanipulasi kode frontend, server memvalidasi setiap permintaan terhadap izin peran kasir sebelum menjalankannya.

Ini berarti:

  • Kasir tanpa MEMBER_DELETE tidak dapat menghapus anggota, bahkan dengan mengirim permintaan API langsung.
  • Kasir tanpa REPORT_DISPLAY_FULL tidak dapat mengambil data laporan historis, terlepas dari cara mereka mengakses sistem.
  • Semua pemeriksaan izin terjadi di backend Rust sebelum operasi database apa pun dilakukan.

Keamanan: Pembatasan Laju

Untuk melindungi dari serangan brute-force, HandyCafe menerapkan pembatasan laju login:

  • 5 upaya login gagal dalam jendela 10 menit memicu penguncian otomatis.
  • Penguncian berlangsung 15 menit, selama waktu tersebut tidak ada upaya login yang diterima untuk akun tersebut.
  • Setelah periode penguncian berakhir, kasir dapat mencoba lagi.

Ini berlaku untuk layar login server dan login kasir di PC klien.


Manajemen Shift

Aktivitas setiap kasir dilacak secara individual sepanjang shift mereka:

  • Semua transaksi (pembayaran sesi, pembayaran pesanan, dll.) dicatat dengan identitas kasir.
  • Mesin kasir melacak saldo pembukaan dan penutupan untuk setiap shift kasir secara terpisah.
  • Laporan shift dapat dibuat per kasir, menunjukkan persis berapa banyak pendapatan yang mereka proses selama shift mereka.
  • Saat kasir keluar, shift mereka ditutup dan ringkasan tersedia untuk ditinjau.

Pelacakan per kasir ini memastikan akuntabilitas dan memudahkan identifikasi perbedaan di akhir setiap shift.


Contoh Izin

Skenario 1: Kasir Dasar Karyawan baru yang hanya perlu memulai/menghentikan sesi dan menerima pembayaran. Tetapkan mereka peran kustom dengan hanya CLIENT_LOGIN yang diaktifkan. Mereka tidak dapat melihat anggota, laporan, log, atau konsol.

Skenario 2: Supervisor Shift Karyawan terpercaya yang mengawasi lantai. Tetapkan mereka peran dengan CLIENT_LOGIN, MEMBER_VIEW, MEMBER_UPDATE, CONSOLE_VIEW, REPORT_PAGE_VIEW, dan REPORT_DISPLAY_TODAY. Mereka dapat mengelola sesi, melihat (tetapi tidak menghapus) anggota, melihat konsol, dan memeriksa pendapatan hari ini tetapi tidak dapat mengakses laporan historis lengkap atau mengubah metode pembayaran.

Skenario 3: Manajer Malam Manajer yang menangani shift malam secara mandiri. Berikan mereka sebagian besar izin kecuali MEMBER_DELETE, LOG_DELETE, dan PAYMENT_METHOD_DELETE. Mereka dapat mengelola segalanya selama shift mereka tetapi tidak dapat menghapus data penting secara permanen.

Skenario 4: Staf dengan Batasan Privasi Kasir yang tidak boleh melihat detail kontak pelanggan. Buat peran dengan MEMBER_VIEW diaktifkan tetapi DISPLAY_EMAIL dan DISPLAY_GSM dinonaktifkan. Mereka dapat mencari anggota berdasarkan nama tetapi informasi kontak pribadi disembunyikan.