Autentikasi
mycheck menggunakan username dan PIN untuk masuk. Identitas dan status akun
dibaca dari sheet Users pada spreadsheet Registry.
Sesi
Setelah kredensial valid, server menerbitkan cookie mycheck_session yang
ditandatangani dengan HMAC-SHA256. Cookie berlaku selama tujuh hari,
HttpOnly, SameSite=Strict, dan hanya memakai flag Secure pada production.
Token yang kedaluwarsa atau tanda tangannya tidak valid ditolak.
Endpoint terkait:
| Endpoint | Tujuan |
|---|---|
POST /api/auth/login | Memeriksa username dan PIN, lalu membuat sesi. |
GET /api/auth/me | Mengembalikan informasi sesi saat ini. |
POST /api/auth/bootstrap-setup | Menyelesaikan setup pertama akun admin default. |
POST /api/auth/logout | Mengakhiri sesi browser saat ini. |
POST /api/auth/logout-all | Menghapus cookie browser pemanggil; tidak mencabut token sesi di perangkat lain. |
Peran dan cabang
Peran aplikasi adalah admin dan petugas. Server harus memeriksa sesi,
peran, dan akses cabang di setiap endpoint terlindungi; menyembunyikan menu di
antarmuka bukan pengganti otorisasi API.
PIN saat ini disimpan dan dibandingkan sebagai teks biasa pada sheet Users.
Ini merupakan risiko keamanan, bukan pola yang disarankan. Jangan menulis PIN
ke log, audit, dokumentasi, tiket, atau tangkapan layar. Batasi akses edit
spreadsheet Registry dan gunakan kredensial service account hanya di server.
Token sesi bersifat stateless dan berlaku tujuh hari. Logout menghapus cookie browser saat ini; aplikasi tidak memiliki pencabutan individual untuk token yang telah terbit di perangkat lain.
Setup akun admin pertama
Registry dapat berisi satu akun admin default dengan flag Must_Change_Pin.
Saat pertama kali login, aplikasi mengarahkan admin ke setup akun untuk
menulis ulang username, nama, dan PIN pada row yang sama. Ini bukan membuat
akun admin kedua. Setelah setup selesai, flag tersebut dimatikan.
PIN yang dipakai aplikasi harus terdiri dari enam digit. Pengelolaan akun lain, perubahan role, cabang akses, reset PIN, dan force logout dilakukan dari menu admin Akun.
Jika tidak dapat masuk
Pastikan username/PIN benar, akun aktif, dan Users dapat dibaca oleh service
account. Pesan akun nonaktif perlu ditangani oleh admin. Lihat
Pemecahan Masalah untuk pemeriksaan koneksi dan
konfigurasi.