security/fix(front): fecha /update p/ superadmin + corrige deep-links

- /update (migração de banco) sai da lista sempre-liberada do isViewAllowed;
  passa a exigir superadmin (não-superadmin cai na view padrão; deslogado vai p/ landing).
- ROUTE_MAP ganha /comissoes e /glosas (existiam em VIEW_TO_ROUTE mas faltavam aqui;
  refresh/deep-link nessas telas caía em dashboard).
- (cadastro-dentista já estava mapeado — correção de equívoco da auditoria.)
- Validado em DEV: build compila, app sobe, rotas resolvem (HTTP 200 SPA).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Builder
2026-06-19 14:43:15 +02:00
parent 3aa6a444dc
commit 1559387a7c
+5 -1
View File
@@ -151,6 +151,9 @@ const ROUTE_MAP: Record<string, ViewKey> = {
'/aguardando-convite': 'aguardando-convite',
'/diretorio-profissionais': 'diretorio-profissionais',
'/proteses': 'proteses',
// Corrige deep-link/refresh: existiam em VIEW_TO_ROUTE mas faltavam aqui (caíam em dashboard).
'/comissoes': 'comissoes',
'/glosas': 'glosas',
};
const VIEW_TO_ROUTE: Record<ViewKey, string> = {
@@ -274,7 +277,8 @@ const App: React.FC = () => {
const clinColor = activeWorkspace?.cor || '#2563eb';
const isViewAllowed = (view: ViewKey, role: string): boolean => {
if (['landing', 'login', 'public', 'update'].includes(view)) return true;
if (['landing', 'login', 'public'].includes(view)) return true;
// /update (migração de banco) é EXCLUSIVA do superadmin (liberado na linha seguinte).
if (role === 'superadmin') return true;
// Sync GLOBAL removido do app (substituído pelo backup por clínica em Configurações).
if (view === 'sync') return false;