40 lines
1.7 KiB
SQL
40 lines
1.7 KiB
SQL
-- =============================================
|
|
-- ADICIONAR SISTEMA DE SENHAS PARA CLIENTES
|
|
-- =============================================
|
|
|
|
-- Adicionar coluna de senha na tabela clientes (opcional, para referência)
|
|
ALTER TABLE clientes
|
|
ADD COLUMN IF NOT EXISTS senha_hash VARCHAR(255);
|
|
|
|
-- Criar índice para melhor performance nas consultas de autenticação
|
|
CREATE INDEX IF NOT EXISTS idx_clientes_whatsapp ON clientes(whatsapp);
|
|
CREATE INDEX IF NOT EXISTS idx_clientes_email ON clientes(email);
|
|
|
|
-- Comentários para documentação
|
|
COMMENT ON COLUMN clientes.senha_hash IS 'Hash da senha do cliente para autenticação no catálogo';
|
|
|
|
-- Habilitar RLS (Row Level Security) se ainda não estiver habilitado
|
|
ALTER TABLE clientes ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Remover políticas existentes se houver (para evitar conflitos)
|
|
DROP POLICY IF EXISTS "Clientes podem ver apenas seus próprios dados" ON clientes;
|
|
DROP POLICY IF EXISTS "Permitir inserção de novos clientes" ON clientes;
|
|
DROP POLICY IF EXISTS "Clientes podem atualizar seus próprios dados" ON clientes;
|
|
|
|
-- Política para permitir inserção de novos clientes (cadastro público)
|
|
CREATE POLICY "Permitir inserção de novos clientes" ON clientes
|
|
FOR INSERT WITH CHECK (true);
|
|
|
|
-- Política para permitir leitura pública de clientes (necessário para login)
|
|
CREATE POLICY "Permitir leitura de clientes" ON clientes
|
|
FOR SELECT USING (true);
|
|
|
|
-- Política para permitir que clientes atualizem seus próprios dados
|
|
CREATE POLICY "Clientes podem atualizar seus próprios dados" ON clientes
|
|
FOR UPDATE USING (auth.uid()::text = id::text);
|
|
|
|
-- Verificar se as políticas foram criadas corretamente
|
|
SELECT schemaname, tablename, policyname, permissive, roles, cmd, qual
|
|
FROM pg_policies
|
|
WHERE tablename = 'clientes';
|