first commit
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
-- ============================================================
|
||||
-- Cotizador Walmart Connect - Control de acceso por usuario
|
||||
-- GomezLee Marketing
|
||||
-- ============================================================
|
||||
-- Script completo para una instalación nueva.
|
||||
-- Si la tabla YA existe, para agregar únicamente el permiso del
|
||||
-- Tarifario usa SUPABASE-PERMISO-TARIFARIO.sql.
|
||||
|
||||
create table if not exists public.cotizador_wmc_access (
|
||||
email text primary key,
|
||||
full_name text not null,
|
||||
is_active boolean not null default true,
|
||||
can_use_tarifario boolean not null default false,
|
||||
created_at timestamptz not null default now(),
|
||||
constraint cotizador_wmc_access_email_normalized_chk
|
||||
check (email = lower(btrim(email))),
|
||||
constraint cotizador_wmc_access_glm_domain_chk
|
||||
check (email like '%@gomezleemarketing.com')
|
||||
);
|
||||
|
||||
-- Si esta tabla fue creada con una versión anterior, agrega la columna nueva.
|
||||
alter table public.cotizador_wmc_access
|
||||
add column if not exists can_use_tarifario boolean not null default false;
|
||||
|
||||
comment on table public.cotizador_wmc_access is
|
||||
'Usuarios autorizados para ingresar al Cotizador Walmart Connect.';
|
||||
comment on column public.cotizador_wmc_access.is_active is
|
||||
'true = acceso general permitido; false = acceso general revocado.';
|
||||
comment on column public.cotizador_wmc_access.can_use_tarifario is
|
||||
'true = puede visualizar/utilizar el módulo Tarifario; false = no tiene acceso al módulo.';
|
||||
|
||||
-- RLS: el navegador solo puede comprobar SU PROPIO acceso y únicamente
|
||||
-- cuando la fila está activa. No puede leer usuarios ajenos ni modificar la tabla.
|
||||
alter table public.cotizador_wmc_access enable row level security;
|
||||
|
||||
revoke all on table public.cotizador_wmc_access from anon;
|
||||
revoke insert, update, delete, truncate, references, trigger
|
||||
on table public.cotizador_wmc_access from authenticated;
|
||||
grant select on table public.cotizador_wmc_access to authenticated;
|
||||
|
||||
drop policy if exists "cotizador_wmc_read_own_active_access"
|
||||
on public.cotizador_wmc_access;
|
||||
|
||||
create policy "cotizador_wmc_read_own_active_access"
|
||||
on public.cotizador_wmc_access
|
||||
for select
|
||||
to authenticated
|
||||
using (
|
||||
is_active = true
|
||||
and email = lower(coalesce((select auth.jwt() ->> 'email'), ''))
|
||||
);
|
||||
|
||||
-- Usuarios autorizados iniciales.
|
||||
-- El permiso de Tarifario queda false por defecto y se administra por separado.
|
||||
insert into public.cotizador_wmc_access (email, full_name, is_active)
|
||||
values
|
||||
('iaracena@gomezleemarketing.com', 'Isaac Aracena', true),
|
||||
('lmatos@gomezleemarketing.com', 'Luis Matos', true),
|
||||
('ethen@gomezleemarketing.com', 'Eidan Then', true),
|
||||
('mgomez@gomezleemarketing.com', 'Máximo Gómez', true),
|
||||
('jgomez@gomezleemarketing.com', 'José Leopoldo Gómez', true),
|
||||
('wlopez@gomezleemarketing.com', 'William Lopez', true)
|
||||
on conflict (email) do update
|
||||
set full_name = excluded.full_name;
|
||||
|
||||
-- ============================================================
|
||||
-- EJEMPLOS DE ADMINISTRACIÓN (NO es necesario ejecutarlos ahora)
|
||||
-- ============================================================
|
||||
|
||||
-- QUITAR ACCESO GENERAL sin borrar el usuario:
|
||||
-- update public.cotizador_wmc_access
|
||||
-- set is_active = false
|
||||
-- where email = 'usuario@gomezleemarketing.com';
|
||||
|
||||
-- VOLVER A DAR ACCESO GENERAL:
|
||||
-- update public.cotizador_wmc_access
|
||||
-- set is_active = true
|
||||
-- where email = 'usuario@gomezleemarketing.com';
|
||||
|
||||
-- DAR ACCESO AL TARIFARIO:
|
||||
-- update public.cotizador_wmc_access
|
||||
-- set can_use_tarifario = true
|
||||
-- where email = 'usuario@gomezleemarketing.com';
|
||||
|
||||
-- QUITAR ACCESO AL TARIFARIO:
|
||||
-- update public.cotizador_wmc_access
|
||||
-- set can_use_tarifario = false
|
||||
-- where email = 'usuario@gomezleemarketing.com';
|
||||
|
||||
-- DAR ACCESO GENERAL A UNA PERSONA NUEVA:
|
||||
-- insert into public.cotizador_wmc_access (email, full_name, is_active)
|
||||
-- values ('usuario@gomezleemarketing.com', 'Nombre Apellido', true)
|
||||
-- on conflict (email) do update
|
||||
-- set full_name = excluded.full_name, is_active = true;
|
||||
|
||||
-- ELIMINAR COMPLETAMENTE UN REGISTRO:
|
||||
-- delete from public.cotizador_wmc_access
|
||||
-- where email = 'usuario@gomezleemarketing.com';
|
||||
Reference in New Issue
Block a user