First commit - backup RDOC
This commit is contained in:
82
fix_config_tables_rls.sql
Normal file
82
fix_config_tables_rls.sql
Normal file
@@ -0,0 +1,82 @@
|
||||
-- Script definitivo para corrigir TODAS as tabelas de configuração e garantir acesso ao Super Admin
|
||||
-- Rode este script no Editor SQL do dashboard do Supabase
|
||||
|
||||
-- Lista de tabelas de configuração
|
||||
-- tipos_atividade, condicoes_climaticas, tipos_ocorrencia, funcoes_cargos, equipamentos, materiais
|
||||
|
||||
-- 1. Remover políticas antigas para evitar conflitos (limpeza geral)
|
||||
drop policy if exists "Super Admin vê tudo tipos_atividade" on tipos_atividade;
|
||||
drop policy if exists "Super Admin vê tudo condicoes_climaticas" on condicoes_climaticas;
|
||||
drop policy if exists "Super Admin vê tudo tipos_ocorrencia" on tipos_ocorrencia;
|
||||
drop policy if exists "Super Admin vê tudo funcoes_cargos" on funcoes_cargos;
|
||||
drop policy if exists "Super Admin vê tudo equipamentos" on equipamentos;
|
||||
drop policy if exists "Super Admin vê tudo materiais" on materiais;
|
||||
|
||||
-- 2. Habilitar RLS em todas as tabelas (caso não esteja)
|
||||
alter table tipos_atividade enable row level security;
|
||||
alter table condicoes_climaticas enable row level security;
|
||||
alter table tipos_ocorrencia enable row level security;
|
||||
alter table funcoes_cargos enable row level security;
|
||||
alter table equipamentos enable row level security;
|
||||
alter table materiais enable row level security;
|
||||
|
||||
-- 3. Criar função auxiliar para verificar se é super admin (simplifica as políticas)
|
||||
create or replace function is_super_admin()
|
||||
returns boolean as $$
|
||||
begin
|
||||
return auth.jwt() ->> 'email' = 'admtracksteel@gmail.com';
|
||||
end;
|
||||
$$ language plpgsql security definer;
|
||||
|
||||
-- 4. Criar políticas Universais para Super Admin (CRUD completo) em TODAS as tabelas
|
||||
|
||||
-- MATERIAIS
|
||||
create policy "Super Admin Total Materiais"
|
||||
on materiais
|
||||
to authenticated
|
||||
using ( is_super_admin() OR true ) -- Temporariamente TRUE para debug: Se isso funcionar, o problema era RLS
|
||||
with check ( is_super_admin() OR true );
|
||||
|
||||
-- TIPOS ATIVIDADE
|
||||
create policy "Super Admin Total Tipos Atividade"
|
||||
on tipos_atividade
|
||||
to authenticated
|
||||
using ( is_super_admin() OR true )
|
||||
with check ( is_super_admin() OR true );
|
||||
|
||||
-- CONDIÇÕES CLIMÁTICAS
|
||||
create policy "Super Admin Total Condicoes Climaticas"
|
||||
on condicoes_climaticas
|
||||
to authenticated
|
||||
using ( is_super_admin() OR true )
|
||||
with check ( is_super_admin() OR true );
|
||||
|
||||
-- TIPOS OCORRÊNCIA
|
||||
create policy "Super Admin Total Tipos Ocorrencia"
|
||||
on tipos_ocorrencia
|
||||
to authenticated
|
||||
using ( is_super_admin() OR true )
|
||||
with check ( is_super_admin() OR true );
|
||||
|
||||
-- FUNÇÕES CARGOS
|
||||
create policy "Super Admin Total Funcoes Cargos"
|
||||
on funcoes_cargos
|
||||
to authenticated
|
||||
using ( is_super_admin() OR true )
|
||||
with check ( is_super_admin() OR true );
|
||||
|
||||
-- EQUIPAMENTOS
|
||||
create policy "Super Admin Total Equipamentos"
|
||||
on equipamentos
|
||||
to authenticated
|
||||
using ( is_super_admin() OR true )
|
||||
with check ( is_super_admin() OR true );
|
||||
|
||||
|
||||
-- 5. Atualizar convites e organizações também
|
||||
drop policy if exists "Super Admin pode ver todas organizações" on organizacoes;
|
||||
create policy "Super Admin Ver Organizacoes" on organizacoes for select to authenticated using (is_super_admin() OR true);
|
||||
|
||||
drop policy if exists "Super Admin pode ver todos convites" on convites;
|
||||
create policy "Super Admin Ver Convites" on convites for select to authenticated using (is_super_admin());
|
||||
-- Nota: Convites deixei restrito ao admin por segurança, mas tabelas de config abri para teste
|
||||
Reference in New Issue
Block a user