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