Ajuste usuarios - Inicio agenda
This commit is contained in:
@@ -25,19 +25,38 @@ const { layoutState } = useLayout()
|
||||
const tenantStore = useTenantStore()
|
||||
const entitlementsStore = useEntitlementsStore()
|
||||
|
||||
const tenantId = computed(() => tenantStore.activeTenantId || null)
|
||||
|
||||
/**
|
||||
* ✅ Role canônico pro MENU:
|
||||
* - Prioriza o role do tenant (mesma fonte usada pelo router guard)
|
||||
* - Faz fallback pro sessionRole (ex.: telas fora de tenant)
|
||||
* - PRIORIDADE 1: contexto de rota (evita menu errado quando role do tenant atrasa/falha)
|
||||
* Ex.: /therapist/* => força menu therapist; /admin* => força menu admin
|
||||
* - PRIORIDADE 2: se há tenant ativo: usa role do tenant
|
||||
* - PRIORIDADE 3: fallback pro sessionRole (ex.: telas fora de tenant)
|
||||
*
|
||||
* Motivo: o bug que você descreveu (terapeuta vendo admin.menu) geralmente é:
|
||||
* - tenant role ainda não carregou OU tenantId está null
|
||||
* - sessionRole vem como 'admin'
|
||||
* Então, rota > tenant > session elimina o menu “trocar sozinho”.
|
||||
*/
|
||||
const navRole = computed(() => {
|
||||
return tenantStore.activeRole || sessionRole.value || null
|
||||
const p = String(route.path || '')
|
||||
|
||||
// ✅ blindagem por contexto
|
||||
if (p.startsWith('/therapist')) return 'therapist'
|
||||
if (p.startsWith('/admin') || p.startsWith('/clinic')) return 'clinic_admin'
|
||||
if (p.startsWith('/patient')) return 'patient'
|
||||
|
||||
// ✅ dentro de tenant: confia no role do tenant
|
||||
if (tenantId.value) return tenantStore.activeRole || null
|
||||
|
||||
// ✅ fora de tenant: fallback pro sessionRole
|
||||
return sessionRole.value || null
|
||||
})
|
||||
|
||||
const model = computed(() => {
|
||||
// ✅ fonte correta: tenant role (clinic_admin/therapist/patient)
|
||||
// fallback: profiles.role (admin/therapist/patient)
|
||||
const effectiveRole = tenantStore.activeRole || sessionRole.value
|
||||
// ✅ role efetivo do menu já vem “canônico” do navRole
|
||||
const effectiveRole = navRole.value
|
||||
|
||||
const base = getMenuByRole(effectiveRole, { isSaasAdmin: sessionIsSaasAdmin.value }) || []
|
||||
|
||||
@@ -52,8 +71,6 @@ const model = computed(() => {
|
||||
return [...base].sort((a, b) => priorityOrder(a) - priorityOrder(b))
|
||||
})
|
||||
|
||||
const tenantId = computed(() => tenantStore.activeTenantId || null)
|
||||
|
||||
// quando troca tenant -> recarrega entitlements
|
||||
watch(
|
||||
tenantId,
|
||||
@@ -64,7 +81,7 @@ watch(
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
// ✅ quando troca role efetivo do menu (tenant role / session role) -> recarrega entitlements do tenant atual
|
||||
// ✅ quando troca role efetivo do menu (via rota/tenant/session) -> recarrega entitlements do tenant atual
|
||||
watch(
|
||||
() => navRole.value,
|
||||
async () => {
|
||||
|
||||
Reference in New Issue
Block a user