712 lines
31 KiB
PL/PgSQL
712 lines
31 KiB
PL/PgSQL
-- Migration 002: Create RLS Policies for tenant isolation
|
|
-- Data: 2026-04-02
|
|
-- Description: Cria políticas RLS para isolamento de dados por tenant
|
|
|
|
-- ==========================================
|
|
-- FUNÇÃO AUXILIAR: Obter tenant atual do usuário
|
|
-- ==========================================
|
|
|
|
CREATE OR REPLACE FUNCTION get_current_tenant_id()
|
|
RETURNS INTEGER AS $$
|
|
DECLARE
|
|
tenant_id INTEGER;
|
|
BEGIN
|
|
-- Obtém tenant_id do contexto da aplicação (setado via application_name ou custom config)
|
|
-- Ou busca pelo user_id da sessão atual
|
|
BEGIN
|
|
tenant_id := current_setting('app.current_tenant_id', true)::INTEGER;
|
|
EXCEPTION WHEN OTHERS THEN
|
|
tenant_id := NULL;
|
|
END;
|
|
|
|
RETURN tenant_id;
|
|
END;
|
|
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
|
|
|
-- ==========================================
|
|
-- FUNÇÃO: Verificar se usuário é admin/master
|
|
-- ==========================================
|
|
|
|
CREATE OR REPLACE FUNCTION is_tenant_admin()
|
|
RETURNS BOOLEAN AS $$
|
|
DECLARE
|
|
is_admin BOOLEAN;
|
|
tenant_role TEXT;
|
|
BEGIN
|
|
BEGIN
|
|
tenant_role := current_setting('app.current_tenant_role', true);
|
|
is_admin := (tenant_role = 'owner' OR tenant_role = 'admin');
|
|
EXCEPTION WHEN OTHERS THEN
|
|
is_admin := FALSE;
|
|
END;
|
|
|
|
RETURN is_admin;
|
|
END;
|
|
$$ LANGUAGE plpgsql SECURITY DEFINER;
|
|
|
|
-- ==========================================
|
|
-- PRODUCTIVITY & WORKSPACE
|
|
-- ==========================================
|
|
|
|
-- workspace_pages policies
|
|
DROP POLICY IF EXISTS workspace_pages_tenant_select ON "workspace_pages";
|
|
DROP POLICY IF EXISTS workspace_pages_tenant_insert ON "workspace_pages";
|
|
DROP POLICY IF EXISTS workspace_pages_tenant_update ON "workspace_pages";
|
|
DROP POLICY IF EXISTS workspace_pages_tenant_delete ON "workspace_pages";
|
|
|
|
CREATE POLICY workspace_pages_tenant_select ON "workspace_pages"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY workspace_pages_tenant_insert ON "workspace_pages"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY workspace_pages_tenant_update ON "workspace_pages"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY workspace_pages_tenant_delete ON "workspace_pages"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- quick_notes policies
|
|
DROP POLICY IF EXISTS quick_notes_tenant_select ON "quick_notes";
|
|
DROP POLICY IF EXISTS quick_notes_tenant_insert ON "quick_notes";
|
|
DROP POLICY IF EXISTS quick_notes_tenant_update ON "quick_notes";
|
|
DROP POLICY IF EXISTS quick_notes_tenant_delete ON "quick_notes";
|
|
|
|
CREATE POLICY quick_notes_tenant_select ON "quick_notes"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY quick_notes_tenant_insert ON "quick_notes"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY quick_notes_tenant_update ON "quick_notes"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY quick_notes_tenant_delete ON "quick_notes"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- activity_feed policies
|
|
DROP POLICY IF EXISTS activity_feed_tenant_select ON "activity_feed";
|
|
DROP POLICY IF EXISTS activity_feed_tenant_insert ON "activity_feed";
|
|
DROP POLICY IF EXISTS activity_feed_tenant_update ON "activity_feed";
|
|
DROP POLICY IF EXISTS activity_feed_tenant_delete ON "activity_feed";
|
|
|
|
CREATE POLICY activity_feed_tenant_select ON "activity_feed"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY activity_feed_tenant_insert ON "activity_feed"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY activity_feed_tenant_update ON "activity_feed"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY activity_feed_tenant_delete ON "activity_feed"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- conversations policies
|
|
DROP POLICY IF EXISTS conversations_tenant_select ON "conversations";
|
|
DROP POLICY IF EXISTS conversations_tenant_insert ON "conversations";
|
|
DROP POLICY IF EXISTS conversations_tenant_update ON "conversations";
|
|
DROP POLICY IF EXISTS conversations_tenant_delete ON "conversations";
|
|
|
|
CREATE POLICY conversations_tenant_select ON "conversations"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY conversations_tenant_insert ON "conversations"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY conversations_tenant_update ON "conversations"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY conversations_tenant_delete ON "conversations"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- knowledge_base policies
|
|
DROP POLICY IF EXISTS knowledge_base_tenant_select ON "knowledge_base";
|
|
DROP POLICY IF EXISTS knowledge_base_tenant_insert ON "knowledge_base";
|
|
DROP POLICY IF EXISTS knowledge_base_tenant_update ON "knowledge_base";
|
|
DROP POLICY IF EXISTS knowledge_base_tenant_delete ON "knowledge_base";
|
|
|
|
CREATE POLICY knowledge_base_tenant_select ON "knowledge_base"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY knowledge_base_tenant_insert ON "knowledge_base"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY knowledge_base_tenant_update ON "knowledge_base"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY knowledge_base_tenant_delete ON "knowledge_base"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- chat_threads policies
|
|
DROP POLICY IF EXISTS chat_threads_tenant_select ON "chat_threads";
|
|
DROP POLICY IF EXISTS chat_threads_tenant_insert ON "chat_threads";
|
|
DROP POLICY IF EXISTS chat_threads_tenant_update ON "chat_threads";
|
|
DROP POLICY IF EXISTS chat_threads_tenant_delete ON "chat_threads";
|
|
|
|
CREATE POLICY chat_threads_tenant_select ON "chat_threads"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY chat_threads_tenant_insert ON "chat_threads"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY chat_threads_tenant_update ON "chat_threads"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY chat_threads_tenant_delete ON "chat_threads"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- manus_runs policies
|
|
DROP POLICY IF EXISTS manus_runs_tenant_select ON "manus_runs";
|
|
DROP POLICY IF EXISTS manus_runs_tenant_insert ON "manus_runs";
|
|
DROP POLICY IF EXISTS manus_runs_tenant_update ON "manus_runs";
|
|
DROP POLICY IF EXISTS manus_runs_tenant_delete ON "manus_runs";
|
|
|
|
CREATE POLICY manus_runs_tenant_select ON "manus_runs"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY manus_runs_tenant_insert ON "manus_runs"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY manus_runs_tenant_update ON "manus_runs"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY manus_runs_tenant_delete ON "manus_runs"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- ==========================================
|
|
-- LOW-CODE / DEV CENTER
|
|
-- ==========================================
|
|
|
|
-- arc_doctypes policies
|
|
DROP POLICY IF EXISTS arc_doctypes_tenant_select ON "arc_doctypes";
|
|
DROP POLICY IF EXISTS arc_doctypes_tenant_insert ON "arc_doctypes";
|
|
DROP POLICY IF EXISTS arc_doctypes_tenant_update ON "arc_doctypes";
|
|
DROP POLICY IF EXISTS arc_doctypes_tenant_delete ON "arc_doctypes";
|
|
|
|
CREATE POLICY arc_doctypes_tenant_select ON "arc_doctypes"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id() OR tenant_id IS NULL);
|
|
|
|
CREATE POLICY arc_doctypes_tenant_insert ON "arc_doctypes"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY arc_doctypes_tenant_update ON "arc_doctypes"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY arc_doctypes_tenant_delete ON "arc_doctypes"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- arc_layouts policies
|
|
DROP POLICY IF EXISTS arc_layouts_tenant_select ON "arc_layouts";
|
|
DROP POLICY IF EXISTS arc_layouts_tenant_insert ON "arc_layouts";
|
|
DROP POLICY IF EXISTS arc_layouts_tenant_update ON "arc_layouts";
|
|
DROP POLICY IF EXISTS arc_layouts_tenant_delete ON "arc_layouts";
|
|
|
|
CREATE POLICY arc_layouts_tenant_select ON "arc_layouts"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id() OR tenant_id IS NULL);
|
|
|
|
CREATE POLICY arc_layouts_tenant_insert ON "arc_layouts"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY arc_layouts_tenant_update ON "arc_layouts"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY arc_layouts_tenant_delete ON "arc_layouts"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- ==========================================
|
|
-- MULTI-TENANCY CORE
|
|
-- ==========================================
|
|
|
|
-- tenant_empresas policies
|
|
DROP POLICY IF EXISTS tenant_empresas_tenant_select ON "tenant_empresas";
|
|
DROP POLICY IF EXISTS tenant_empresas_tenant_insert ON "tenant_empresas";
|
|
DROP POLICY IF EXISTS tenant_empresas_tenant_update ON "tenant_empresas";
|
|
DROP POLICY IF EXISTS tenant_empresas_tenant_delete ON "tenant_empresas";
|
|
|
|
CREATE POLICY tenant_empresas_tenant_select ON "tenant_empresas"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY tenant_empresas_tenant_insert ON "tenant_empresas"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY tenant_empresas_tenant_update ON "tenant_empresas"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY tenant_empresas_tenant_delete ON "tenant_empresas"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- tenant_users policies (tabela de junção - verifica se user pertence ao tenant)
|
|
DROP POLICY IF EXISTS tenant_users_tenant_select ON "tenant_users";
|
|
DROP POLICY IF EXISTS tenant_users_tenant_insert ON "tenant_users";
|
|
DROP POLICY IF EXISTS tenant_users_tenant_update ON "tenant_users";
|
|
DROP POLICY IF EXISTS tenant_users_tenant_delete ON "tenant_users";
|
|
|
|
CREATE POLICY tenant_users_tenant_select ON "tenant_users"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY tenant_users_tenant_insert ON "tenant_users"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY tenant_users_tenant_update ON "tenant_users"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY tenant_users_tenant_delete ON "tenant_users"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- partner_clients policies
|
|
DROP POLICY IF EXISTS partner_clients_tenant_select ON "partner_clients";
|
|
DROP POLICY IF EXISTS partner_clients_tenant_insert ON "partner_clients";
|
|
DROP POLICY IF EXISTS partner_clients_tenant_update ON "partner_clients";
|
|
DROP POLICY IF EXISTS partner_clients_tenant_delete ON "partner_clients";
|
|
|
|
CREATE POLICY partner_clients_tenant_select ON "partner_clients"
|
|
FOR SELECT USING (partner_id = get_current_tenant_id() OR client_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY partner_clients_tenant_insert ON "partner_clients"
|
|
FOR INSERT WITH CHECK (partner_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY partner_clients_tenant_update ON "partner_clients"
|
|
FOR UPDATE USING (partner_id = get_current_tenant_id())
|
|
WITH CHECK (partner_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY partner_clients_tenant_delete ON "partner_clients"
|
|
FOR DELETE USING (partner_id = get_current_tenant_id());
|
|
|
|
-- partner_commissions policies
|
|
DROP POLICY IF EXISTS partner_commissions_tenant_select ON "partner_commissions";
|
|
DROP POLICY IF EXISTS partner_commissions_tenant_insert ON "partner_commissions";
|
|
DROP POLICY IF EXISTS partner_commissions_tenant_update ON "partner_commissions";
|
|
DROP POLICY IF EXISTS partner_commissions_tenant_delete ON "partner_commissions";
|
|
|
|
CREATE POLICY partner_commissions_tenant_select ON "partner_commissions"
|
|
FOR SELECT USING (partner_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY partner_commissions_tenant_insert ON "partner_commissions"
|
|
FOR INSERT WITH CHECK (partner_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY partner_commissions_tenant_update ON "partner_commissions"
|
|
FOR UPDATE USING (partner_id = get_current_tenant_id())
|
|
WITH CHECK (partner_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY partner_commissions_tenant_delete ON "partner_commissions"
|
|
FOR DELETE USING (partner_id = get_current_tenant_id());
|
|
|
|
-- ==========================================
|
|
-- PROCESS COMPASS
|
|
-- ==========================================
|
|
|
|
-- pc_clients policies
|
|
DROP POLICY IF EXISTS pc_clients_tenant_select ON "pc_clients";
|
|
DROP POLICY IF EXISTS pc_clients_tenant_insert ON "pc_clients";
|
|
DROP POLICY IF EXISTS pc_clients_tenant_update ON "pc_clients";
|
|
DROP POLICY IF EXISTS pc_clients_tenant_delete ON "pc_clients";
|
|
|
|
CREATE POLICY pc_clients_tenant_select ON "pc_clients"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_clients_tenant_insert ON "pc_clients"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_clients_tenant_update ON "pc_clients"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_clients_tenant_delete ON "pc_clients"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- pc_projects policies
|
|
DROP POLICY IF EXISTS pc_projects_tenant_select ON "pc_projects";
|
|
DROP POLICY IF EXISTS pc_projects_tenant_insert ON "pc_projects";
|
|
DROP POLICY IF EXISTS pc_projects_tenant_update ON "pc_projects";
|
|
DROP POLICY IF EXISTS pc_projects_tenant_delete ON "pc_projects";
|
|
|
|
CREATE POLICY pc_projects_tenant_select ON "pc_projects"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_projects_tenant_insert ON "pc_projects"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_projects_tenant_update ON "pc_projects"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_projects_tenant_delete ON "pc_projects"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- pc_crm_stages policies
|
|
DROP POLICY IF EXISTS pc_crm_stages_tenant_select ON "pc_crm_stages";
|
|
DROP POLICY IF EXISTS pc_crm_stages_tenant_insert ON "pc_crm_stages";
|
|
DROP POLICY IF EXISTS pc_crm_stages_tenant_update ON "pc_crm_stages";
|
|
DROP POLICY IF EXISTS pc_crm_stages_tenant_delete ON "pc_crm_stages";
|
|
|
|
CREATE POLICY pc_crm_stages_tenant_select ON "pc_crm_stages"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_stages_tenant_insert ON "pc_crm_stages"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_stages_tenant_update ON "pc_crm_stages"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_stages_tenant_delete ON "pc_crm_stages"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- pc_crm_leads policies
|
|
DROP POLICY IF EXISTS pc_crm_leads_tenant_select ON "pc_crm_leads";
|
|
DROP POLICY IF EXISTS pc_crm_leads_tenant_insert ON "pc_crm_leads";
|
|
DROP POLICY IF EXISTS pc_crm_leads_tenant_update ON "pc_crm_leads";
|
|
DROP POLICY IF EXISTS pc_crm_leads_tenant_delete ON "pc_crm_leads";
|
|
|
|
CREATE POLICY pc_crm_leads_tenant_select ON "pc_crm_leads"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_leads_tenant_insert ON "pc_crm_leads"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_leads_tenant_update ON "pc_crm_leads"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_leads_tenant_delete ON "pc_crm_leads"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- pc_crm_opportunities policies
|
|
DROP POLICY IF EXISTS pc_crm_opportunities_tenant_select ON "pc_crm_opportunities";
|
|
DROP POLICY IF EXISTS pc_crm_opportunities_tenant_insert ON "pc_crm_opportunities";
|
|
DROP POLICY IF EXISTS pc_crm_opportunities_tenant_update ON "pc_crm_opportunities";
|
|
DROP POLICY IF EXISTS pc_crm_opportunities_tenant_delete ON "pc_crm_opportunities";
|
|
|
|
CREATE POLICY pc_crm_opportunities_tenant_select ON "pc_crm_opportunities"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_opportunities_tenant_insert ON "pc_crm_opportunities"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_opportunities_tenant_update ON "pc_crm_opportunities"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_opportunities_tenant_delete ON "pc_crm_opportunities"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- pc_crm_activities policies
|
|
DROP POLICY IF EXISTS pc_crm_activities_tenant_select ON "pc_crm_activities";
|
|
DROP POLICY IF EXISTS pc_crm_activities_tenant_insert ON "pc_crm_activities";
|
|
DROP POLICY IF EXISTS pc_crm_activities_tenant_update ON "pc_crm_activities";
|
|
DROP POLICY IF EXISTS pc_crm_activities_tenant_delete ON "pc_crm_activities";
|
|
|
|
CREATE POLICY pc_crm_activities_tenant_select ON "pc_crm_activities"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_activities_tenant_insert ON "pc_crm_activities"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_activities_tenant_update ON "pc_crm_activities"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_crm_activities_tenant_delete ON "pc_crm_activities"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- pc_pdca_cycles policies
|
|
DROP POLICY IF EXISTS pc_pdca_cycles_tenant_select ON "pc_pdca_cycles";
|
|
DROP POLICY IF EXISTS pc_pdca_cycles_tenant_insert ON "pc_pdca_cycles";
|
|
DROP POLICY IF EXISTS pc_pdca_cycles_tenant_update ON "pc_pdca_cycles";
|
|
DROP POLICY IF EXISTS pc_pdca_cycles_tenant_delete ON "pc_pdca_cycles";
|
|
|
|
CREATE POLICY pc_pdca_cycles_tenant_select ON "pc_pdca_cycles"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_pdca_cycles_tenant_insert ON "pc_pdca_cycles"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_pdca_cycles_tenant_update ON "pc_pdca_cycles"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_pdca_cycles_tenant_delete ON "pc_pdca_cycles"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- pc_requirements policies
|
|
DROP POLICY IF EXISTS pc_requirements_tenant_select ON "pc_requirements";
|
|
DROP POLICY IF EXISTS pc_requirements_tenant_insert ON "pc_requirements";
|
|
DROP POLICY IF EXISTS pc_requirements_tenant_update ON "pc_requirements";
|
|
DROP POLICY IF EXISTS pc_requirements_tenant_delete ON "pc_requirements";
|
|
|
|
CREATE POLICY pc_requirements_tenant_select ON "pc_requirements"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_requirements_tenant_insert ON "pc_requirements"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_requirements_tenant_update ON "pc_requirements"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY pc_requirements_tenant_delete ON "pc_requirements"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- ==========================================
|
|
-- CRM EXPANDIDO
|
|
-- ==========================================
|
|
|
|
-- crm_partners policies
|
|
DROP POLICY IF EXISTS crm_partners_tenant_select ON "crm_partners";
|
|
DROP POLICY IF EXISTS crm_partners_tenant_insert ON "crm_partners";
|
|
DROP POLICY IF EXISTS crm_partners_tenant_update ON "crm_partners";
|
|
DROP POLICY IF EXISTS crm_partners_tenant_delete ON "crm_partners";
|
|
|
|
CREATE POLICY crm_partners_tenant_select ON "crm_partners"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id() OR tenant_id IS NULL);
|
|
|
|
CREATE POLICY crm_partners_tenant_insert ON "crm_partners"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_partners_tenant_update ON "crm_partners"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_partners_tenant_delete ON "crm_partners"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_contracts policies
|
|
DROP POLICY IF EXISTS crm_contracts_tenant_select ON "crm_contracts";
|
|
DROP POLICY IF EXISTS crm_contracts_tenant_insert ON "crm_contracts";
|
|
DROP POLICY IF EXISTS crm_contracts_tenant_update ON "crm_contracts";
|
|
DROP POLICY IF EXISTS crm_contracts_tenant_delete ON "crm_contracts";
|
|
|
|
CREATE POLICY crm_contracts_tenant_select ON "crm_contracts"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_contracts_tenant_insert ON "crm_contracts"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_contracts_tenant_update ON "crm_contracts"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_contracts_tenant_delete ON "crm_contracts"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_channels policies
|
|
DROP POLICY IF EXISTS crm_channels_tenant_select ON "crm_channels";
|
|
DROP POLICY IF EXISTS crm_channels_tenant_insert ON "crm_channels";
|
|
DROP POLICY IF EXISTS crm_channels_tenant_update ON "crm_channels";
|
|
DROP POLICY IF EXISTS crm_channels_tenant_delete ON "crm_channels";
|
|
|
|
CREATE POLICY crm_channels_tenant_select ON "crm_channels"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_channels_tenant_insert ON "crm_channels"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_channels_tenant_update ON "crm_channels"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_channels_tenant_delete ON "crm_channels"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_threads policies
|
|
DROP POLICY IF EXISTS crm_threads_tenant_select ON "crm_threads";
|
|
DROP POLICY IF EXISTS crm_threads_tenant_insert ON "crm_threads";
|
|
DROP POLICY IF EXISTS crm_threads_tenant_update ON "crm_threads";
|
|
DROP POLICY IF EXISTS crm_threads_tenant_delete ON "crm_threads";
|
|
|
|
CREATE POLICY crm_threads_tenant_select ON "crm_threads"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_threads_tenant_insert ON "crm_threads"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_threads_tenant_update ON "crm_threads"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_threads_tenant_delete ON "crm_threads"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_quick_messages policies
|
|
DROP POLICY IF EXISTS crm_quick_messages_tenant_select ON "crm_quick_messages";
|
|
DROP POLICY IF EXISTS crm_quick_messages_tenant_insert ON "crm_quick_messages";
|
|
DROP POLICY IF EXISTS crm_quick_messages_tenant_update ON "crm_quick_messages";
|
|
DROP POLICY IF EXISTS crm_quick_messages_tenant_delete ON "crm_quick_messages";
|
|
|
|
CREATE POLICY crm_quick_messages_tenant_select ON "crm_quick_messages"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_quick_messages_tenant_insert ON "crm_quick_messages"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_quick_messages_tenant_update ON "crm_quick_messages"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_quick_messages_tenant_delete ON "crm_quick_messages"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_campaigns policies
|
|
DROP POLICY IF EXISTS crm_campaigns_tenant_select ON "crm_campaigns";
|
|
DROP POLICY IF EXISTS crm_campaigns_tenant_insert ON "crm_campaigns";
|
|
DROP POLICY IF EXISTS crm_campaigns_tenant_update ON "crm_campaigns";
|
|
DROP POLICY IF EXISTS crm_campaigns_tenant_delete ON "crm_campaigns";
|
|
|
|
CREATE POLICY crm_campaigns_tenant_select ON "crm_campaigns"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_campaigns_tenant_insert ON "crm_campaigns"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_campaigns_tenant_update ON "crm_campaigns"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_campaigns_tenant_delete ON "crm_campaigns"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_events policies
|
|
DROP POLICY IF EXISTS crm_events_tenant_select ON "crm_events";
|
|
DROP POLICY IF EXISTS crm_events_tenant_insert ON "crm_events";
|
|
DROP POLICY IF EXISTS crm_events_tenant_update ON "crm_events";
|
|
DROP POLICY IF EXISTS crm_events_tenant_delete ON "crm_events";
|
|
|
|
CREATE POLICY crm_events_tenant_select ON "crm_events"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_events_tenant_insert ON "crm_events"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_events_tenant_update ON "crm_events"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_events_tenant_delete ON "crm_events"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_products policies
|
|
DROP POLICY IF EXISTS crm_products_tenant_select ON "crm_products";
|
|
DROP POLICY IF EXISTS crm_products_tenant_insert ON "crm_products";
|
|
DROP POLICY IF EXISTS crm_products_tenant_update ON "crm_products";
|
|
DROP POLICY IF EXISTS crm_products_tenant_delete ON "crm_products";
|
|
|
|
CREATE POLICY crm_products_tenant_select ON "crm_products"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id() OR tenant_id IS NULL);
|
|
|
|
CREATE POLICY crm_products_tenant_insert ON "crm_products"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_products_tenant_update ON "crm_products"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_products_tenant_delete ON "crm_products"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_clients policies
|
|
DROP POLICY IF EXISTS crm_clients_tenant_select ON "crm_clients";
|
|
DROP POLICY IF EXISTS crm_clients_tenant_insert ON "crm_clients";
|
|
DROP POLICY IF EXISTS crm_clients_tenant_update ON "crm_clients";
|
|
DROP POLICY IF EXISTS crm_clients_tenant_delete ON "crm_clients";
|
|
|
|
CREATE POLICY crm_clients_tenant_select ON "crm_clients"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_clients_tenant_insert ON "crm_clients"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_clients_tenant_update ON "crm_clients"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_clients_tenant_delete ON "crm_clients"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_pipeline_stages policies
|
|
DROP POLICY IF EXISTS crm_pipeline_stages_tenant_select ON "crm_pipeline_stages";
|
|
DROP POLICY IF EXISTS crm_pipeline_stages_tenant_insert ON "crm_pipeline_stages";
|
|
DROP POLICY IF EXISTS crm_pipeline_stages_tenant_update ON "crm_pipeline_stages";
|
|
DROP POLICY IF EXISTS crm_pipeline_stages_tenant_delete ON "crm_pipeline_stages";
|
|
|
|
CREATE POLICY crm_pipeline_stages_tenant_select ON "crm_pipeline_stages"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_pipeline_stages_tenant_insert ON "crm_pipeline_stages"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_pipeline_stages_tenant_update ON "crm_pipeline_stages"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_pipeline_stages_tenant_delete ON "crm_pipeline_stages"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_leads policies
|
|
DROP POLICY IF EXISTS crm_leads_tenant_select ON "crm_leads";
|
|
DROP POLICY IF EXISTS crm_leads_tenant_insert ON "crm_leads";
|
|
DROP POLICY IF EXISTS crm_leads_tenant_update ON "crm_leads";
|
|
DROP POLICY IF EXISTS crm_leads_tenant_delete ON "crm_leads";
|
|
|
|
CREATE POLICY crm_leads_tenant_select ON "crm_leads"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_leads_tenant_insert ON "crm_leads"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_leads_tenant_update ON "crm_leads"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_leads_tenant_delete ON "crm_leads"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_opportunities policies
|
|
DROP POLICY IF EXISTS crm_opportunities_tenant_select ON "crm_opportunities";
|
|
DROP POLICY IF EXISTS crm_opportunities_tenant_insert ON "crm_opportunities";
|
|
DROP POLICY IF EXISTS crm_opportunities_tenant_update ON "crm_opportunities";
|
|
DROP POLICY IF EXISTS crm_opportunities_tenant_delete ON "crm_opportunities";
|
|
|
|
CREATE POLICY crm_opportunities_tenant_select ON "crm_opportunities"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_opportunities_tenant_insert ON "crm_opportunities"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_opportunities_tenant_update ON "crm_opportunities"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_opportunities_tenant_delete ON "crm_opportunities"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|
|
|
|
-- crm_proposals policies
|
|
DROP POLICY IF EXISTS crm_proposals_tenant_select ON "crm_proposals";
|
|
DROP POLICY IF EXISTS crm_proposals_tenant_insert ON "crm_proposals";
|
|
DROP POLICY IF EXISTS crm_proposals_tenant_update ON "crm_proposals";
|
|
DROP POLICY IF EXISTS crm_proposals_tenant_delete ON "crm_proposals";
|
|
|
|
CREATE POLICY crm_proposals_tenant_select ON "crm_proposals"
|
|
FOR SELECT USING (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_proposals_tenant_insert ON "crm_proposals"
|
|
FOR INSERT WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_proposals_tenant_update ON "crm_proposals"
|
|
FOR UPDATE USING (tenant_id = get_current_tenant_id())
|
|
WITH CHECK (tenant_id = get_current_tenant_id());
|
|
|
|
CREATE POLICY crm_proposals_tenant_delete ON "crm_proposals"
|
|
FOR DELETE USING (tenant_id = get_current_tenant_id());
|