Preserva base local aceite de identidade e acessos
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Contracts\Console\Kernel;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
require __DIR__.'/../vendor/autoload.php';
|
||||
$app = require __DIR__.'/../bootstrap/app.php';
|
||||
$app->make(Kernel::class)->bootstrap();
|
||||
$identity = DB::selectOne('SELECT current_database() AS db, current_user AS role');
|
||||
$privileges = DB::selectOne("SELECT rolsuper, rolcreatedb, rolcreaterole, rolbypassrls FROM pg_roles WHERE rolname = current_user");
|
||||
$ddl = DB::selectOne("SELECT has_schema_privilege(current_user, 'public', 'CREATE') AS allowed");
|
||||
$crossDatabase = DB::selectOne("SELECT has_database_privilege(current_user, 'sgf_tempo_test', 'CONNECT') AS allowed");
|
||||
if ($identity->db !== 'sgf_tempo_dev' || $identity->role !== 'sgf_dev_app'
|
||||
|| $privileges->rolsuper || $privileges->rolcreatedb || $privileges->rolcreaterole
|
||||
|| $privileges->rolbypassrls || $ddl->allowed || $crossDatabase->allowed) {
|
||||
fwrite(STDERR, "Development database identity/privilege check failed.\n");
|
||||
exit(1);
|
||||
}
|
||||
if (DB::table('users')->where('email', 'like', '%@example.test')->exists()) {
|
||||
fwrite(STDERR, "Synthetic test accounts must not be present in development.\n");
|
||||
exit(1);
|
||||
}
|
||||
echo "Development connection: sgf_dev_app; no administration, schema creation or test database access. No test fixtures in development.\n";
|
||||
Reference in New Issue
Block a user