diff --git a/assets/config.php b/assets/config.php index 3875aca1..661aa07a 100644 --- a/assets/config.php +++ b/assets/config.php @@ -2,7 +2,6 @@ declare(strict_types=1); -use Stancl\Tenancy\CacheManager; use Stancl\Tenancy\Middleware; use Stancl\Tenancy\Resolvers; @@ -11,6 +10,10 @@ return [ * Configuration for the models used by Tenancy. */ 'models' => [ + 'rls' => [ + // The tenants:create-rls-policies comand will create RLS policies + // For tables of the models specified here + ], 'tenant' => Stancl\Tenancy\Database\Models\Tenant::class, 'domain' => Stancl\Tenancy\Database\Models\Domain::class, diff --git a/tests/PostgresTest.php b/tests/PostgresTest.php index 3684759d..40914e04 100644 --- a/tests/PostgresTest.php +++ b/tests/PostgresTest.php @@ -4,11 +4,13 @@ declare(strict_types=1); use Illuminate\Support\Facades\DB; use Stancl\Tenancy\Tests\Etc\Tenant; -use Stancl\Tenancy\Jobs\CreatePostgresUserForTenant; use Stancl\Tenancy\Jobs\DeleteTenantsPostgresUser; +use Stancl\Tenancy\Jobs\CreatePostgresUserForTenant; beforeEach(function () { DB::setDefaultConnection('pgsql'); + + config(['tenancy.models.tenant' => Tenant::class]); }); test('postgres user can get created using the job', function() { @@ -40,5 +42,15 @@ test('postgres user can get deleted using the job', function() { }); test('correct rls policies get created using the command', function() { + config([ + 'tenancy.models.rls' => $rlsModels = [ + Post::class, // Primary model (directly belongs to tenant) + Comment::class, // Secondary model (belongs to tenant through Post) + ], + ]); + $getRlsPolicies = fn () => DB::select('select * from pg_policies'); + expect($getRlsPolicies())->toHaveCount(0); + pest()->artisan('tenants:create-rls-policies'); + expect($getRlsPolicies())->toHaveCount(count($rlsModels)); });