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

3.1 KiB

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