# Login: Enter tidak jalan / tidak redirect ke dashboard

## Penyebab umum (FE, bukan BE)

1. **Tombol Enter di password** — Tanpa elemen `<form>` dan tombol `type="submit"`, banyak browser **tidak** memanggil handler login saat Enter. Perbaikan: form dengan `@submit.prevent="handleAuth"`.
2. **Redirect setelah sukses** — Setelah `setAuth(true)`, kadang perlu **`await nextTick()`** sebelum `navigateTo("/")` agar cookie / state terbaca middleware.
3. **Cookie sesi** — Flag `workpulse-auth` memakai **`maxAge`** agar tidak hilang saat navigasi (middleware membaca cookie ini).
4. **Buka situs lewat `http://` (Not secure)** — `POST /workpulse-api/...` bisa lewat redirect **301** ke HTTPS tanpa body → API balas validasi **EOF** / login gagal. Pakai **`https://`**, atau terapkan redirect **308** di Apache (`deploy/apache/work.rycroftapparel.com.conf`) + plugin `plugins/00-enforce-https.client.ts`.
5. **Hydration mismatch di `/login`** — `<transition mode="out-in">` di sekitar field form bisa bikin HTML SSR ≠ klien → konsol “Hydration completed but contains mismatches” dan tombol tidak jalan; di `pages/login.vue` bagian itu dihilangkan.

Tidak perlu mengubah **kode BE** untuk kasus di atas.

## Jika masih gagal

- [`FE_SYNC_BE_AUTH_TIMEOUT.md`](FE_SYNC_BE_AUTH_TIMEOUT.md) — **504** + `error.code: "timeout"` dari BE vs pesan timeout di FE.
- Tab **Network**: pastikan `POST .../workpulse-api/api/v1/auth/login` → **200** dan body `ok: true`. Jika request **pending** lama → BE/proxy (lihat [`BE_OPS_LOGIN_API_HANG.md`](BE_OPS_LOGIN_API_HANG.md)); setelah deploy FE terbaru, klien memutus setelah **±22 detik** dan menampilkan pesan timeout.
- **401**: email/password atau user tidak ada di DB `workpulse` — lihat [`BE_OPS_LOGIN_DAN_PROXY.md`](BE_OPS_LOGIN_DAN_PROXY.md).
