fix(plugins): catálogo de PLUGINS/ADD-ONS é exclusivo do superadmin

- remove a entrada ADD-ONS/PLUGINS do sidebar p/ papéis operacionais
- isViewAllowed('plugins') = false p/ não-superadmin (superadmin já retorna true antes)
- menus de feature (RX/Salas/Profissionais) seguem normais p/ operacionais

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Builder
2026-06-14 01:28:45 +02:00
parent fb7825f4c1
commit df7678f70a
2 changed files with 4 additions and 6 deletions
+2 -2
View File
@@ -255,8 +255,8 @@ const App: React.FC = () => {
// Locação de Salas: capability PESSOAL (add-on por conta), liberada a qualquer // Locação de Salas: capability PESSOAL (add-on por conta), liberada a qualquer
// usuário com o plugin ativo na conta — independe de ter clínica/cargo. // usuário com o plugin ativo na conta — independe de ter clínica/cargo.
if (view === 'salas') return isPluginActive('locacao-salas'); if (view === 'salas') return isPluginActive('locacao-salas');
// Catálogo de add-ons: qualquer usuário (menos paciente) pode abrir p/ ativar. // Catálogo de PLUGINS: EXCLUSIVO do superadmin (já retorna true acima); ninguém mais.
if (view === 'plugins') return role !== 'paciente'; if (view === 'plugins') return false;
// Admin/donos têm acesso amplo, MAS as telas de superadmin são exclusivas do superadmin. // Admin/donos têm acesso amplo, MAS as telas de superadmin são exclusivas do superadmin.
if (role === 'admin' || role === 'donoclinica' || role === 'donoconsultorio') return !view.startsWith('superadmin'); if (role === 'admin' || role === 'donoclinica' || role === 'donoconsultorio') return !view.startsWith('superadmin');
+2 -4
View File
@@ -44,10 +44,8 @@ export const Sidebar: React.FC<SidebarProps> = ({ activeTab, setActiveTab }) =>
if (activePluginIds.includes('profissionais-marketplace') && currentRole !== 'superadmin' && currentRole !== 'paciente') { if (activePluginIds.includes('profissionais-marketplace') && currentRole !== 'superadmin' && currentRole !== 'paciente') {
pluginMenuItems.push({ id: 'marketplace-profissionais', label: 'PROFISSIONAIS', icon: UserSearch, color: '#ea580c' }); pluginMenuItems.push({ id: 'marketplace-profissionais', label: 'PROFISSIONAIS', icon: UserSearch, color: '#ea580c' });
} }
// Catálogo de add-ons (por conta): qualquer usuário operacional pode abrir p/ ativar (ex.: Salas). // OBS: o catálogo de PLUGINS é EXCLUSIVO do superadmin (gerência/ativação).
if (currentRole !== 'superadmin' && currentRole !== 'paciente') { // Não exibir para nenhum outro papel.
pluginMenuItems.push({ id: 'plugins', label: 'ADD-ONS / PLUGINS', icon: Puzzle, color: '#64748b' });
}
const menuItems = [ const menuItems = [
{ id: 'superadmin-overview', label: 'VISÃO GERAL', icon: TrendingUp }, { id: 'superadmin-overview', label: 'VISÃO GERAL', icon: TrendingUp },