carousel, agenda arquivados, agenda cor, agenda arquivados, grupos pacientes, pacientes arquivados - desativados, sessoes verificadas, ajuste notificações, Prontuario, Agenda Animation, Menu Profile, bagdes Profile, Offline

This commit is contained in:
Leonardo
2026-03-18 09:26:09 -03:00
parent 66f67cd40f
commit d6d2fe29d1
55 changed files with 3655 additions and 1512 deletions
+5 -5
View File
@@ -6,12 +6,12 @@
* - Entitlements (plano): usuário poderia acessar se tivesse feature → manda pro /upgrade
*
* Por que isso existe?
* - Evitar o bug clássico: pessoa sem permissão caiu no /upgrade
* - Evitar o bug clássico: "pessoa sem permissão caiu no /upgrade"
* - Padronizar o comportamento do app em um único lugar
* - Deixar claro: RBAC ≠ Plano
*
* Convenção recomendada:
* - RBAC (role): sempre é bloqueio (403) OU home do papel (UX mais suave)
* - RBAC (role): sempre é bloqueio (403) OU home do papel (UX mais "suave")
* - Plano (feature): sempre é upgrade (porque o usuário *poderia* ter acesso pagando)
*/
@@ -35,16 +35,16 @@ export function roleHomePath (role) {
/**
* RBAC (papel) → padrão: acesso negado (403).
*
* Se você preferir UX suave, pode mandar para a home do papel.
* Se você preferir UX "suave", pode mandar para a home do papel.
* Eu deixei as duas opções:
* - use403 = true → sempre /pages/access (recomendado para clareza)
* - use403 = false → home do papel (útil quando você quer auto-corrigir navegação)
* - use403 = false → home do papel (útil quando você quer "auto-corrigir" navegação)
*/
export function denyByRole ({ to, currentRole, use403 = true } = {}) {
// ✅ padrão forte: 403 (não é caso de upgrade)
if (use403) return { path: '/pages/access' }
// modo suave: manda pra home do papel
// modo "suave": manda pra home do papel
const fallback = roleHomePath(currentRole)
// evita loop: se já está no fallback, manda pra página de acesso negado
+1 -1
View File
@@ -635,7 +635,7 @@ export function applyGuards (router) {
}
}
// 🔥 FIX: se ainda assim não resolveu tenant/role e estamos em tenant area, não negue por engano
// 🔥 FIX: se ainda assim não resolveu tenant/role e estamos em tenant area, não negue "por engano"
if (isTenantArea && (!tenant.activeTenantId || !tenant.activeRole)) {
sessionStorage.setItem('redirect_after_login', to.fullPath)
_perfEnd()