Verification done? Try many + 1

This commit is contained in:
Frank
2026-01-16 21:25:40 +01:00
parent 27827bd2a9
commit 8b6398b408
2 changed files with 53 additions and 31 deletions

View File

@@ -6,25 +6,27 @@ services:
context: .. context: ..
dockerfile: docker/php/Dockerfile dockerfile: docker/php/Dockerfile
args: args:
USER_ID: ${USER_ID:-1000} USER_ID: ${USER_ID}
GROUP_ID: ${GROUP_ID:-1000} GROUP_ID: ${GROUP_ID}
container_name: escapepage-php container_name: escapepage-php
volumes: volumes:
- ../:/var/www/html:delegated - ../:/var/www/html:delegated
- /etc/hosts:/etc/hosts:ro - /etc/hosts:/etc/hosts:ro
env_file:
- ../.env
environment: environment:
APP_ENV: ${APP_ENV:-dev} APP_ENV: ${APP_ENV}
SITE_BASE_URL: ${SITE_BASE_URL:-https://escapepage.dev} SITE_BASE_URL: ${SITE_BASE_URL}
MAILER_DSN: ${MAILER_DSN:-smtp://mailer:1025} MAILER_DSN: ${MAILER_DSN}
MAILER_FROM: ${MAILER_FROM:-noreply@escapepage.dev} MAILER_FROM: ${MAILER_FROM}
DATABASE_URL: ${DATABASE_URL:-mysql://escapepage:b.0nqrxJ/D*Luf9N@database:3306/escapepage?serverVersion=8.0.32&charset=utf8mb4} DATABASE_URL: ${DATABASE_URL}
MERCURE_URL: ${MERCURE_URL:-http://mercure/.well-known/mercure} MERCURE_URL: ${MERCURE_URL}
MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL:-http://localhost:8090/.well-known/mercure} MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL}
MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET:-!ChangeThisMercureJWTSignedBySymfonySecretKey!} MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET}
MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS:-https://localhost:8443} MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS}
MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE:-https://escapepage.dev} MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE}
RECAPTCHA3_KEY: ${RECAPTCHA3_KEY:-my_site_key} RECAPTCHA3_KEY: ${RECAPTCHA3_KEY}
RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET:-my_secret} RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET}
depends_on: depends_on:
- database - database
- mercure - mercure
@@ -38,25 +40,27 @@ services:
context: .. context: ..
dockerfile: docker/php/Dockerfile dockerfile: docker/php/Dockerfile
args: args:
USER_ID: ${USER_ID:-1000} USER_ID: ${USER_ID}
GROUP_ID: ${GROUP_ID:-1000} GROUP_ID: ${GROUP_ID}
container_name: escapepage-php-worker container_name: escapepage-php-worker
volumes: volumes:
- ../:/var/www/html:delegated - ../:/var/www/html:delegated
- /etc/hosts:/etc/hosts:ro - /etc/hosts:/etc/hosts:ro
env_file:
- ../.env
environment: environment:
APP_ENV: ${APP_ENV:-dev} APP_ENV: ${APP_ENV}
SITE_BASE_URL: ${SITE_BASE_URL:-https://escapepage.dev} SITE_BASE_URL: ${SITE_BASE_URL}
MAILER_DSN: ${MAILER_DSN:-smtp://mailer:1025} MAILER_DSN: ${MAILER_DSN}
MAILER_FROM: ${MAILER_FROM:-noreply@escapepage.dev} MAILER_FROM: ${MAILER_FROM}
DATABASE_URL: ${DATABASE_URL:-mysql://escapepage:b.0nqrxJ/D*Luf9N@database:3306/escapepage?serverVersion=8.0.32&charset=utf8mb4} DATABASE_URL: ${DATABASE_URL}
MERCURE_URL: ${MERCURE_URL:-http://mercure/.well-known/mercure} MERCURE_URL: ${MERCURE_URL}
MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL:-http://localhost:8090/.well-known/mercure} MERCURE_PUBLIC_URL: ${MERCURE_PUBLIC_URL}
MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET:-!ChangeThisMercureJWTSignedBySymfonySecretKey!} MERCURE_JWT_SECRET: ${MERCURE_JWT_SECRET}
MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS:-https://localhost:8443} MERCURE_CORS_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS}
MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE:-https://escapepage.dev} MERCURE_TOPIC_BASE: ${MERCURE_TOPIC_BASE}
RECAPTCHA3_KEY: ${RECAPTCHA3_KEY:-my_site_key} RECAPTCHA3_KEY: ${RECAPTCHA3_KEY}
RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET:-my_secret} RECAPTCHA3_SECRET: ${RECAPTCHA3_SECRET}
depends_on: depends_on:
- database - database
- mercure - mercure
@@ -99,14 +103,16 @@ services:
mercure: mercure:
image: dunglas/mercure:v0.21 image: dunglas/mercure:v0.21
container_name: escapepage-mercure container_name: escapepage-mercure
env_file:
- ../.env
environment: environment:
SERVER_NAME: ":80" SERVER_NAME: ":80"
MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_JWT_SECRET} MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_JWT_SECRET}
MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_JWT_SECRET} MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_JWT_SECRET}
MERCURE_CORS_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:-http://localhost:8080} MERCURE_PUBLISH_ALLOWED_ORIGINS: ${MERCURE_CORS_ALLOWED_ORIGINS}
MERCURE_EXTRA_DIRECTIVES: | MERCURE_EXTRA_DIRECTIVES: |
cors_origins ${MERCURE_CORS_ALLOWED_ORIGINS:-http://localhost:8080} cors_origins ${MERCURE_CORS_ALLOWED_ORIGINS}
# Allow anonymous subscribers in dev only # Allow anonymous subscribers in dev only
anonymous anonymous
ports: ports:
@@ -122,6 +128,8 @@ services:
database: database:
image: mysql:8.0 image: mysql:8.0
container_name: escapepage-db container_name: escapepage-db
env_file:
- ../.env
environment: environment:
MYSQL_DATABASE: ${DB_NAME:-app} MYSQL_DATABASE: ${DB_NAME:-app}
MYSQL_USER: ${DB_USER:-app} MYSQL_USER: ${DB_USER:-app}

View File

@@ -66,6 +66,20 @@ class EmailVerifier
*/ */
public function handleEmailConfirmation(Request $request, User $user): void 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()); $this->verifyEmailHelper->validateEmailConfirmationFromRequest($request, (string) $user->getId(), $user->getEmail());
$user->setIsVerified(true); $user->setIsVerified(true);