mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 20:54:03 +00:00
Scope queries using Postgres RLS (WIP)
This commit is contained in:
parent
3c098dc78e
commit
17d779e130
6 changed files with 71 additions and 33 deletions
|
|
@ -43,5 +43,20 @@ class CreatePostgresUserForTenant implements ShouldQueue
|
|||
if (! count(DB::select("SELECT usename FROM pg_user WHERE usename = '$name';")) > 0) {
|
||||
DB::statement("CREATE USER \"$name\" LOGIN PASSWORD '$password';");
|
||||
}
|
||||
|
||||
$this->grantPermissions($name);
|
||||
}
|
||||
|
||||
protected function grantPermissions(string $userName): void
|
||||
{
|
||||
/**
|
||||
* @var \Stancl\Tenancy\Database\Contracts\StatefulTenantDatabaseManager $databaseManager
|
||||
*/
|
||||
$databaseManager = $this->tenant->database()->manager();
|
||||
foreach (array_map(fn (string $modelName) => (new $modelName), config('tenancy.models.rls')) as $model) {
|
||||
$table = $model->getTable();
|
||||
|
||||
$databaseManager->database()->statement("GRANT ALL ON {$table} TO \"{$userName}\"");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue