# Login gagal: browser memanggil `localhost:8000` atau `/api/login`

## Diagnosis cepat

**WorkPulse FE (Nuxt di repo ini)** saat login memanggil:

```http
POST /workpulse-api/api/v1/auth/login
```

(path relatif ke domain halaman, mis. `https://work.rycroftapparel.com/workpulse-api/api/v1/auth/login`)

atau, jika Anda set `NUXT_PUBLIC_WORKPULSE_API_BASE` ke URL penuh:

```http
POST https://apiwork.rycroftapparel.com/api/v1/auth/login
```

**Bukan** endpoint berikut:

- `http://localhost:8000/api/login`
- `http://127.0.0.1:.../api/login` (path `/api/login` tanpa `/v1`)

Jika di tab **Network** atau **Console** Anda masih melihat **`localhost:8000`** atau **`/api/login`**, artinya **bukan bundle WorkPulse Nuxt yang sedang jalan** — biasanya salah satu dari:

1. **Situs memuat aplikasi lain** (folder deploy / vhost Apache salah, DocumentRoot ke proyek lain).
2. **JavaScript lama / cache** (Service Worker, cache browser, CDN) yang masih memakai konfigurasi dev lama.
3. **PM2 menjalankan entrypoint atau `cwd` salah** (bukan `FE/.output/server/index.mjs` dari build terbaru).

**Backend WorkPulse (Gin)** tidak perlu diubah untuk kasus ini: request tidak sampai ke API yang benar.

---

## Verifikasi dari server (sebelum buka browser)

Pastikan HTML login yang disajikan Apache mengandung aset Nuxt / path proxy:

```bash
curl -sS "https://work.rycroftapparel.com/login" | head -n 80
```

Cari string seperti `_nuxt/` atau `workpulse` / `workpulse-api`.  
Jika isinya HTML proyek lain atau tidak ada jejak Nuxt, perbaiki **vhost / ProxyPass** (harus ke Nitro `127.0.0.1:3020`, lihat `deploy/apache/work.rycroftapparel.com-ssl.conf`).

Pastikan proses FE benar:

```bash
pm2 describe workpulse-fe | grep -E "cwd|script"
# cwd harus folder FE; script: .../.output/server/index.mjs
```

Setelah pull / ubah `.env`:

```bash
cd /var/www/html/wp-system/FE
npm run build
pm2 restart workpulse-fe --update-env
```

---

## Verifikasi dari browser

1. Buka **DevTools → Network**.
2. Centang **Disable cache**.
3. Hard refresh (Ctrl+F5), klik **Sign In**.
4. Cari request **login**: URL harus mengandung **`/workpulse-api/api/v1/auth/login`** atau host API resmi Anda — **bukan** `localhost:8000`.

Opsional: **Application → Clear site data** untuk domain `work.rycroftapparel.com`, lalu coba lagi.

---

## Superadmin & BE

Setelah URL login benar, jika masih **401**:

- Pastikan user seed ada di DB **`workpulse`** (PostgreSQL), email **`fikri@softcomp.io`**, password seed (mis. **`Bestari24!`** sesuai migrasi).
- Pastikan **`workpulse-api`** (PM2) jalan dan `curl` ke `127.0.0.1:3040` mengembalikan JSON (bukan connection refused).

Detail checklist: [`BE_OPS_LOGIN_DAN_PROXY.md`](BE_OPS_LOGIN_DAN_PROXY.md).

---

## Ringkas

| Yang terlihat di browser        | Arti                                      |
|---------------------------------|-------------------------------------------|
| `POST .../workpulse-api/.../auth/login` | FE WorkPulse benar (lanjut cek 401/DB)  |
| `POST http://localhost:8000/api/login`  | **Salah app / cache / deploy** — bukan path BE WorkPulse |

**Perbaikan di repo FE:** `ecosystem.config.cjs` untuk PM2 kini memaksa `NUXT_PUBLIC_WORKPULSE_API_BASE=/workpulse-api` dan `WORKPULSE_INTERNAL_API_ORIGIN=http://127.0.0.1:3040`. Setelah `pm2 delete workpulse-fe && pm2 start ...` atau `restart --update-env`, nilai ini tidak lagi “ikut” env shell yang salah. Di klien, `normalizeWorkpulseApiBase` mengganti basis API yang mengandung `localhost` menjadi `/workpulse-api` saat hostname bukan localhost.
