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:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user