refactor(portal): partner-mode customer switcher on real tenants

Migrate the partner-mode customer switcher, in-customer banner, sidebar tile and the team invite/teammate panels off the data/customers fixture onto the real /api/partner/tenants list (shared key, gated to partner-staff so the global shell doesn't 403 for other users). Active customer resolves by tenant _id (the key the customers page already passes to partnerMode.enter); partner-identity labels now use the real partner name from useMe. Removes the now-unused customers + CustomerOrg-list fixture export and the dead setCustomer helper. Verified in UI: switcher + enter/exit show real Baslund Test / Baslund Research ApS.
This commit is contained in:
Ronni Baslund
2026-05-30 14:51:14 +02:00
parent 60e0b2286c
commit 7720e4be83
7 changed files with 67 additions and 63 deletions
+12 -3
View File
@@ -3,13 +3,22 @@
// specific customer org. Distinct color (indigo — partner mode is normal
// operating mode, not danger). Persistent until partner exits.
import { customers } from '~/data/customers'
import type { PartnerTenantDoc } from '~/types/partner'
const partnerMode = usePartnerMode()
const router = useRouter()
const { partner, isPartnerStaff } = useMe()
// Real tenant list (shared key; gated to partner-staff so the layout-level
// banner doesn't 403 the partner endpoint for other users).
const { data: tenants } = useFetch<PartnerTenantDoc[]>('/api/partner/tenants', {
key: 'partner-tenants',
default: () => [],
immediate: isPartnerStaff.value,
})
const activeCustomer = computed(() =>
customers.find((c) => c.id === partnerMode.activeCustomerId.value) || null,
(tenants.value ?? []).find((c) => c._id === partnerMode.activeCustomerId.value) || null,
)
onMounted(() => partnerMode.hydrate())
@@ -25,7 +34,7 @@ function exit() {
<span class="dot" />
<div class="meta">
<Mono>Partner view</Mono>
<span class="text">managing <strong>{{ activeCustomer.name }}</strong> · actions are attributed to NordicMSP in the customer's audit log</span>
<span class="text">managing <strong>{{ activeCustomer.name }}</strong> · actions are attributed to {{ partner?.name ?? 'your partner org' }} in the customer's audit log</span>
</div>
<button class="exit" @click="exit">
<UiIcon name="logout" :size="12" />