iloom-flatten/migrations/20260524_004_add_accounts_payable_rls.sql

66 lines
2.3 KiB
MySQL
Raw Permalink Normal View History

-- ============================================
-- 应付账款表 RLS 策略
-- ============================================
-- 启用 RLS
ALTER TABLE public.accounts_payable ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.accounts_payable_items ENABLE ROW LEVEL SECURITY;
-- 应付账款表策略
-- 采购商可以查看自己的应付账款
CREATE POLICY purchaser_select_ap ON public.accounts_payable
FOR SELECT USING (purchaser_id = get_user_master_company_id());
-- 纺织厂可以查看与自己相关的应付账款
CREATE POLICY textile_select_ap ON public.accounts_payable
FOR SELECT USING (textile_factory_id = get_user_master_company_id());
-- 采购商可以创建应付账款
CREATE POLICY purchaser_insert_ap ON public.accounts_payable
FOR INSERT WITH CHECK (purchaser_id = get_user_master_company_id());
-- 采购商可以更新自己的应付账款
CREATE POLICY purchaser_update_ap ON public.accounts_payable
FOR UPDATE USING (purchaser_id = get_user_master_company_id());
-- 应付账款明细表策略
-- 采购商可以查看自己的应付账款明细
CREATE POLICY purchaser_select_ap_items ON public.accounts_payable_items
FOR SELECT USING (
EXISTS (
SELECT 1 FROM public.accounts_payable ap
WHERE ap.id = accounts_payable_items.accounts_payable_id
AND ap.purchaser_id = get_user_master_company_id()
)
);
-- 纺织厂可以查看与自己相关的应付账款明细
CREATE POLICY textile_select_ap_items ON public.accounts_payable_items
FOR SELECT USING (
EXISTS (
SELECT 1 FROM public.accounts_payable ap
WHERE ap.id = accounts_payable_items.accounts_payable_id
AND ap.textile_factory_id = get_user_master_company_id()
)
);
-- 采购商可以创建应付账款明细
CREATE POLICY purchaser_insert_ap_items ON public.accounts_payable_items
FOR INSERT WITH CHECK (
EXISTS (
SELECT 1 FROM public.accounts_payable ap
WHERE ap.id = accounts_payable_items.accounts_payable_id
AND ap.purchaser_id = get_user_master_company_id()
)
);
-- 采购商可以更新自己的应付账款明细
CREATE POLICY purchaser_update_ap_items ON public.accounts_payable_items
FOR UPDATE USING (
EXISTS (
SELECT 1 FROM public.accounts_payable ap
WHERE ap.id = accounts_payable_items.accounts_payable_id
AND ap.purchaser_id = get_user_master_company_id()
)
);