7720e4be83
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.
38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
// Partner admin's "acting as a customer admin" state. When a partner clicks
|
|
// into a customer org, the sidebar reshapes to that customer's admin nav and
|
|
// a persistent banner indicates the partner context.
|
|
//
|
|
// In real use, every action while in this mode is logged with the partner's
|
|
// identity (not the customer's) — the design spec is explicit about this for
|
|
// trust. We hold the active customer's tenant _id (the same key the customers
|
|
// page passes to enter()); consumers resolve it against the real tenant list.
|
|
|
|
const activeCustomerId = ref<string | null>(null)
|
|
|
|
export const usePartnerMode = () => {
|
|
function enter(customerId: string) {
|
|
activeCustomerId.value = customerId
|
|
if (import.meta.client) {
|
|
sessionStorage.setItem('dezky-partner-active-customer', customerId)
|
|
}
|
|
}
|
|
function exit() {
|
|
activeCustomerId.value = null
|
|
if (import.meta.client) {
|
|
sessionStorage.removeItem('dezky-partner-active-customer')
|
|
}
|
|
}
|
|
function hydrate() {
|
|
if (!import.meta.client || activeCustomerId.value) return
|
|
const stored = sessionStorage.getItem('dezky-partner-active-customer')
|
|
if (stored) activeCustomerId.value = stored
|
|
}
|
|
return {
|
|
activeCustomerId,
|
|
isActive: computed(() => activeCustomerId.value !== null),
|
|
enter,
|
|
exit,
|
|
hydrate,
|
|
}
|
|
}
|