From 1bbdcbe970175d3d2f51fa487c9352dafd91822d Mon Sep 17 00:00:00 2001 From: Ram Date: Sat, 29 Aug 2026 19:12:01 +0530 Subject: [PATCH 01/13] feat: Add DevContainer and Codespaces support - Add .devcontainer configuration for VS Code and Codespaces - Add xdebug to bewelcome_php_dev stage for local debugging --- .devcontainer/devcontainer.json | 56 ++++++++++++++++++++++++++ Dockerfile | 5 ++- docker/php/conf.d/bewelcome.xdebug.ini | 6 +++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 docker/php/conf.d/bewelcome.xdebug.ini diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..6ff5aa4ae --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,56 @@ +{ + "name": "BeWelcome Rox (Docker Master)", + "dockerComposeFile": [ + "../docker-compose.yml", + "../docker-compose.override.yml.dist" + ], + "service": "php", + "workspaceFolder": "/srv/bewelcome", + "overrideCommand": false, + "forwardPorts": [80, 1080, 9306, 9308], + "portsAttributes": { + "80": { + "label": "BeWelcome App (Nginx)", + "onAutoForward": "openBrowser" + }, + "1080": { + "label": "MailCatcher Web UI", + "onAutoForward": "notify" + }, + "9306": { + "label": "Manticore MySQL protocol", + "onAutoForward": "silent" + }, + "9308": { + "label": "Manticore HTTP API", + "onAutoForward": "silent" + } + }, + "postCreateCommand": "bzip2 -ckd docker/languages.sql.bz2 > docker/db/languages.sql && bzip2 -ckd docker/words.sql.bz2 > docker/db/words.sql", + "customizations": { + "vscode": { + "extensions": [ + "bmewburn.vscode-intelephense-client", + "xdebug.php-debug", + "symfony-vscode.symfony-vscode", + "bradlc.vscode-tailwindcss", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "mikestead.dotenv", + "ms-azuretools.vscode-docker", + "GitHub.vscode-pull-request-github" + ], + "settings": { + "php.suggest.basic": false, + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[php]": { + "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" + }, + "intelephense.environment.phpVersion": "8.4.0", + "intelephense.files.maxSize": 5000000, + "xdebug.remote_enable": true + } + } + } +} diff --git a/Dockerfile b/Dockerfile index 6002873c6..0227b8873 100644 --- a/Dockerfile +++ b/Dockerfile @@ -187,4 +187,7 @@ ARG NODE_ENV=production RUN set -eux; \ apk add --no-cache \ make \ - mysql-client + mysql-client; \ + install-php-extensions xdebug + +COPY docker/php/conf.d/bewelcome.xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini diff --git a/docker/php/conf.d/bewelcome.xdebug.ini b/docker/php/conf.d/bewelcome.xdebug.ini new file mode 100644 index 000000000..cb05a630c --- /dev/null +++ b/docker/php/conf.d/bewelcome.xdebug.ini @@ -0,0 +1,6 @@ +; Xdebug configuration for development +; Disabled by default for performance. To enable, you can set XDEBUG_MODE=debug +xdebug.mode=off +xdebug.client_host=host.docker.internal +xdebug.start_with_request=yes +xdebug.discover_client_host=1 From 69f69f4ec211e3696e0c03d74e8d04ca9cda3dd4 Mon Sep 17 00:00:00 2001 From: Ram Date: Sat, 29 Aug 2026 19:38:19 +0530 Subject: [PATCH 02/13] chore: explicitly define Codespaces hostRequirements --- .devcontainer/devcontainer.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 6ff5aa4ae..5cc64309f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,4 +1,4 @@ -{ +{ "name": "BeWelcome Rox (Docker Master)", "dockerComposeFile": [ "../docker-compose.yml", @@ -27,6 +27,11 @@ } }, "postCreateCommand": "bzip2 -ckd docker/languages.sql.bz2 > docker/db/languages.sql && bzip2 -ckd docker/words.sql.bz2 > docker/db/words.sql", + "hostRequirements": { + "cpus": 2, + "memory": "4gb", + "storage": "32gb" + }, "customizations": { "vscode": { "extensions": [ From 2056b5aae10db014e2b5ff02193ad87f8b9ce7d5 Mon Sep 17 00:00:00 2001 From: Ram Date: Sat, 29 Aug 2026 22:13:57 +0530 Subject: [PATCH 03/13] chore: replace mailcatcher with mailpit for local dev --- .devcontainer/devcontainer.json | 2 +- docker-compose.yml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5cc64309f..b4f29cc53 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,7 +14,7 @@ "onAutoForward": "openBrowser" }, "1080": { - "label": "MailCatcher Web UI", + "label": "MailPit Web UI", "onAutoForward": "notify" }, "9306": { diff --git a/docker-compose.yml b/docker-compose.yml index 8f8f29efb..6b00322b7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -60,7 +60,10 @@ services: - ./data:/var/lib/manticore mailer: - image: tophfr/mailcatcher + image: axllent/mailpit + environment: + MP_SMTP_BIND_ADDR: "0.0.0.0:25" + MP_UI_BIND_ADDR: "0.0.0.0:80" volumes: db-data: {} From 70184c8d2395adb66b5062995e3e1a35e87384a0 Mon Sep 17 00:00:00 2001 From: Ram Date: Sun, 30 Aug 2026 13:24:09 +0530 Subject: [PATCH 04/13] Fix DevContainer build, LF endings via .gitattributes, and autowiring --- .env | 4 + .gitattributes | 4 + Dockerfile | 2 + behat.yml.dist | 11 +- composer.json | 2 +- composer.lock | 416 ++++++++++++++++++++++++++++--------------- config/services.yaml | 3 + 7 files changed, 287 insertions(+), 155 deletions(-) create mode 100644 .gitattributes diff --git a/.env b/.env index aff1f5bf6..982e9d766 100644 --- a/.env +++ b/.env @@ -50,3 +50,7 @@ JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem JWT_PASSPHRASE=02567efd63a56b25644e9b52815ce880 ###< lexik/jwt-authentication-bundle ### + +SYMFONY_TRUSTED_PROXIES=REMOTE_ADDR + +SYMFONY_TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..277d997c8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +* text=auto +*.sh text eol=lf +bin/console text eol=lf +.env text eol=lf diff --git a/Dockerfile b/Dockerfile index 0227b8873..52e0f7f95 100644 --- a/Dockerfile +++ b/Dockerfile @@ -184,6 +184,8 @@ FROM bewelcome_php AS bewelcome_php_dev # build for production ARG NODE_ENV=production +COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ + RUN set -eux; \ apk add --no-cache \ make \ diff --git a/behat.yml.dist b/behat.yml.dist index 5d70c2369..a22342f44 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -2,7 +2,7 @@ default: suites: default: contexts: - - 'Alex\MailCatcher\Behat\MailCatcherContext': ~ + - 'Consensus\Behat\MailpitExtension\Context\MailpitContext': ~ - 'App\Tests\Behat\DatabaseContext': ~ - 'App\Tests\Behat\RefreshTokenContext': ~ - 'App\Tests\Behat\SecurityContext': ~ @@ -19,11 +19,10 @@ default: symfony: ~ 'Behatch\Extension': ~ 'FriendsOfBehat\SymfonyExtension': ~ - 'Alex\MailCatcher\Behat\MailCatcherExtension\Extension': - url: http://mailcatcher - purge_before_scenario: true + 'Consensus\Behat\MailpitExtension': + base_url: http://mailer:80 localhost: extensions: - 'Alex\MailCatcher\Behat\MailCatcherExtension\Extension': - url: http://localhost:1080 + 'Consensus\Behat\MailpitExtension': + base_url: http://localhost:1080 diff --git a/composer.json b/composer.json index 57a319c18..8ccba4ffb 100644 --- a/composer.json +++ b/composer.json @@ -92,9 +92,9 @@ "symfony/symfony": "*" }, "require-dev": { - "alexandresalome/mailcatcher": "^1.3", "behat/behat": "^3.7", "behatch/contexts": "^3.3", + "consensus/behat-mailpit-extension": "dev-main", "dama/doctrine-test-bundle": "^6.3", "doctrine/data-fixtures": "^1.3", "fakerphp/faker": "^v1.14.1", diff --git a/composer.lock b/composer.lock index 6f483e659..aba197169 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "80a687a6d3730b9e6a6074d478692314", + "content-hash": "88d5cf29600904fc5515b08b93a7a89c", "packages": [ { "name": "amphp/amp", @@ -11519,109 +11519,6 @@ ], "time": "2026-05-24T10:45:48+00:00" }, - { - "name": "symfony/serializer", - "version": "v5.4.45", - "source": { - "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "460c5df9fb6c39d10d5b7f386e4feae4b6370221" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/460c5df9fb6c39d10d5b7f386e4feae4b6370221", - "reference": "460c5df9fb6c39d10d5b7f386e4feae4b6370221", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4.24|>=6,<6.2.11", - "symfony/uid": "<5.3", - "symfony/yaml": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^5.4.26|^6.3", - "symfony/property-info": "^5.4.24|^6.2.11", - "symfony/uid": "^5.3|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Serializer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/serializer/tree/v5.4.45" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:11:13+00:00" - }, { "name": "symfony/service-contracts", "version": "v2.5.4", @@ -13574,48 +13471,6 @@ } ], "packages-dev": [ - { - "name": "alexandresalome/mailcatcher", - "version": "v1.4.1", - "target-dir": "Alex/MailCatcher", - "source": { - "type": "git", - "url": "https://github.com/alexandresalome/mailcatcher.git", - "reference": "90ee943e91021a065f8ff9ed8e3f7b7d8ae7256d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/alexandresalome/mailcatcher/zipball/90ee943e91021a065f8ff9ed8e3f7b7d8ae7256d", - "reference": "90ee943e91021a065f8ff9ed8e3f7b7d8ae7256d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=5.3.3", - "symfony/dom-crawler": "~2.3 || ~3.0 || ~4.0 || ~5.0 || ~6.0 || ~7.0" - }, - "require-dev": { - "behat/behat": "~3.0", - "phpunit/phpunit": "~4.6", - "swiftmailer/swiftmailer": "~5.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Alex\\MailCatcher": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A library to access MailCatcher", - "support": { - "issues": "https://github.com/alexandresalome/mailcatcher/issues", - "source": "https://github.com/alexandresalome/mailcatcher/tree/v1.4.1" - }, - "time": "2024-03-29T15:42:38+00:00" - }, { "name": "behat/behat", "version": "v3.32.0", @@ -14079,6 +13934,57 @@ ], "time": "2022-02-24T20:20:32+00:00" }, + { + "name": "consensus/behat-mailpit-extension", + "version": "dev-main", + "source": { + "type": "git", + "url": "https://gitlab.com/consensus.enterprises/misc/behat-mailpit-extension.git", + "reference": "89d3f16e07afb950d3b7836f6efce6a6526348a8" + }, + "dist": { + "type": "zip", + "url": "https://gitlab.com/api/v4/projects/consensus%2Eenterprises%2Fmisc%2Fbehat-mailpit-extension/repository/archive.zip?sha=89d3f16e07afb950d3b7836f6efce6a6526348a8", + "reference": "89d3f16e07afb950d3b7836f6efce6a6526348a8", + "shasum": "" + }, + "require": { + "behat/behat": "^3.14", + "friends-of-behat/mink-extension": "^2.7", + "guzzlehttp/guzzle": "^7.0", + "php": "^8.0" + }, + "require-dev": { + "squizlabs/php_codesniffer": "^3.0" + }, + "default-branch": true, + "type": "package", + "autoload": { + "psr-4": { + "Consensus\\Behat\\MailpitExtension\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "authors": [ + { + "name": "Christopher Gervais", + "email": "christopher@consensus.enterprises" + }, + { + "name": "Scott Zhu Reeves", + "email": "scott@consensus.enterprises" + } + ], + "description": "Behat Mailpit Extension", + "support": { + "issues": "https://gitlab.com/consensus.enterprises/misc/behat-mailpit-extension/-/issues", + "source": "https://gitlab.com/consensus.enterprises/misc/behat-mailpit-extension/-/tree/main" + }, + "time": "2025-06-10T14:21:03+00:00" + }, { "name": "dama/doctrine-test-bundle", "version": "v6.7.5", @@ -14644,6 +14550,218 @@ ], "time": "2021-12-11T16:25:08+00:00" }, + { + "name": "guzzlehttp/guzzle", + "version": "7.15.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "994a8a073c61d9c2282155e7671c0bc14bba19da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/994a8a073c61d9c2282155e7671c0bc14bba19da", + "reference": "994a8a073c61d9c2282155e7671c0bc14bba19da", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^2.5.2", + "guzzlehttp/psr7": "^2.13", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/polyfill-php80": "^1.25" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.3", + "guzzlehttp/test-server": "^0.7", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.52 || ^9.6.34", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.15.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2026-08-24T09:16:39+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.5.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/cde49999552d185d64715fe9c1f77a2aadd2f9f1", + "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.52 || ^9.6.34" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.5.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2026-08-24T09:11:28+00:00" + }, { "name": "hamcrest/hamcrest-php", "version": "v2.1.1", @@ -17570,7 +17688,9 @@ ], "aliases": [], "minimum-stability": "RC", - "stability-flags": {}, + "stability-flags": { + "consensus/behat-mailpit-extension": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -17590,7 +17710,7 @@ }, "platform-dev": {}, "platform-overrides": { - "php": "8.2" + "php": "8.3" }, "plugin-api-version": "2.9.0" } diff --git a/config/services.yaml b/config/services.yaml index acddb15f7..ab6463e53 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -40,6 +40,9 @@ services: # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name + App\Form\DataTransformer\: + resource: '../src/Form/DataTransformer/*' + App\: resource: '../src/*' exclude: '../src/{DependencyInjection,Entity,Migrations,Model/MemberDataExtractor/DoctrineExtractor.php,Twig,Tests,Kernel.php}' From 9c34608ac7f40c1514d8172923d5edd025e262b4 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 15:11:32 +0530 Subject: [PATCH 05/13] fix: resolve PR #484 feedback (target, BOM, env, DB crash tolerance) --- .devcontainer/devcontainer.json | 2 +- .env | 1 - Dockerfile | 8 +++++++- docker-compose.override.yml.dist | 2 ++ docker/php/conf.d/bewelcome.xdebug.ini | 2 +- docker/php/docker-entrypoint.sh | 8 ++++---- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b4f29cc53..7d6fa50ad 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -26,7 +26,7 @@ "onAutoForward": "silent" } }, - "postCreateCommand": "bzip2 -ckd docker/languages.sql.bz2 > docker/db/languages.sql && bzip2 -ckd docker/words.sql.bz2 > docker/db/words.sql", + "hostRequirements": { "cpus": 2, "memory": "4gb", diff --git a/.env b/.env index 982e9d766..dc66c33a4 100644 --- a/.env +++ b/.env @@ -51,6 +51,5 @@ JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem JWT_PASSPHRASE=02567efd63a56b25644e9b52815ce880 ###< lexik/jwt-authentication-bundle ### -SYMFONY_TRUSTED_PROXIES=REMOTE_ADDR SYMFONY_TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 diff --git a/Dockerfile b/Dockerfile index 52e0f7f95..d6ca9b5c7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -189,7 +189,13 @@ COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr RUN set -eux; \ apk add --no-cache \ make \ - mysql-client; \ + mysql-client \ + libstdc++ \ + gcompat \ + bash \ + wget \ + nodejs \ + procps; \ install-php-extensions xdebug COPY docker/php/conf.d/bewelcome.xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini diff --git a/docker-compose.override.yml.dist b/docker-compose.override.yml.dist index 20411d1fd..d250a7171 100644 --- a/docker-compose.override.yml.dist +++ b/docker-compose.override.yml.dist @@ -2,6 +2,8 @@ # Not used by the beta or production stacks. services: php: + build: + target: bewelcome_php_dev volumes: - .:/srv/bewelcome:rw,cached - ./docker/php/conf.d/bewelcome.dev.ini:/usr/local/etc/php/conf.d/bewelcome.ini diff --git a/docker/php/conf.d/bewelcome.xdebug.ini b/docker/php/conf.d/bewelcome.xdebug.ini index cb05a630c..20ce85ae0 100644 --- a/docker/php/conf.d/bewelcome.xdebug.ini +++ b/docker/php/conf.d/bewelcome.xdebug.ini @@ -1,4 +1,4 @@ -; Xdebug configuration for development +; Xdebug configuration for development ; Disabled by default for performance. To enable, you can set XDEBUG_MODE=debug xdebug.mode=off xdebug.client_host=host.docker.internal diff --git a/docker/php/docker-entrypoint.sh b/docker/php/docker-entrypoint.sh index 206d8fa49..398327128 100755 --- a/docker/php/docker-entrypoint.sh +++ b/docker/php/docker-entrypoint.sh @@ -74,16 +74,16 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then done if [ "$APP_ENV" != 'prod' ]; then - bin/console test:database:create --drop --force --no-interaction + bin/console test:database:create --drop --force --no-interaction || true if [ -f docker/db/languages.sql ]; then - mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/languages.sql + mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/languages.sql || true fi if [ -f docker/db/words.sql ]; then - mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/words.sql + mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/words.sql || true fi if [ -f docker/db/geonamesadminunits.sql ]; then - mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/geonamesadminunits.sql + mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/geonamesadminunits.sql || true fi fi From aaa3d0360e831e157ab52cc5b2c999123c8ef244 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 17:57:56 +0530 Subject: [PATCH 06/13] Fix DevContainer ports, SQL crash loops, and redundant services --- .devcontainer/devcontainer.json | 2 +- config/services.yaml | 3 --- docker-compose.override.yml.dist | 6 ++++++ docker/php/docker-entrypoint.sh | 26 ++++++++++++++++---------- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7d6fa50ad..ea24427e4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -52,7 +52,7 @@ "[php]": { "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" }, - "intelephense.environment.phpVersion": "8.4.0", + "intelephense.environment.phpVersion": "8.3.0", "intelephense.files.maxSize": 5000000, "xdebug.remote_enable": true } diff --git a/config/services.yaml b/config/services.yaml index ab6463e53..acddb15f7 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -40,9 +40,6 @@ services: # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name - App\Form\DataTransformer\: - resource: '../src/Form/DataTransformer/*' - App\: resource: '../src/*' exclude: '../src/{DependencyInjection,Entity,Migrations,Model/MemberDataExtractor/DoctrineExtractor.php,Twig,Tests,Kernel.php}' diff --git a/docker-compose.override.yml.dist b/docker-compose.override.yml.dist index d250a7171..839d4d8ba 100644 --- a/docker-compose.override.yml.dist +++ b/docker-compose.override.yml.dist @@ -11,5 +11,11 @@ services: # - ./var:/srv/bewelcome/var:rw web: + ports: + - "80:80" volumes: - ./public:/srv/bewelcome/public:ro + + mailer: + ports: + - "1080:80" diff --git a/docker/php/docker-entrypoint.sh b/docker/php/docker-entrypoint.sh index 398327128..a07c4d01e 100755 --- a/docker/php/docker-entrypoint.sh +++ b/docker/php/docker-entrypoint.sh @@ -74,16 +74,22 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then done if [ "$APP_ENV" != 'prod' ]; then - bin/console test:database:create --drop --force --no-interaction || true - - if [ -f docker/db/languages.sql ]; then - mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/languages.sql || true - fi - if [ -f docker/db/words.sql ]; then - mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/words.sql || true - fi - if [ -f docker/db/geonamesadminunits.sql ]; then - mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/geonamesadminunits.sql || true + if ! bin/console test:database:create --drop --force --no-interaction; then + echo "=========================================================" >&2 + echo " ERROR: Database creation failed!" >&2 + echo " Skipping SQL imports to avoid swallowing real errors." >&2 + echo " Please fix the schema and run bin/console test:database:create manually." >&2 + echo "=========================================================" >&2 + else + if [ -f docker/db/languages.sql ]; then + mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/languages.sql || echo "ERROR: Failed to import languages.sql" >&2 + fi + if [ -f docker/db/words.sql ]; then + mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/words.sql || echo "ERROR: Failed to import words.sql" >&2 + fi + if [ -f docker/db/geonamesadminunits.sql ]; then + mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/geonamesadminunits.sql || echo "ERROR: Failed to import geonamesadminunits.sql" >&2 + fi fi fi From 7594fa7835ee922170a2b13fa7e2ebfda3cd13c4 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 18:14:58 +0530 Subject: [PATCH 07/13] fix: download DB seed files and remove mailpit extension --- .devcontainer/devcontainer.json | 2 +- composer.json | 1 - composer.lock | 273 +------------------------------- 3 files changed, 5 insertions(+), 271 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ea24427e4..da71ef371 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -26,7 +26,7 @@ "onAutoForward": "silent" } }, - + "postCreateCommand": "curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/languages.sql.bz2 -o ./docker/db/languages.sql.bz2 && curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/words.sql.bz2 -o ./docker/db/words.sql.bz2 && bunzip2 --force ./docker/db/languages.sql.bz2 ./docker/db/words.sql.bz2", "hostRequirements": { "cpus": 2, "memory": "4gb", diff --git a/composer.json b/composer.json index 8ccba4ffb..3c90d96f2 100644 --- a/composer.json +++ b/composer.json @@ -94,7 +94,6 @@ "require-dev": { "behat/behat": "^3.7", "behatch/contexts": "^3.3", - "consensus/behat-mailpit-extension": "dev-main", "dama/doctrine-test-bundle": "^6.3", "doctrine/data-fixtures": "^1.3", "fakerphp/faker": "^v1.14.1", diff --git a/composer.lock b/composer.lock index aba197169..78a21f63e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "88d5cf29600904fc5515b08b93a7a89c", + "content-hash": "9293e38faec90489d1977fb4f2f59d8f", "packages": [ { "name": "amphp/amp", @@ -13934,57 +13934,6 @@ ], "time": "2022-02-24T20:20:32+00:00" }, - { - "name": "consensus/behat-mailpit-extension", - "version": "dev-main", - "source": { - "type": "git", - "url": "https://gitlab.com/consensus.enterprises/misc/behat-mailpit-extension.git", - "reference": "89d3f16e07afb950d3b7836f6efce6a6526348a8" - }, - "dist": { - "type": "zip", - "url": "https://gitlab.com/api/v4/projects/consensus%2Eenterprises%2Fmisc%2Fbehat-mailpit-extension/repository/archive.zip?sha=89d3f16e07afb950d3b7836f6efce6a6526348a8", - "reference": "89d3f16e07afb950d3b7836f6efce6a6526348a8", - "shasum": "" - }, - "require": { - "behat/behat": "^3.14", - "friends-of-behat/mink-extension": "^2.7", - "guzzlehttp/guzzle": "^7.0", - "php": "^8.0" - }, - "require-dev": { - "squizlabs/php_codesniffer": "^3.0" - }, - "default-branch": true, - "type": "package", - "autoload": { - "psr-4": { - "Consensus\\Behat\\MailpitExtension\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-3.0-or-later" - ], - "authors": [ - { - "name": "Christopher Gervais", - "email": "christopher@consensus.enterprises" - }, - { - "name": "Scott Zhu Reeves", - "email": "scott@consensus.enterprises" - } - ], - "description": "Behat Mailpit Extension", - "support": { - "issues": "https://gitlab.com/consensus.enterprises/misc/behat-mailpit-extension/-/issues", - "source": "https://gitlab.com/consensus.enterprises/misc/behat-mailpit-extension/-/tree/main" - }, - "time": "2025-06-10T14:21:03+00:00" - }, { "name": "dama/doctrine-test-bundle", "version": "v6.7.5", @@ -14550,218 +14499,6 @@ ], "time": "2021-12-11T16:25:08+00:00" }, - { - "name": "guzzlehttp/guzzle", - "version": "7.15.4", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "994a8a073c61d9c2282155e7671c0bc14bba19da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/994a8a073c61d9c2282155e7671c0bc14bba19da", - "reference": "994a8a073c61d9c2282155e7671c0bc14bba19da", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^2.5.2", - "guzzlehttp/psr7": "^2.13", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.5 || ^3.0", - "symfony/polyfill-php80": "^1.25" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-curl": "*", - "guzzle/client-integration-tests": "3.0.3", - "guzzlehttp/test-server": "^0.7", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.52 || ^9.6.34", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.15.4" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2026-08-24T09:16:39+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "2.5.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/cde49999552d185d64715fe9c1f77a2aadd2f9f1", - "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/deprecation-contracts": "^2.5 || ^3.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.52 || ^9.6.34" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.5.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "time": "2026-08-24T09:11:28+00:00" - }, { "name": "hamcrest/hamcrest-php", "version": "v2.1.1", @@ -17688,9 +17425,7 @@ ], "aliases": [], "minimum-stability": "RC", - "stability-flags": { - "consensus/behat-mailpit-extension": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -17708,9 +17443,9 @@ "ext-xsl": "*", "ext-zip": "*" }, - "platform-dev": {}, + "platform-dev": [], "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.9.0" + "plugin-api-version": "2.6.0" } From a68f3269398a878e8779b668daf24fb433c3bf00 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 18:17:46 +0530 Subject: [PATCH 08/13] fix: restore DataTransformer registration that breaks cache:clear --- config/services.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/services.yaml b/config/services.yaml index acddb15f7..ab6463e53 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -40,6 +40,9 @@ services: # makes classes in src/ available to be used as services # this creates a service per class whose id is the fully-qualified class name + App\Form\DataTransformer\: + resource: '../src/Form/DataTransformer/*' + App\: resource: '../src/*' exclude: '../src/{DependencyInjection,Entity,Migrations,Model/MemberDataExtractor/DoctrineExtractor.php,Twig,Tests,Kernel.php}' From 1452f2580c128a0837a935c8e39c577dd963655d Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 18:26:02 +0530 Subject: [PATCH 09/13] fix: download DB seed files during entrypoint, not postCreateCommand Move curl/bunzip2 download of languages.sql and words.sql into docker-entrypoint.sh so the files are fetched before the import guards run on first boot. The previous postCreateCommand approach downloaded the files after container startup had already completed, meaning the imports were always silently skipped on first DevContainer creation. --- .devcontainer/devcontainer.json | 1 - docker/php/docker-entrypoint.sh | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index da71ef371..c5adb21a0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -26,7 +26,6 @@ "onAutoForward": "silent" } }, - "postCreateCommand": "curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/languages.sql.bz2 -o ./docker/db/languages.sql.bz2 && curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/words.sql.bz2 -o ./docker/db/words.sql.bz2 && bunzip2 --force ./docker/db/languages.sql.bz2 ./docker/db/words.sql.bz2", "hostRequirements": { "cpus": 2, "memory": "4gb", diff --git a/docker/php/docker-entrypoint.sh b/docker/php/docker-entrypoint.sh index a07c4d01e..6e1567881 100755 --- a/docker/php/docker-entrypoint.sh +++ b/docker/php/docker-entrypoint.sh @@ -81,6 +81,23 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then echo " Please fix the schema and run bin/console test:database:create manually." >&2 echo "=========================================================" >&2 else + # Download seed files if not already present (e.g. on first DevContainer boot) + if [ ! -f docker/db/languages.sql ] && [ ! -f docker/db/languages.sql.bz2 ]; then + echo "Downloading languages.sql seed file..." + curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/languages.sql.bz2 -o docker/db/languages.sql.bz2 \ + && bunzip2 docker/db/languages.sql.bz2 \ + || echo "WARNING: Failed to download languages.sql.bz2" >&2 + elif [ -f docker/db/languages.sql.bz2 ] && [ ! -f docker/db/languages.sql ]; then + bunzip2 docker/db/languages.sql.bz2 || echo "WARNING: Failed to decompress languages.sql.bz2" >&2 + fi + if [ ! -f docker/db/words.sql ] && [ ! -f docker/db/words.sql.bz2 ]; then + echo "Downloading words.sql seed file..." + curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/words.sql.bz2 -o docker/db/words.sql.bz2 \ + && bunzip2 docker/db/words.sql.bz2 \ + || echo "WARNING: Failed to download words.sql.bz2" >&2 + elif [ -f docker/db/words.sql.bz2 ] && [ ! -f docker/db/words.sql ]; then + bunzip2 docker/db/words.sql.bz2 || echo "WARNING: Failed to decompress words.sql.bz2" >&2 + fi if [ -f docker/db/languages.sql ]; then mysql $database_name -u $database_user -p$database_password -h $database_host < docker/db/languages.sql || echo "ERROR: Failed to import languages.sql" >&2 fi From ec66d3909f63131fdeea957f2b02b9e93f62a386 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 18:37:09 +0530 Subject: [PATCH 10/13] fix: use http for seed downloads to avoid SSL CN mismatch --- docker/php/docker-entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/php/docker-entrypoint.sh b/docker/php/docker-entrypoint.sh index 6e1567881..542aca27d 100755 --- a/docker/php/docker-entrypoint.sh +++ b/docker/php/docker-entrypoint.sh @@ -84,7 +84,7 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then # Download seed files if not already present (e.g. on first DevContainer boot) if [ ! -f docker/db/languages.sql ] && [ ! -f docker/db/languages.sql.bz2 ]; then echo "Downloading languages.sql seed file..." - curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/languages.sql.bz2 -o docker/db/languages.sql.bz2 \ + curl -sL http://downloads.bewelcome.org/for_developers/rox_test_db/languages.sql.bz2 -o docker/db/languages.sql.bz2 \ && bunzip2 docker/db/languages.sql.bz2 \ || echo "WARNING: Failed to download languages.sql.bz2" >&2 elif [ -f docker/db/languages.sql.bz2 ] && [ ! -f docker/db/languages.sql ]; then @@ -92,7 +92,7 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then fi if [ ! -f docker/db/words.sql ] && [ ! -f docker/db/words.sql.bz2 ]; then echo "Downloading words.sql seed file..." - curl -sL https://downloads.bewelcome.org/for_developers/rox_test_db/words.sql.bz2 -o docker/db/words.sql.bz2 \ + curl -sL http://downloads.bewelcome.org/for_developers/rox_test_db/words.sql.bz2 -o docker/db/words.sql.bz2 \ && bunzip2 docker/db/words.sql.bz2 \ || echo "WARNING: Failed to download words.sql.bz2" >&2 elif [ -f docker/db/words.sql.bz2 ] && [ ! -f docker/db/words.sql ]; then From 308fed0cd4781098fa7e62c417ad4c66456a4e11 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 18:37:41 +0530 Subject: [PATCH 11/13] chore: remove Mailpit extension context from behat.yml.dist --- behat.yml.dist | 7 ------- 1 file changed, 7 deletions(-) diff --git a/behat.yml.dist b/behat.yml.dist index a22342f44..2590f9c02 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -2,7 +2,6 @@ default: suites: default: contexts: - - 'Consensus\Behat\MailpitExtension\Context\MailpitContext': ~ - 'App\Tests\Behat\DatabaseContext': ~ - 'App\Tests\Behat\RefreshTokenContext': ~ - 'App\Tests\Behat\SecurityContext': ~ @@ -19,10 +18,4 @@ default: symfony: ~ 'Behatch\Extension': ~ 'FriendsOfBehat\SymfonyExtension': ~ - 'Consensus\Behat\MailpitExtension': - base_url: http://mailer:80 -localhost: - extensions: - 'Consensus\Behat\MailpitExtension': - base_url: http://localhost:1080 From ab0b52a452a7a619b50313ede5a160d46372ec40 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 19:02:41 +0530 Subject: [PATCH 12/13] chore: remove SYMFONY_TRUSTED_PROXIES from .env (save for separate PR) --- .env | 3 --- 1 file changed, 3 deletions(-) diff --git a/.env b/.env index dc66c33a4..aff1f5bf6 100644 --- a/.env +++ b/.env @@ -50,6 +50,3 @@ JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem JWT_PASSPHRASE=02567efd63a56b25644e9b52815ce880 ###< lexik/jwt-authentication-bundle ### - - -SYMFONY_TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 From f164b2f2f61112e322c00bfe40b66b432844d819 Mon Sep 17 00:00:00 2001 From: Ram Date: Tue, 1 Sep 2026 20:18:06 +0530 Subject: [PATCH 13/13] fix: make trusted_proxies optional, remove wget and obsolete xdebug setting --- .devcontainer/devcontainer.json | 3 +-- Dockerfile | 1 - config/packages/framework.yaml | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c5adb21a0..84a01e67b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -52,8 +52,7 @@ "editor.defaultFormatter": "bmewburn.vscode-intelephense-client" }, "intelephense.environment.phpVersion": "8.3.0", - "intelephense.files.maxSize": 5000000, - "xdebug.remote_enable": true + "intelephense.files.maxSize": 5000000 } } } diff --git a/Dockerfile b/Dockerfile index d6ca9b5c7..6085d0285 100644 --- a/Dockerfile +++ b/Dockerfile @@ -193,7 +193,6 @@ RUN set -eux; \ libstdc++ \ gcompat \ bash \ - wget \ nodejs \ procps; \ install-php-extensions xdebug diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 71195d3b2..83624c979 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -20,7 +20,7 @@ framework: #serializer: { enable_annotations: true } default_locale: "en" trusted_hosts: ~ - trusted_proxies: '%env(SYMFONY_TRUSTED_PROXIES)%' + trusted_proxies: '%env(string:default::SYMFONY_TRUSTED_PROXIES)%' trusted_headers: - x-forwarded-for - x-forwarded-host