module TenantLevelSecurity::SchemaStatements
Public Instance Methods
create_policy(table_name)
click to toggle source
# File lib/activerecord-tenant-level-security/schema_statements.rb, line 3 def create_policy(table_name) execute <<~SQL ALTER TABLE #{table_name} ENABLE ROW LEVEL SECURITY; ALTER TABLE #{table_name} FORCE ROW LEVEL SECURITY; SQL execute <<~SQL CREATE POLICY tenant_policy ON #{table_name} AS PERMISSIVE FOR ALL TO PUBLIC USING (tenant_id::text = current_setting('tenant_level_security.tenant_id')) WITH CHECK (tenant_id::text = current_setting('tenant_level_security.tenant_id')) SQL end
remove_policy(table_name)
click to toggle source
# File lib/activerecord-tenant-level-security/schema_statements.rb, line 18 def remove_policy(table_name) execute <<~SQL ALTER TABLE #{table_name} NO FORCE ROW LEVEL SECURITY; ALTER TABLE #{table_name} DISABLE ROW LEVEL SECURITY; SQL execute <<~SQL DROP POLICY tenant_policy ON #{table_name} SQL end