Skip to main content
Autentikasi memakai Better Auth dengan email/password. Session disimpan di Postgres; di production cookie secure + CSRF protection.

Stack auth

Kode: apps/api/src/auth/better-auth.ts, auth.middleware.ts, roles.ts

Peran

Middleware requireRole(['admin']) atau requireRole(['peserta']) dipasang per route. Frontend: AdminRoute vs UserRoute di apps/web/src/routes/.

Flow login biasa

Auto-login setelah pembayaran

Saat peserta bayar lewat Scalev, mereka belum punya session. Flow claim membuat session otomatis: Field terkait: payment_sessions.sign_in_token, sign_in_token_expiry. Kalau token gagal/expired, UI fallback ke login manual (requiresLogin: true).

Registrasi publik

POST /api/payment/register (dari /register/:batchSlug/:tierSlug):
  1. Validasi batch open + tier aktif
  2. Provision user Better Auth (email + password)
  3. Buat peserta + enrollment pending
  4. Buat payment_session + order Scalev

Bearer token

Plugin bearer() aktif — API menerima Authorization: Bearer <token> untuk client non-browser.
Token tidak dibaca dari query string (dihapus untuk keamanan — hindari kebocoran via log/referrer).

Email terkait auth

Env

Halaman terkait