Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/RLS/PolicyManagers/TableRLSManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ protected function generateQuery(string $table, array $path): string

if ($table === tenancy()->model()->getTable()) {
// Convert tenant key to text to match the session variable type
$query .= "{$column}::text = current_setting('{$sessionTenantKey}')\n";
$query .= "{$column}::text = (select current_setting('{$sessionTenantKey}'))\n";
continue;
}

Expand Down
4 changes: 2 additions & 2 deletions src/RLS/PolicyManagers/TraitRLSManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ protected function generateDirectRLSPolicyQuery(Model $model): string

return <<<SQL
CREATE POLICY {$table}_rls_policy ON {$table} USING (
{$tenantKeyColumn}::text = current_setting('{$sessionTenantKey}')
{$tenantKeyColumn}::text = (select current_setting('{$sessionTenantKey}'))
);
SQL;
}
Expand All @@ -87,7 +87,7 @@ protected function generateIndirectRLSPolicyQuery(Model $model, BelongsTo $paren
{$parentRelationship->getForeignKeyName()} IN (
SELECT {$parent->getKeyName()}
FROM {$parent->getTable()}
WHERE {$tenantKeyColumn}::text = current_setting('{$sessionTenantKey}')
WHERE {$tenantKeyColumn}::text = (select current_setting('{$sessionTenantKey}'))
)
);
SQL;
Expand Down
12 changes: 6 additions & 6 deletions tests/RLS/TableManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -582,15 +582,15 @@
expect(array_values(app(TableRLSManager::class)->generateQueries()))->toEqualCanonicalizing([
<<<SQL
CREATE POLICY authors_rls_policy ON authors USING (
tenant_id::text = current_setting('my.current_tenant')
tenant_id::text = (select current_setting('my.current_tenant'))
);
SQL,
<<<SQL
CREATE POLICY posts_rls_policy ON posts USING (
author_id IN (
SELECT id
FROM authors
WHERE tenant_id::text = current_setting('my.current_tenant')
WHERE tenant_id::text = (select current_setting('my.current_tenant'))
)
);
SQL,
Expand All @@ -602,7 +602,7 @@
WHERE author_id IN (
SELECT id
FROM authors
WHERE tenant_id::text = current_setting('my.current_tenant')
WHERE tenant_id::text = (select current_setting('my.current_tenant'))
)
)
);
Expand Down Expand Up @@ -652,15 +652,15 @@
expect(app(TableRLSManager::class)->generateQueries($paths))->toContain(
<<<SQL
CREATE POLICY primaries_rls_policy ON primaries USING (
tenant_id::text = current_setting('my.current_tenant')
tenant_id::text = (select current_setting('my.current_tenant'))
);
SQL,
<<<SQL
CREATE POLICY secondaries_rls_policy ON secondaries USING (
primary_id IN (
SELECT id
FROM primaries
WHERE tenant_id::text = current_setting('my.current_tenant')
WHERE tenant_id::text = (select current_setting('my.current_tenant'))
)
);
SQL,
Expand All @@ -672,7 +672,7 @@
WHERE primary_id IN (
SELECT id
FROM primaries
WHERE tenant_id::text = current_setting('my.current_tenant')
WHERE tenant_id::text = (select current_setting('my.current_tenant'))
)
)
);
Expand Down
4 changes: 2 additions & 2 deletions tests/RLS/TraitManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -279,15 +279,15 @@
expect($manager->generateQueries())->toContain(
<<<SQL
CREATE POLICY posts_rls_policy ON posts USING (
tenant_id::text = current_setting('my.current_tenant')
tenant_id::text = (select current_setting('my.current_tenant'))
);
SQL,
<<<SQL
CREATE POLICY comments_rls_policy ON comments USING (
post_id IN (
SELECT id
FROM posts
WHERE tenant_id::text = current_setting('my.current_tenant')
WHERE tenant_id::text = (select current_setting('my.current_tenant'))
)
);
SQL,
Expand Down
Loading