Alur Login
Cek metode login yang aktif
Code
Mengembalikan apakah email/password, Google, dan pendaftaran aktif, serta site key Cloudflare
Turnstile jika captcha diaktifkan (kirim hasilnya sebagai turnstile_token).
Register
Code
- Jika verifikasi email aktif →
{ "verification_required": true, "email": "..." }. User menerima email berisi kode 6 digit dan link. - Jika tidak → langsung
{ "token": "<jwt>" }.
Verifikasi email
Code
Respons { "verified": true, "token": "<jwt>" } (user langsung masuk). Untuk akun dengan 2FA,
token tidak ada: lanjutkan dengan login biasa. Kirim ulang email: POST /api/auth/resend-verification.
Login
Code
Ada tiga kemungkinan respons:
| Respons | Langkah berikutnya |
|---|---|
{ "token": "..." } | Selesai. Pakai sebagai Authorization: Bearer. |
{ "verification_required": true } | Email belum diverifikasi. |
{ "mfa": { "token": "...", "setup": false } } | Minta kode authenticator, kirim ke /api/auth/mfa/verify. |
{ "mfa": { "token": "...", "setup": true } } | Admin yang belum punya 2FA: panggil /api/auth/mfa/setup dulu untuk QR code. |
Code
code boleh kode 6 digit atau salah satu recovery code. Respons { "token": "..." }; saat enrolment
pertama juga berisi recovery_codes yang harus ditampilkan ke user sekali.
Google sign-in
Arahkan browser ke GET /api/auth/google/start. Setelah login di Google, SumoRouter me-redirect ke
{PUBLIC_URL}/auth/callback dengan hasil di fragment URL:
#token=<jwt>: berhasil.#mfa=<mfa_token>&setup=<true|false>: lanjutkan ke langkah 2FA di atas./login?error=<kode>: gagal.
Karena redirect selalu ke PUBLIC_URL instance, Google sign-in di frontend dengan domain lain
butuh halaman /auth/callback di domain tersebut (self-host dengan PUBLIC_URL milikmu).
Lupa password
Code
Reset password tidak otomatis login dan mengakhiri semua sesi lama.