iloom-flatten/migrations/20260530_003_add_share_links_rls.sql

44 lines
1.4 KiB
MySQL
Raw Permalink Normal View History

-- 更新 share_links 表的 RLS 策略
-- 删除旧的策略(如果存在)
DROP POLICY IF EXISTS share_links_select ON share_links;
DROP POLICY IF EXISTS share_links_insert ON share_links;
DROP POLICY IF EXISTS share_links_update ON share_links;
-- 创建查询策略:创建者可查看自己创建的链接,工厂可通过短码查看
CREATE POLICY share_links_select ON share_links
FOR SELECT USING (
created_by = auth.uid()
OR EXISTS (
SELECT 1 FROM profiles p
WHERE p.id = auth.uid()
AND p.company_id IN (
SELECT purchaser_company_id FROM company_relationships
WHERE factory_company_id = p.company_id
)
)
OR short_code IS NOT NULL -- 允许通过短码查询(用于导入页面)
);
-- 创建插入策略:仅登录用户可创建
CREATE POLICY share_links_insert ON share_links
FOR INSERT WITH CHECK (
auth.uid() IS NOT NULL
);
-- 创建更新策略:创建者可更新,工厂可更新状态
CREATE POLICY share_links_update ON share_links
FOR UPDATE USING (
created_by = auth.uid()
OR EXISTS (
SELECT 1 FROM profiles p
WHERE p.id = auth.uid()
AND p.company_id IN (
SELECT factory_company_id FROM company_relationships
WHERE purchaser_company_id = (
SELECT purchaser_id FROM production_plans WHERE id = share_links.plan_id
)
)
)
);