51 lines
1.6 KiB
MySQL
51 lines
1.6 KiB
MySQL
|
|
-- ============================================
|
||
|
|
-- 此文件由 Meoo Cloud 自动生成,请勿修改
|
||
|
|
-- This file is auto-generated by Meoo Cloud, DO NOT MODIFY
|
||
|
|
-- ============================================
|
||
|
|
|
||
|
|
|
||
|
|
-- 修复高风险表的 SELECT 策略
|
||
|
|
|
||
|
|
-- 1. production_plans: 只允许采购商查看自己的计划,工厂查看关联的计划
|
||
|
|
DROP POLICY IF EXISTS users_select_plans ON public.production_plans;
|
||
|
|
|
||
|
|
CREATE POLICY users_select_plans ON public.production_plans
|
||
|
|
FOR SELECT USING (
|
||
|
|
-- 采购商可以查看自己的计划
|
||
|
|
purchaser_id = public.get_user_master_company_id()
|
||
|
|
OR
|
||
|
|
-- 工厂可以查看关联的计划
|
||
|
|
EXISTS (
|
||
|
|
SELECT 1 FROM public.plan_factories
|
||
|
|
WHERE plan_id = production_plans.id
|
||
|
|
AND factory_id = public.get_user_master_company_id()
|
||
|
|
)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- 2. products: 只允许公司自己查看(产品管理)
|
||
|
|
DROP POLICY IF EXISTS users_select_products ON public.products;
|
||
|
|
|
||
|
|
CREATE POLICY users_select_products ON public.products
|
||
|
|
FOR SELECT USING (
|
||
|
|
company_id = public.get_user_master_company_id()
|
||
|
|
);
|
||
|
|
|
||
|
|
-- 3. inventory_records: 只允许相关方查看
|
||
|
|
DROP POLICY IF EXISTS users_select_inventory ON public.inventory_records;
|
||
|
|
|
||
|
|
CREATE POLICY users_select_inventory ON public.inventory_records
|
||
|
|
FOR SELECT USING (
|
||
|
|
-- 公司可以查看自己的入库记录
|
||
|
|
company_id = public.get_user_master_company_id()
|
||
|
|
OR
|
||
|
|
-- 采购商可以查看关联计划的入库记录
|
||
|
|
EXISTS (
|
||
|
|
SELECT 1 FROM public.production_plans p
|
||
|
|
JOIN public.plan_factories pf ON p.id = pf.plan_id
|
||
|
|
WHERE p.id = inventory_records.plan_id
|
||
|
|
AND (p.purchaser_id = public.get_user_master_company_id()
|
||
|
|
OR pf.factory_id = public.get_user_master_company_id())
|
||
|
|
)
|
||
|
|
);
|
||
|
|
|