diff --git a/docker/compose.yaml b/docker/compose.yaml index da4bb6f..3bc33dd 100644 --- a/docker/compose.yaml +++ b/docker/compose.yaml @@ -6,25 +6,27 @@ services: context: .. dockerfile: docker/php/Dockerfile args: - USER_ID: ${USER_ID:-1000} - GROUP_ID: ${GROUP_ID:-1000} + USER_ID: ${USER_ID} + GROUP_ID: ${GROUP_ID} container_name: escapepage-php volumes: - ../:/var/www/html:delegated - /etc/hosts:/etc/hosts:ro + env_file: + - ../.env environment: - APP_ENV: ${APP_ENV:-dev} - SITE_BASE_URL: ${SITE_BASE_URL:-https://escapepage.dev} - MAILER_DSN: ${MAILER_DSN:-smtp://mailer:1025} - MAILER_FROM: ${MAILER_FROM:-noreply@escapepage.dev} - DATABASE_URL: ${DATABASE_URL:-mysql://escapepage:b.0nqrxJ/D*Luf9N@database:3306/escapepage?serverVersion=8.0.32&charset=utf8mb4} - MERCURE_URL: ${MERCURE_URL:-http://mercure/.well-known/mercure} - MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL:-http://localhost:8090/.well-known/mercure} - MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET:-!ChangeThisMercureJWTSignedBySymfonySecretKey!} - MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS:-https://localhost:8443} - MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE:-https://escapepage.dev} - RECAPTCHA3_KEY: ${RECAPTCHA3_KEY:-my_site_key} - RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET:-my_secret} + APP_ENV: ${APP_ENV} + SITE_BASE_URL: ${SITE_BASE_URL} + MAILER_DSN: ${MAILER_DSN} + MAILER_FROM: ${MAILER_FROM} + DATABASE_URL: ${DATABASE_URL} + MERCURE_URL: ${MERCURE_URL} + MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL} + MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET} + MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS} + MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE} + RECAPTCHA3_KEY: ${RECAPTCHA3_KEY} + RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET} depends_on: - database - mercure @@ -38,25 +40,27 @@ services: context: .. dockerfile: docker/php/Dockerfile args: - USER_ID: ${USER_ID:-1000} - GROUP_ID: ${GROUP_ID:-1000} + USER_ID: ${USER_ID} + GROUP_ID: ${GROUP_ID} container_name: escapepage-php-worker volumes: - ../:/var/www/html:delegated - /etc/hosts:/etc/hosts:ro + env_file: + - ../.env environment: - APP_ENV: ${APP_ENV:-dev} - SITE_BASE_URL: ${SITE_BASE_URL:-https://escapepage.dev} - MAILER_DSN: ${MAILER_DSN:-smtp://mailer:1025} - MAILER_FROM: ${MAILER_FROM:-noreply@escapepage.dev} - DATABASE_URL: ${DATABASE_URL:-mysql://escapepage:b.0nqrxJ/D*Luf9N@database:3306/escapepage?serverVersion=8.0.32&charset=utf8mb4} - MERCURE_URL: ${MERCURE_URL:-http://mercure/.well-known/mercure} - MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL:-http://localhost:8090/.well-known/mercure} - MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET:-!ChangeThisMercureJWTSignedBySymfonySecretKey!} - MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS:-https://localhost:8443} - MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE:-https://escapepage.dev} - RECAPTCHA3_KEY: ${RECAPTCHA3_KEY:-my_site_key} - RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET:-my_secret} + APP_ENV: ${APP_ENV} + SITE_BASE_URL: ${SITE_BASE_URL} + MAILER_DSN: ${MAILER_DSN} + MAILER_FROM: ${MAILER_FROM} + DATABASE_URL: ${DATABASE_URL} + MERCURE_URL: ${MERCURE_URL} + MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL} + MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET} + MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS} + MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE} + RECAPTCHA3_KEY: ${RECAPTCHA3_KEY} + RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET} depends_on: - database - mercure @@ -99,14 +103,16 @@ services: mercure: image: dunglas/mercure:v0.21 container_name: escapepage-mercure + env_file: + - ../.env environment: SERVER_NAME: ":80" MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_JWT_SECRET} MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_JWT_SECRET} - MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS:-http://localhost:8080} - MERCURE_PUBLISH_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS:-http://localhost:8080} + MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS} + MERCURE_PUBLISH_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS} MERCURE_EXTRA_DIRECTIVES: | - cors_origins ${MERCURE_CORS_ALLOWED_ORIGINS:-http://localhost:8080} + cors_origins ${MERCURE_CORS_ALLOWED_ORIGINS} # Allow anonymous subscribers in dev only anonymous ports: @@ -122,6 +128,8 @@ services: database: image: mysql:8.0 container_name: escapepage-db + env_file: + - ../.env environment: MYSQL_DATABASE: ${DB_NAME:-app} MYSQL_USER: ${DB_USER:-app} diff --git a/src/Tech/Service/EmailVerifier.php b/src/Tech/Service/EmailVerifier.php index c50e67b..9bdc571 100644 --- a/src/Tech/Service/EmailVerifier.php +++ b/src/Tech/Service/EmailVerifier.php @@ -66,6 +66,20 @@ class EmailVerifier */ public function handleEmailConfirmation(Request $request, User $user): void { + $siteBaseUrl = $_ENV['SITE_BASE_URL'] ?? null; + if ($siteBaseUrl) { + $parts = parse_url($siteBaseUrl); + if (isset($parts['host'])) { + $request->headers->set('HOST', $parts['host']); + } + if (isset($parts['scheme'])) { + $request->server->set('HTTPS', 'https' === $parts['scheme'] ? 'on' : 'off'); + } + if (isset($parts['port'])) { + $request->server->set('SERVER_PORT', $parts['port']); + } + } + $this->verifyEmailHelper->validateEmailConfirmationFromRequest($request, (string) $user->getId(), $user->getEmail()); $user->setIsVerified(true);