D
Engineering

Authentication & Token

Mekanisme token user dan token preview Toko Digital, termasuk middleware validasi custom dan batas keamanan aktual.

Toko Digital memiliki dua mekanisme token yang berbeda. Keduanya tidak boleh dipertukarkan.

Token user

POST /api/login memvalidasi email dan password dari model User, lalu membuat random token sepanjang 60 karakter. Token disimpan pada user_token dan waktu kedaluwarsa disimpan pada token_expired_at selama 60 detik.

Response sukses berbentuk:

json
{
  "status": "success",
  "message": "User berhasil login",
  "data": {
    "email": "user@example.test",
    "token": "<redacted-token>"
  }
}

Model User menggunakan MongoDB, UUID string, soft delete, dan trait Sanctum. Namun flow login yang terlihat menggunakan field token custom, bukan token Sanctum hasil createToken.

Middleware validate.token

Middleware ValidateToken membaca header Authorization secara langsung dan mencocokkannya dengan user_token. Middleware kemudian membandingkan token_expired_at dengan waktu saat ini.

text
Authorization: <custom-token>

Source tidak menunjukkan parsing eksplisit format Bearer <token>. Consumer harus mengikuti format yang dipakai frontend atau route aktual, bukan mengasumsikan perilaku Sanctum standar.

Token preview

Preview menggunakan model PreviewDigitalStore. Token dicari dengan kombinasi token dan expires_at > now(). Setiap akses valid memperbarui last_accessed_at.

Token dikirim sebagai query parameter:

text
<preview-url>?token=<preview-token>

Token wajib tersedia pada halaman preview, detail produk preview, daftar produk preview, dan flow checkout preview.

Endpoint validasi

POST /api/check-validate-token memeriksa token preview. Response valid pada implementasi saat ini masih dikembalikan dengan HTTP 401, sehingga consumer harus berhati-hati dan tidak hanya mengandalkan status HTTP.