diff --git a/.env b/.env
index 691923c..08f2977 100644
--- a/.env
+++ b/.env
@@ -32,3 +32,7 @@ DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&ch
###> symfony/mailer ###
MAILER_DSN=null://null
###< symfony/mailer ###
+
+###> sentry/sentry-symfony ###
+SENTRY_DSN=
+###< sentry/sentry-symfony ###
diff --git a/.idea/TijdVoorDeTest.iml b/.idea/TijdVoorDeTest.iml
index 361b0bf..f619663 100644
--- a/.idea/TijdVoorDeTest.iml
+++ b/.idea/TijdVoorDeTest.iml
@@ -139,6 +139,14 @@
+
+
+
+
+
+
+
+
diff --git a/.idea/php.xml b/.idea/php.xml
index 2a59b68..6824dc5 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -19,7 +19,7 @@
-
+
@@ -169,6 +169,14 @@
+
+
+
+
+
+
+
+
diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
new file mode 100644
index 0000000..6df4889
--- /dev/null
+++ b/.idea/sqldialects.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index cba7a1b..e846d3a 100644
--- a/README.md
+++ b/README.md
@@ -5,40 +5,34 @@
### Maken van de test
- WIDM-tests met een variabel aantal vragen.
-- Vragen in een vaste volgorde zijn samen één test (een vraag kan niet bij
-meerdere test horen).
-- Vragen hebben 2 of meer antwoordmogelijkheden. Slechts één vraag is correct.
+- Vragen in een vaste volgorde zijn samen één test (een vraag kan niet bij
+ meerdere tests horen).
+- Vragen hebben 2 of meer antwoordmogelijkheden. Slechts één antwoord is correct.
- Meerdere test samen vormen een seizoen.
-- Een seizoen heeft één of geen actieve tests, als er een test actief is kan
-Uitsluitend die test gemaakt worden.
-- Kandidaten kunnen een test maximaal 1 keer invullen. Indien ingeschakeld
-kunnen alleen vooraf ingevoerde namen gebruikt worden in een test.
-- Vanaf het moment dat de kandidaat op start klikt na het intypen van hun naam
-gaat de tijd lopen. Deze stopt na het aanklikken van een antwoord op de laatste
-vraag van de test.
+- Een seizoen heeft één of geen actieve tests, als er een test actief is kan
+ uitsluitend die test gemaakt worden.
+- Kandidaten kunnen een test maximaal 1 keer invullen.
+- Vanaf het moment dat de kandidaat op start klikt na het intypen van hun naam
+ gaat de tijd lopen. Deze stopt na het aanklikken van een antwoord op de laatste
+ vraag van de test.
- Achtergrondmuziek
-
### Schermen kijken
-- Nadat een speler een test heeft gemaakt (of vooraf als de namen vooraf
-ingevoerd zijn) kunnen jokers toegekend worden aan de test van kandidaat. Een
-positief getal om antwoorden goed te rekenen, een negatief getal om
-antwoorden fout te rekenen. Een vrijstelling kan gegeven worden door evenveel
-of meer jokers toe te kennen als dat er vragen in een test zitten.
+- Nadat een speler een test heeft gemaakt (of vooraf als de namen vooraf
+ ingevoerd zijn) kunnen jokers toegekend worden aan de test van kandidaat. Een
+ positief getal om antwoorden goed te rekenen, een negatief getal om
+ antwoorden fout te rekenen.
- Vooraf kan gekozen worden hoe veel afvallers er zijn.
-- Bij het kijken naam rode en groene schermen wordt een naam ingevoerd. Er
-wordt een rood of groen scherm getoond.
-- Spelers kunnen geforceerd op groen of rood gezet worden, deze worden dan niet
-meegenomen in de berekening van de slechtste speler.
-
-
+- Bij het kijken naam rode en groene schermen wordt een naam ingevoerd. Er
+ wordt een rood of groen scherm getoond.
+- Spelers kunnen geforceerd op groen of rood gezet worden, deze worden dan niet
+ meegenomen in de berekening van de slechtste speler.
### Statistieken
TBD
-
## Nice to haves
- Optie voor antwoord geven in twee klikken (selecteren en volgende).
diff --git a/composer.json b/composer.json
index 8e2d615..890404c 100644
--- a/composer.json
+++ b/composer.json
@@ -16,6 +16,7 @@
"doctrine/orm": "^3.3.2",
"easycorp/easyadmin-bundle": "^4.24.6",
"runtime/frankenphp-symfony": "^0.2.0",
+ "sentry/sentry-symfony": "^5.2",
"symfony/asset": "7.2.*",
"symfony/console": "7.2.*",
"symfony/dotenv": "7.2.*",
diff --git a/composer.lock b/composer.lock
index 7dced64..dafdf33 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": "ee8228c69be95e84852d15ba67d0920e",
+ "content-hash": "4f1a4b1f2a93612d13032cda491c6271",
"packages": [
{
"name": "doctrine/collections",
@@ -1464,6 +1464,182 @@
],
"time": "2025-03-06T22:45:56+00:00"
},
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "2.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
+ "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "ralouphie/getallheaders": "^3.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "http-interop/http-factory-tests": "0.9.0",
+ "phpunit/phpunit": "^8.5.39 || ^9.6.20"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "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": "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"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.7.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-03-27T12:30:47+00:00"
+ },
+ {
+ "name": "jean85/pretty-package-versions",
+ "version": "2.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Jean85/pretty-package-versions.git",
+ "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a",
+ "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a",
+ "shasum": ""
+ },
+ "require": {
+ "composer-runtime-api": "^2.1.0",
+ "php": "^7.4|^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "jean85/composer-provided-replaced-stub-package": "^1.0",
+ "phpstan/phpstan": "^2.0",
+ "phpunit/phpunit": "^7.5|^8.5|^9.6",
+ "rector/rector": "^2.0",
+ "vimeo/psalm": "^4.3 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Jean85\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alessandro Lai",
+ "email": "alessandro.lai85@gmail.com"
+ }
+ ],
+ "description": "A library to get pretty versions strings of installed dependencies",
+ "keywords": [
+ "composer",
+ "package",
+ "release",
+ "versions"
+ ],
+ "support": {
+ "issues": "https://github.com/Jean85/pretty-package-versions/issues",
+ "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1"
+ },
+ "time": "2025-03-19T14:43:43+00:00"
+ },
{
"name": "psr/cache",
"version": "3.0.0",
@@ -1664,6 +1840,114 @@
},
"time": "2019-01-08T18:20:26+00:00"
},
+ {
+ "name": "psr/http-factory",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory"
+ },
+ "time": "2024-04-15T12:06:14+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00"
+ },
{
"name": "psr/log",
"version": "3.0.2",
@@ -1714,6 +1998,50 @@
},
"time": "2024-09-11T13:17:53+00:00"
},
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
{
"name": "runtime/frankenphp-symfony",
"version": "0.2.0",
@@ -1766,6 +2094,197 @@
],
"time": "2023-12-12T12:06:11+00:00"
},
+ {
+ "name": "sentry/sentry",
+ "version": "4.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-php.git",
+ "reference": "ebf67deb9902b6da58a4b3383cbd12fed3f4f555"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/ebf67deb9902b6da58a4b3383cbd12fed3f4f555",
+ "reference": "ebf67deb9902b6da58a4b3383cbd12fed3f4f555",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "guzzlehttp/psr7": "^1.8.4|^2.1.1",
+ "jean85/pretty-package-versions": "^1.5|^2.0.4",
+ "php": "^7.2|^8.0",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "symfony/options-resolver": "^4.4.30|^5.0.11|^6.0|^7.0"
+ },
+ "conflict": {
+ "raven/raven": "*"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.4",
+ "guzzlehttp/promises": "^2.0.3",
+ "guzzlehttp/psr7": "^1.8.4|^2.1.1",
+ "monolog/monolog": "^1.6|^2.0|^3.0",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/phpstan": "^1.3",
+ "phpunit/phpunit": "^8.5|^9.6",
+ "symfony/phpunit-bridge": "^5.2|^6.0|^7.0",
+ "vimeo/psalm": "^4.17"
+ },
+ "suggest": {
+ "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Sentry\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sentry",
+ "email": "accounts@sentry.io"
+ }
+ ],
+ "description": "PHP SDK for Sentry (http://sentry.io)",
+ "homepage": "http://sentry.io",
+ "keywords": [
+ "crash-reporting",
+ "crash-reports",
+ "error-handler",
+ "error-monitoring",
+ "log",
+ "logging",
+ "profiling",
+ "sentry",
+ "tracing"
+ ],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-php/issues",
+ "source": "https://github.com/getsentry/sentry-php/tree/4.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2025-04-14T09:04:23+00:00"
+ },
+ {
+ "name": "sentry/sentry-symfony",
+ "version": "5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/getsentry/sentry-symfony.git",
+ "reference": "394576244d8ac03fd2f305b82d23a6fd7a083b45"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/394576244d8ac03fd2f305b82d23a6fd7a083b45",
+ "reference": "394576244d8ac03fd2f305b82d23a6fd7a083b45",
+ "shasum": ""
+ },
+ "require": {
+ "guzzlehttp/psr7": "^2.1.1",
+ "jean85/pretty-package-versions": "^1.5||^2.0",
+ "php": "^7.2||^8.0",
+ "sentry/sentry": "^4.10.0",
+ "symfony/cache-contracts": "^1.1||^2.4||^3.0",
+ "symfony/config": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/console": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/dependency-injection": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/event-dispatcher": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/http-kernel": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/polyfill-php80": "^1.22",
+ "symfony/psr-http-message-bridge": "^1.2||^2.0||^6.4||^7.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.13||^3.3||^4.0",
+ "doctrine/doctrine-bundle": "^2.6",
+ "friendsofphp/php-cs-fixer": "^2.19||^3.40",
+ "masterminds/html5": "^2.8",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "1.12.5",
+ "phpstan/phpstan-phpunit": "1.4.0",
+ "phpstan/phpstan-symfony": "1.4.10",
+ "phpunit/phpunit": "^8.5.40||^9.6.21",
+ "symfony/browser-kit": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/cache": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/dom-crawler": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/framework-bundle": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/http-client": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/messenger": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/monolog-bundle": "^3.4",
+ "symfony/phpunit-bridge": "^5.2.6||^6.0||^7.0",
+ "symfony/process": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/security-core": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/security-http": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/twig-bundle": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "symfony/yaml": "^4.4.20||^5.0.11||^6.0||^7.0",
+ "vimeo/psalm": "^4.3||^5.16.0"
+ },
+ "suggest": {
+ "doctrine/doctrine-bundle": "Allow distributed tracing of database queries using Sentry.",
+ "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler.",
+ "symfony/cache": "Allow distributed tracing of cache pools using Sentry.",
+ "symfony/twig-bundle": "Allow distributed tracing of Twig template rendering using Sentry."
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "files": [
+ "src/aliases.php"
+ ],
+ "psr-4": {
+ "Sentry\\SentryBundle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Sentry",
+ "email": "accounts@sentry.io"
+ }
+ ],
+ "description": "Symfony integration for Sentry (http://getsentry.com)",
+ "homepage": "http://getsentry.com",
+ "keywords": [
+ "errors",
+ "logging",
+ "sentry",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/getsentry/sentry-symfony/issues",
+ "source": "https://github.com/getsentry/sentry-symfony/tree/5.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://sentry.io/",
+ "type": "custom"
+ },
+ {
+ "url": "https://sentry.io/pricing/",
+ "type": "custom"
+ }
+ ],
+ "time": "2025-03-03T07:47:12+00:00"
+ },
{
"name": "symfony/asset",
"version": "v7.2.0",
@@ -4636,6 +5155,89 @@
],
"time": "2025-03-06T16:27:19+00:00"
},
+ {
+ "name": "symfony/psr-http-message-bridge",
+ "version": "v7.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/psr-http-message-bridge.git",
+ "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/03f2f72319e7acaf2a9f6fcbe30ef17eec51594f",
+ "reference": "03f2f72319e7acaf2a9f6fcbe30ef17eec51594f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/http-message": "^1.0|^2.0",
+ "symfony/http-foundation": "^6.4|^7.0"
+ },
+ "conflict": {
+ "php-http/discovery": "<1.15",
+ "symfony/http-kernel": "<6.4"
+ },
+ "require-dev": {
+ "nyholm/psr7": "^1.1",
+ "php-http/discovery": "^1.15",
+ "psr/log": "^1.1.4|^2|^3",
+ "symfony/browser-kit": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/framework-bundle": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0"
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\PsrHttpMessage\\": ""
+ },
+ "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": "PSR HTTP message bridge",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr-17",
+ "psr-7"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.2.0"
+ },
+ "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-26T08:57:56+00:00"
+ },
{
"name": "symfony/routing",
"version": "v7.2.3",
diff --git a/config/bundles.php b/config/bundles.php
index 5b95dbf..4e50234 100644
--- a/config/bundles.php
+++ b/config/bundles.php
@@ -6,6 +6,7 @@ use Doctrine\Bundle\DoctrineBundle\DoctrineBundle;
use Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle;
use Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle;
use EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle;
+use Sentry\SentryBundle\SentryBundle;
use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
use Symfony\Bundle\MakerBundle\MakerBundle;
use Symfony\Bundle\SecurityBundle\SecurityBundle;
@@ -28,4 +29,5 @@ return [
EasyAdminBundle::class => ['all' => true],
DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
SymfonyCastsVerifyEmailBundle::class => ['all' => true],
+ SentryBundle::class => ['prod' => true],
];
diff --git a/config/packages/sentry.yaml b/config/packages/sentry.yaml
new file mode 100644
index 0000000..4d14494
--- /dev/null
+++ b/config/packages/sentry.yaml
@@ -0,0 +1,28 @@
+when@prod:
+ sentry:
+ dsn: '%env(SENTRY_DSN)%'
+ # Add request headers, cookies, IP address and the authenticated user
+ # see https://docs.sentry.io/platforms/php/data-management/data-collected/ for more info
+ # send_default_pii: true
+ options:
+ ignore_exceptions:
+ - 'Symfony\Component\ErrorHandler\Error\FatalError'
+ - 'Symfony\Component\Debug\Exception\FatalErrorException'
+
+# If you are using Monolog, you also need this additional configuration to log the errors correctly:
+# https://docs.sentry.io/platforms/php/guides/symfony/#monolog-integration
+# register_error_listener: false
+# register_error_handler: false
+
+# monolog:
+# handlers:
+# sentry:
+# type: sentry
+# level: !php/const Monolog\Logger::ERROR
+# hub_id: Sentry\State\HubInterface
+
+# Uncomment these lines to register a log message processor that resolves PSR-3 placeholders
+# https://docs.sentry.io/platforms/php/guides/symfony/#monolog-integration
+# services:
+# Monolog\Processor\PsrLogMessageProcessor:
+# tags: { name: monolog.processor, handler: sentry }
diff --git a/frankenphp/conf.d/10-app.ini b/frankenphp/conf.d/10-app.ini
index 6044d26..bc8c905 100644
--- a/frankenphp/conf.d/10-app.ini
+++ b/frankenphp/conf.d/10-app.ini
@@ -11,3 +11,6 @@ opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 20000
opcache.memory_consumption = 256
opcache.enable_file_override = 1
+
+; for Sentry
+zend.exception_ignore_args = Off
diff --git a/symfony.lock b/symfony.lock
index 7ce65a2..cd2a560 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -85,6 +85,18 @@
"tests/bootstrap.php"
]
},
+ "sentry/sentry-symfony": {
+ "version": "5.2",
+ "recipe": {
+ "repo": "github.com/symfony/recipes-contrib",
+ "branch": "main",
+ "version": "5.0",
+ "ref": "c3decefe8a11a5da43adaf827a6cd66695586113"
+ },
+ "files": [
+ "config/packages/sentry.yaml"
+ ]
+ },
"symfony/console": {
"version": "7.2",
"recipe": {