Files
Deep-Package-Inspection/docs/log/2026-07-28-1821-n.md
T

57 lines
3.1 KiB
Markdown

# Iteration Log — 2026-07-28 18:21 — Bug Fix (Ad-hoc)
## Permintaan
User melaporkan 2 bug di halaman `/user-accounts`:
1. **Gambar 2**: Akun `company_admin` tidak bisa melihat agent/perusahaannya sendiri (tampil "No Company Accounts")
2. **Gambar 3**: Form "Create External Account" menampilkan role teknikal/operasional internal (Executive, Tenant Admin, SOC Analyst, Engineer) alih-alih role user/pengguna perusahaan
---
## Bug 1 — COMPANY_ADMIN Tidak Bisa Melihat Company Card Sendiri
### Root Cause
- `backend/routes/auth/users.js` baris 34: `query.username = { $ne: req.adminUser.username }` (self-exclude) berlaku untuk **semua** role termasuk `COMPANY_ADMIN`
- Saat `COMPANY_ADMIN` login dan tidak ada user lain di perusahaannya → hasil query kosong
- `page.tsx` baris 64-79: `companiesMap` dibentuk dari hasil query backend → kosong → `companies = []` → tampil "No Company Accounts"
### Fix
- **`backend/routes/auth/users.js`**: Untuk `COMPANY_ADMIN`, query di-return lebih awal tanpa `$ne` (self-exclude). COMPANY_ADMIN kini bisa melihat dirinya sendiri dalam daftar company users.
- **`src/app/(dashboard)/user-accounts/page.tsx`**: Tambah state `currentUsername` dari `/api/auth/me`, diteruskan ke `getColumns`
- **`src/app/(dashboard)/user-accounts/columns.tsx`**: Tambah prop `currentUsername`. Baris milik diri sendiri ditampilkan sebagai "👤 (You)" dan tombol Edit di-disabled → proteksi self-edit dari tabel
### Outcome
COMPANY_ADMIN kini melihat company card-nya sendiri muncul dengan data agennya.
Self-edit dilindungi di level UI (tombol disabled + label "(You)").
---
## Bug 2 — Dropdown Role Menampilkan Role Teknikal Internal
### Root Cause
- `src/components/admin/RoleSelect.tsx`: `SUPER_ADMIN_ROLES` berisi `EXECUTIVE`, `TENANT_ADMIN`, `SOC_ANALYST`, `ENGINEER`, `COMPANY_ADMIN`
- Role-role teknikal ini tidak relevan untuk user/pengguna perusahaan yang dibuat melalui "Create External Account"
### Fix
- **`RoleSelect.tsx`**: `SUPER_ADMIN_ROLES` diubah menjadi **Company Admin**, **Company Operator**, **Company Viewer** saja
- **`backend/routes/auth/users.js`**: `validRoles` untuk `SUPER_ADMIN` ditambahkan `COMPANY_OPERATOR` dan `COMPANY_VIEWER` agar backend menerima role baru dari dropdown
### Outcome
Dropdown sekarang hanya menampilkan role yang relevan untuk user perusahaan/klien.
Backend menerima semua role yang mungkin dipilih.
---
## Langkah-langkah
1. Analisis screenshot dari user
2. Baca `users.js`, `page.tsx`, `columns.tsx`, `RoleSelect.tsx`, `useExternalAccountForm.ts`
3. Identifikasi root cause kedua bug
4. Fix backend `users.js` (COMPANY_ADMIN self-visibility + validRoles)
5. Fix frontend `page.tsx` (tambah currentUsername state)
6. Fix frontend `columns.tsx` (tambah prop currentUsername, self-edit protection)
7. Fix frontend `RoleSelect.tsx` (ubah SUPER_ADMIN_ROLES)
8. Build verification: 25/25 halaman berhasil, tidak ada error
## Pertimbangan untuk Next Time
- Jika ke depan perlu membuat akun internal BackOne (Executive, Tenant Admin, dll), perlu form/endpoint terpisah
- Self-edit untuk COMPANY_ADMIN sebaiknya diarahkan ke halaman profil, bukan user-accounts table