[TASK-2026-02-03] feat: Add RLS policies to 19-product-attributes.sql

- Added Row Level Security for product_attributes, product_variants
- Added tenant isolation policies for related tables
- Prepared for execution in WSL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Adrian Flores Cortes 2026-02-03 17:49:41 -06:00
parent b682fdaaf3
commit c9ddeb8b5a

View File

@ -144,3 +144,41 @@ COMMENT ON COLUMN products.product_variants.price_extra IS 'Ajuste de precio sob
COMMENT ON COLUMN products.product_variants.cost_extra IS 'Ajuste de costo sobre el costo base del producto';
COMMENT ON TABLE products.product_variant_attributes IS 'Tabla de union entre variantes y valores de atributos';
-- =====================
-- RLS (Row Level Security)
-- =====================
ALTER TABLE products.product_attributes ENABLE ROW LEVEL SECURITY;
ALTER TABLE products.product_attribute_values ENABLE ROW LEVEL SECURITY;
ALTER TABLE products.product_variants ENABLE ROW LEVEL SECURITY;
ALTER TABLE products.product_variant_attributes ENABLE ROW LEVEL SECURITY;
-- Politicas RLS para product_attributes
DROP POLICY IF EXISTS product_attributes_tenant_isolation ON products.product_attributes;
CREATE POLICY product_attributes_tenant_isolation ON products.product_attributes
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::uuid);
-- Politicas RLS para product_variants
DROP POLICY IF EXISTS product_variants_tenant_isolation ON products.product_variants;
CREATE POLICY product_variants_tenant_isolation ON products.product_variants
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::uuid);
-- Politicas RLS para product_attribute_values (via JOIN con attribute)
DROP POLICY IF EXISTS product_attribute_values_tenant_isolation ON products.product_attribute_values;
CREATE POLICY product_attribute_values_tenant_isolation ON products.product_attribute_values
FOR ALL USING (
attribute_id IN (
SELECT id FROM products.product_attributes
WHERE tenant_id = current_setting('app.current_tenant_id', true)::uuid
)
);
-- Politicas RLS para product_variant_attributes (via JOIN con variant)
DROP POLICY IF EXISTS product_variant_attributes_tenant_isolation ON products.product_variant_attributes;
CREATE POLICY product_variant_attributes_tenant_isolation ON products.product_variant_attributes
FOR ALL USING (
variant_id IN (
SELECT id FROM products.product_variants
WHERE tenant_id = current_setting('app.current_tenant_id', true)::uuid
)
);