Files
SGF/scripts/verify-foundation.php

24 lines
1.3 KiB
PHP

<?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";