Add email tracking, CSP reporting, security controllers and services

- EmailTracking entity + repository + pixel tracking controller
- CspReportController: filter noise, alert on real violations
- RedirectController: external redirect warning page
- UnsubscribeManager: HMAC-based unsubscribe with hashed storage
- MailerService: rewrite with S/MIME, tracking, unsubscribe headers
- ViteAssetExtension: add nonce CSP via Nelmio, isMobile
- composer: add stripe/stripe-php, mobiledetect
- Templates: add home/index, update base.html.twig with vite_asset
- Email template: rebrand to E-Ticket

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-18 21:35:36 +01:00
parent 46a84a9f9a
commit 8d8d70cab4
14 changed files with 525 additions and 17 deletions

176
composer.lock generated
View File

@@ -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": "57b0fe3e59760d7d8cb08112bed744a4",
"content-hash": "06d85967d9503db645c96c90e761fa2a",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -2865,6 +2865,70 @@
},
"time": "2025-07-25T09:04:22+00:00"
},
{
"name": "mobiledetect/mobiledetectlib",
"version": "4.8.10",
"source": {
"type": "git",
"url": "https://github.com/serbanghita/Mobile-Detect.git",
"reference": "96b1e1fa9a968de7660a031106ab529f659d0192"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/96b1e1fa9a968de7660a031106ab529f659d0192",
"reference": "96b1e1fa9a968de7660a031106ab529f659d0192",
"shasum": ""
},
"require": {
"php": ">=8.0",
"psr/simple-cache": "^3"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^v3.75.0",
"phpbench/phpbench": "^1.2",
"phpstan/phpstan": "^2.1.11",
"phpunit/phpunit": "^9.6.22",
"squizlabs/php_codesniffer": "^3.12.1"
},
"type": "library",
"autoload": {
"psr-4": {
"Detection\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Serban Ghita",
"email": "serbanghita@gmail.com",
"homepage": "http://mobiledetect.net",
"role": "Developer"
}
],
"description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
"homepage": "https://github.com/serbanghita/Mobile-Detect",
"keywords": [
"detect mobile devices",
"mobile",
"mobile detect",
"mobile detector",
"php mobile detect"
],
"support": {
"issues": "https://github.com/serbanghita/Mobile-Detect/issues",
"source": "https://github.com/serbanghita/Mobile-Detect/tree/4.8.10"
},
"funding": [
{
"url": "https://github.com/serbanghita",
"type": "github"
}
],
"time": "2026-01-09T16:21:59+00:00"
},
{
"name": "monolog/monolog",
"version": "3.10.0",
@@ -3797,6 +3861,57 @@
},
"time": "2024-09-11T13:17:53+00:00"
},
{
"name": "psr/simple-cache",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
"reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
"reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
"keywords": [
"cache",
"caching",
"psr",
"psr-16",
"simple-cache"
],
"support": {
"source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
},
"time": "2021-10-29T13:26:27+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
@@ -3921,6 +4036,65 @@
},
"time": "2026-03-03T17:31:43+00:00"
},
{
"name": "stripe/stripe-php",
"version": "v19.4.1",
"source": {
"type": "git",
"url": "https://github.com/stripe/stripe-php.git",
"reference": "095384404587d07de2ad1154c389c4051c5ed92f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/095384404587d07de2ad1154c389c4051c5ed92f",
"reference": "095384404587d07de2ad1154c389c4051c5ed92f",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"php": ">=5.6.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "3.94.0",
"phpstan/phpstan": "^1.2",
"phpunit/phpunit": "^5.7 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0-dev"
}
},
"autoload": {
"psr-4": {
"Stripe\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Stripe and contributors",
"homepage": "https://github.com/stripe/stripe-php/contributors"
}
],
"description": "Stripe PHP Library",
"homepage": "https://stripe.com/",
"keywords": [
"api",
"payment processing",
"stripe"
],
"support": {
"issues": "https://github.com/stripe/stripe-php/issues",
"source": "https://github.com/stripe/stripe-php/tree/v19.4.1"
},
"time": "2026-03-06T22:53:13+00:00"
},
{
"name": "symfony/asset",
"version": "v8.0.6",