44 lines
1.4 KiB
SQL
44 lines
1.4 KiB
SQL
-- 更新 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
|
|
)
|
|
)
|
|
)
|
|
);
|