feat: per-user panel permissions system

Replace hardcoded role-based access with granular per-panel permissions.
Each user can now be assigned any combination of 6 panels (Corporate, BI
Executive, Clientes, Providers, Usuarios, Meu Dashboard) regardless of
their role. Existing users are auto-migrated with defaults based on role.

- Add src/panels.js with panel registry and default permissions
- Add permissions column to SQLite + migration for existing users
- Add requirePermission() middleware, replace requireRole on all routes
- Dynamic nav in buildHeader based on user permissions
- Permissions checkbox UI in admin panel with role presets
- Anti-lockout: users cannot remove 'usuarios' from themselves

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
root
2026-02-17 17:27:36 -05:00
parent cd5773a1be
commit 8641100a18
12 changed files with 324 additions and 174 deletions

View File

@@ -389,7 +389,7 @@ ${buildHead('Clientes 360', pageCSS, pageScripts)}
</head>
<body class="trading-console">
${buildHeader({ role: role, userName: user.nome, activePage: 'cliente' })}
${buildHeader({ role: role, userName: user.nome, activePage: 'cliente', permissions: user.permissions || [] })}
<div class="app-container">