Diferentes usuários estavam vendo empresas diferentes na mesma página porque:
- Políticas RLS (Row Level Security): As políticas do Supabase filtram os dados baseados no
owner_user_id - Cada empresa pertence a um usuário: Empresas são criadas com
owner_user_idapontando para o usuário que as criou - Filtro automático: As políticas RLS permitem que usuários vejam apenas:
- Empresas onde são
owner(owner_user_id = auth.uid()) - Empresas onde são colaboradores (através da tabela
employees)
- Empresas onde são
- Adicionado campo
rolena tabelaclientscom valores:'user'(padrão) ou'admin' - Admins podem ver todas as empresas cadastradas no sistema
- Usuários normais continuam vendo apenas suas próprias empresas
- Companies: Admins podem ver todas as empresas, usuários normais veem apenas as suas
- Employees: Admins podem ver todos os colaboradores, usuários normais veem apenas os seus
- Criada página
/profilepara cada usuário visualizar e gerenciar seu perfil - Mostra informações do usuário, role atual, e permite alternar role (em desenvolvimento)
- Criada
/api/clientspara atualizar dados do cliente, incluindo orole
Execute no Supabase SQL Editor:
-- Marcar usuário específico como admin pelo email
UPDATE public.clients
SET role = 'admin'
WHERE email = 'mariomayerlefilho@live.com';
-- Ou marcar pelo user_id
UPDATE public.clients
SET role = 'admin'
WHERE user_id = 'SEU_USER_ID_AQUI';Na página de perfil (/profile), há um botão para alternar role (apenas em modo desenvolvimento).
-
Execute primeiro:
create_user_roles_system.sql- Adiciona campo
rolena tabelaclients - Atualiza políticas RLS para suportar admins
- Cria função helper
is_admin()
- Adiciona campo
-
Depois marque os admins: Use o SQL acima para marcar usuários específicos como admin
Após executar os scripts e marcar usuários como admin:
- Faça login como usuário admin
- Acesse
/companies - Você deve ver todas as empresas cadastradas no sistema
- O badge "Admin" deve aparecer no topo da página
role TEXT DEFAULT 'user' CHECK (role IN ('user', 'admin'))-- Admin pode ver todas as empresas
EXISTS (
SELECT 1 FROM public.clients
WHERE id = auth.uid()
AND role = 'admin'
)
OR
-- Usuário normal vê apenas suas empresas
(owner_user_id = auth.uid() OR ...)- Apenas admins podem ver todas as empresas
- Usuários normais continuam com acesso restrito
- Políticas RLS garantem segurança no nível do banco de dados
- API routes usam service role key para bypassar RLS quando necessário