Compare commits

..

1 Commits

Author SHA1 Message Date
Rudy Masson f2945e01de issue-39 : code quality, typage manquant
Cadoles/hydra-sql/pipeline/head This commit is unstable Details
2024-09-24 11:34:29 +02:00
22 changed files with 511 additions and 517 deletions

1
.nvmrc
View File

@ -1 +0,0 @@
lts/iron

View File

@ -78,8 +78,5 @@
"allow-contrib": true, "allow-contrib": true,
"require": "5.4.*" "require": "5.4.*"
} }
},
"require-dev": {
"symfony/debug-bundle": "5.4.*"
} }
} }

613
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "203398b3a4f3ff689ff3341c02460f23", "content-hash": "7d46fa52cba3dcb28f7d339d548030e9",
"packages": [ "packages": [
{ {
"name": "clue/stream-filter", "name": "clue/stream-filter",
@ -74,16 +74,16 @@
}, },
{ {
"name": "doctrine/annotations", "name": "doctrine/annotations",
"version": "1.14.4", "version": "1.14.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/annotations.git", "url": "https://github.com/doctrine/annotations.git",
"reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915" "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/annotations/zipball/253dca476f70808a5aeed3a47cc2cc88c5cab915", "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
"reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915", "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -94,11 +94,11 @@
}, },
"require-dev": { "require-dev": {
"doctrine/cache": "^1.11 || ^2.0", "doctrine/cache": "^1.11 || ^2.0",
"doctrine/coding-standard": "^9 || ^12", "doctrine/coding-standard": "^9 || ^10",
"phpstan/phpstan": "~1.4.10 || ^1.10.28", "phpstan/phpstan": "~1.4.10 || ^1.8.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7", "symfony/cache": "^4.4 || ^5.4 || ^6",
"vimeo/psalm": "^4.30 || ^5.14" "vimeo/psalm": "^4.10"
}, },
"suggest": { "suggest": {
"php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
@ -144,9 +144,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/annotations/issues", "issues": "https://github.com/doctrine/annotations/issues",
"source": "https://github.com/doctrine/annotations/tree/1.14.4" "source": "https://github.com/doctrine/annotations/tree/1.14.3"
}, },
"time": "2024-09-05T10:15:52+00:00" "time": "2023-02-01T09:20:38+00:00"
}, },
{ {
"name": "doctrine/deprecations", "name": "doctrine/deprecations",
@ -591,16 +591,16 @@
}, },
{ {
"name": "php-http/client-common", "name": "php-http/client-common",
"version": "2.7.2", "version": "2.7.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-http/client-common.git", "url": "https://github.com/php-http/client-common.git",
"reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46" "reference": "1e19c059b0e4d5f717bf5d524d616165aeab0612"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-http/client-common/zipball/0cfe9858ab9d3b213041b947c881d5b19ceeca46", "url": "https://api.github.com/repos/php-http/client-common/zipball/1e19c059b0e4d5f717bf5d524d616165aeab0612",
"reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46", "reference": "1e19c059b0e4d5f717bf5d524d616165aeab0612",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -654,22 +654,22 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-http/client-common/issues", "issues": "https://github.com/php-http/client-common/issues",
"source": "https://github.com/php-http/client-common/tree/2.7.2" "source": "https://github.com/php-http/client-common/tree/2.7.1"
}, },
"time": "2024-09-24T06:21:48+00:00" "time": "2023-11-30T10:31:25+00:00"
}, },
{ {
"name": "php-http/discovery", "name": "php-http/discovery",
"version": "1.20.0", "version": "1.19.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-http/discovery.git", "url": "https://github.com/php-http/discovery.git",
"reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d" "reference": "0700efda8d7526335132360167315fdab3aeb599"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d", "url": "https://api.github.com/repos/php-http/discovery/zipball/0700efda8d7526335132360167315fdab3aeb599",
"reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d", "reference": "0700efda8d7526335132360167315fdab3aeb599",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -733,22 +733,22 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-http/discovery/issues", "issues": "https://github.com/php-http/discovery/issues",
"source": "https://github.com/php-http/discovery/tree/1.20.0" "source": "https://github.com/php-http/discovery/tree/1.19.4"
}, },
"time": "2024-10-02T11:20:13+00:00" "time": "2024-03-29T13:00:05+00:00"
}, },
{ {
"name": "php-http/httplug", "name": "php-http/httplug",
"version": "2.4.1", "version": "2.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-http/httplug.git", "url": "https://github.com/php-http/httplug.git",
"reference": "5cad731844891a4c282f3f3e1b582c46839d22f4" "reference": "625ad742c360c8ac580fcc647a1541d29e257f67"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-http/httplug/zipball/5cad731844891a4c282f3f3e1b582c46839d22f4", "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67",
"reference": "5cad731844891a4c282f3f3e1b582c46839d22f4", "reference": "625ad742c360c8ac580fcc647a1541d29e257f67",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -790,22 +790,22 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-http/httplug/issues", "issues": "https://github.com/php-http/httplug/issues",
"source": "https://github.com/php-http/httplug/tree/2.4.1" "source": "https://github.com/php-http/httplug/tree/2.4.0"
}, },
"time": "2024-09-23T11:39:58+00:00" "time": "2023-04-14T15:10:03+00:00"
}, },
{ {
"name": "php-http/message", "name": "php-http/message",
"version": "1.16.2", "version": "1.16.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-http/message.git", "url": "https://github.com/php-http/message.git",
"reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a" "reference": "5997f3289332c699fa2545c427826272498a2088"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-http/message/zipball/06dd5e8562f84e641bf929bfe699ee0f5ce8080a", "url": "https://api.github.com/repos/php-http/message/zipball/5997f3289332c699fa2545c427826272498a2088",
"reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a", "reference": "5997f3289332c699fa2545c427826272498a2088",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -859,9 +859,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-http/message/issues", "issues": "https://github.com/php-http/message/issues",
"source": "https://github.com/php-http/message/tree/1.16.2" "source": "https://github.com/php-http/message/tree/1.16.1"
}, },
"time": "2024-10-02T11:34:13+00:00" "time": "2024-03-07T13:22:09+00:00"
}, },
{ {
"name": "php-http/message-factory", "name": "php-http/message-factory",
@ -1805,16 +1805,16 @@
}, },
{ {
"name": "symfony/cache", "name": "symfony/cache",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/cache.git", "url": "https://github.com/symfony/cache.git",
"reference": "4b3e7bf157b8b5a010865701d9106b5f0a9c99a8" "reference": "89005bc368ca02ed0433c592e4d27670d0844a66"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/cache/zipball/4b3e7bf157b8b5a010865701d9106b5f0a9c99a8", "url": "https://api.github.com/repos/symfony/cache/zipball/89005bc368ca02ed0433c592e4d27670d0844a66",
"reference": "4b3e7bf157b8b5a010865701d9106b5f0a9c99a8", "reference": "89005bc368ca02ed0433c592e4d27670d0844a66",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1882,7 +1882,7 @@
"psr6" "psr6"
], ],
"support": { "support": {
"source": "https://github.com/symfony/cache/tree/v5.4.44" "source": "https://github.com/symfony/cache/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -1898,7 +1898,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-13T16:57:39+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/cache-contracts", "name": "symfony/cache-contracts",
@ -2060,16 +2060,16 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "5b5a0aa66e3296e303e22490f90f521551835a83" "reference": "6473d441a913cb997123b59ff2dbe3d1cf9e11ba"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83", "url": "https://api.github.com/repos/symfony/console/zipball/6473d441a913cb997123b59ff2dbe3d1cf9e11ba",
"reference": "5b5a0aa66e3296e303e22490f90f521551835a83", "reference": "6473d441a913cb997123b59ff2dbe3d1cf9e11ba",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2139,7 +2139,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v5.4.44" "source": "https://github.com/symfony/console/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -2155,20 +2155,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-20T07:56:40+00:00" "time": "2024-06-28T07:48:55+00:00"
}, },
{ {
"name": "symfony/dependency-injection", "name": "symfony/dependency-injection",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dependency-injection.git", "url": "https://github.com/symfony/dependency-injection.git",
"reference": "23eb9f3803a931aef16a65f362a9aeb0640a1374" "reference": "408b33326496030c201b8051b003e9e8cdb2efc9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/23eb9f3803a931aef16a65f362a9aeb0640a1374", "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/408b33326496030c201b8051b003e9e8cdb2efc9",
"reference": "23eb9f3803a931aef16a65f362a9aeb0640a1374", "reference": "408b33326496030c201b8051b003e9e8cdb2efc9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2228,7 +2228,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application", "description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/dependency-injection/tree/v5.4.44" "source": "https://github.com/symfony/dependency-injection/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -2244,7 +2244,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-12T20:01:35+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/deprecation-contracts", "name": "symfony/deprecation-contracts",
@ -2315,16 +2315,16 @@
}, },
{ {
"name": "symfony/dotenv", "name": "symfony/dotenv",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dotenv.git", "url": "https://github.com/symfony/dotenv.git",
"reference": "bb4fef2bf035a50170fd95e5b146152834126008" "reference": "3052dbf22f71e47f6ef7a5efa6aaedfe871ba35d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dotenv/zipball/bb4fef2bf035a50170fd95e5b146152834126008", "url": "https://api.github.com/repos/symfony/dotenv/zipball/3052dbf22f71e47f6ef7a5efa6aaedfe871ba35d",
"reference": "bb4fef2bf035a50170fd95e5b146152834126008", "reference": "3052dbf22f71e47f6ef7a5efa6aaedfe871ba35d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2366,7 +2366,7 @@
"environment" "environment"
], ],
"support": { "support": {
"source": "https://github.com/symfony/dotenv/tree/v5.4.44" "source": "https://github.com/symfony/dotenv/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -2382,20 +2382,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-16T09:39:25+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/error-handler", "name": "symfony/error-handler",
"version": "v5.4.42", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/error-handler.git", "url": "https://github.com/symfony/error-handler.git",
"reference": "db15ba0fd50890156ed40087ccedc7851a1f5b76" "reference": "c25da5cc2de4e6f96b3a0a2813050355a20dd0e1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/db15ba0fd50890156ed40087ccedc7851a1f5b76", "url": "https://api.github.com/repos/symfony/error-handler/zipball/c25da5cc2de4e6f96b3a0a2813050355a20dd0e1",
"reference": "db15ba0fd50890156ed40087ccedc7851a1f5b76", "reference": "c25da5cc2de4e6f96b3a0a2813050355a20dd0e1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2437,7 +2437,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code", "description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/error-handler/tree/v5.4.42" "source": "https://github.com/symfony/error-handler/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -2453,7 +2453,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-07-23T12:34:05+00:00" "time": "2024-06-09T18:59:35+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
@ -2618,16 +2618,16 @@
}, },
{ {
"name": "symfony/expression-language", "name": "symfony/expression-language",
"version": "v5.4.43", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/expression-language.git", "url": "https://github.com/symfony/expression-language.git",
"reference": "9d23f7bfd1d602fddc6d6520decedc99739497dd" "reference": "77670d1e74086dc8d941a18f97097bbf988f2840"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/expression-language/zipball/9d23f7bfd1d602fddc6d6520decedc99739497dd", "url": "https://api.github.com/repos/symfony/expression-language/zipball/77670d1e74086dc8d941a18f97097bbf988f2840",
"reference": "9d23f7bfd1d602fddc6d6520decedc99739497dd", "reference": "77670d1e74086dc8d941a18f97097bbf988f2840",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2661,7 +2661,7 @@
"description": "Provides an engine that can compile and evaluate expressions", "description": "Provides an engine that can compile and evaluate expressions",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/expression-language/tree/v5.4.43" "source": "https://github.com/symfony/expression-language/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -2677,20 +2677,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-09T07:10:35+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/filesystem", "name": "symfony/filesystem",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/filesystem.git", "url": "https://github.com/symfony/filesystem.git",
"reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc" "reference": "6d29dd9340b372fa603f04e6df4dd76bb808591e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc", "url": "https://api.github.com/repos/symfony/filesystem/zipball/6d29dd9340b372fa603f04e6df4dd76bb808591e",
"reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc", "reference": "6d29dd9340b372fa603f04e6df4dd76bb808591e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2728,7 +2728,7 @@
"description": "Provides basic utilities for the filesystem", "description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/filesystem/tree/v5.4.44" "source": "https://github.com/symfony/filesystem/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -2744,20 +2744,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-16T14:52:48+00:00" "time": "2024-06-28T09:36:24+00:00"
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v5.4.43", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "ae25a9145a900764158d439653d5630191155ca0" "reference": "f51cff4687547641c7d8180d74932ab40b2205ce"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0", "url": "https://api.github.com/repos/symfony/finder/zipball/f51cff4687547641c7d8180d74932ab40b2205ce",
"reference": "ae25a9145a900764158d439653d5630191155ca0", "reference": "f51cff4687547641c7d8180d74932ab40b2205ce",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2791,7 +2791,7 @@
"description": "Finds files and directories via an intuitive fluent interface", "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/finder/tree/v5.4.43" "source": "https://github.com/symfony/finder/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -2807,29 +2807,26 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-13T14:03:51+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/flex", "name": "symfony/flex",
"version": "v2.4.7", "version": "v2.4.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/flex.git", "url": "https://github.com/symfony/flex.git",
"reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402" "reference": "b0a405f40614c9f584b489d54f91091817b0e26e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/flex/zipball/92f4fba342161ff36072bd3b8e0b3c6c23160402", "url": "https://api.github.com/repos/symfony/flex/zipball/b0a405f40614c9f584b489d54f91091817b0e26e",
"reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402", "reference": "b0a405f40614c9f584b489d54f91091817b0e26e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-plugin-api": "^2.1", "composer-plugin-api": "^2.1",
"php": ">=8.0" "php": ">=8.0"
}, },
"conflict": {
"composer/semver": "<1.7.2"
},
"require-dev": { "require-dev": {
"composer/composer": "^2.1", "composer/composer": "^2.1",
"symfony/dotenv": "^5.4|^6.0", "symfony/dotenv": "^5.4|^6.0",
@ -2859,7 +2856,7 @@
"description": "Composer plugin for Symfony", "description": "Composer plugin for Symfony",
"support": { "support": {
"issues": "https://github.com/symfony/flex/issues", "issues": "https://github.com/symfony/flex/issues",
"source": "https://github.com/symfony/flex/tree/v2.4.7" "source": "https://github.com/symfony/flex/tree/v2.4.5"
}, },
"funding": [ "funding": [
{ {
@ -2875,20 +2872,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-10-07T08:51:54+00:00" "time": "2024-03-02T08:16:47+00:00"
}, },
{ {
"name": "symfony/form", "name": "symfony/form",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/form.git", "url": "https://github.com/symfony/form.git",
"reference": "4f3d91f8a7626e3cab9e3d2952321df10013a6eb" "reference": "ff45013def0a3a692e84010095e8ee5fe9a9fa43"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/form/zipball/4f3d91f8a7626e3cab9e3d2952321df10013a6eb", "url": "https://api.github.com/repos/symfony/form/zipball/ff45013def0a3a692e84010095e8ee5fe9a9fa43",
"reference": "4f3d91f8a7626e3cab9e3d2952321df10013a6eb", "reference": "ff45013def0a3a692e84010095e8ee5fe9a9fa43",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2961,7 +2958,7 @@
"description": "Allows to easily create, process and reuse HTML forms", "description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/form/tree/v5.4.44" "source": "https://github.com/symfony/form/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -2977,20 +2974,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-20T07:56:40+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/framework-bundle", "name": "symfony/framework-bundle",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/framework-bundle.git", "url": "https://github.com/symfony/framework-bundle.git",
"reference": "9ae1957fb817c0fec6d171931f675895a434d988" "reference": "18b84194424511fe541fc7962553ae423e4553c7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9ae1957fb817c0fec6d171931f675895a434d988", "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/18b84194424511fe541fc7962553ae423e4553c7",
"reference": "9ae1957fb817c0fec6d171931f675895a434d988", "reference": "18b84194424511fe541fc7962553ae423e4553c7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2998,7 +2995,7 @@
"php": ">=7.2.5", "php": ">=7.2.5",
"symfony/cache": "^5.2|^6.0", "symfony/cache": "^5.2|^6.0",
"symfony/config": "^5.3|^6.0", "symfony/config": "^5.3|^6.0",
"symfony/dependency-injection": "^5.4.44|^6.0.5", "symfony/dependency-injection": "^5.4.5|^6.0.5",
"symfony/deprecation-contracts": "^2.1|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/error-handler": "^4.4.1|^5.0.1|^6.0", "symfony/error-handler": "^4.4.1|^5.0.1|^6.0",
"symfony/event-dispatcher": "^5.1|^6.0", "symfony/event-dispatcher": "^5.1|^6.0",
@ -3111,7 +3108,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/framework-bundle/tree/v5.4.44" "source": "https://github.com/symfony/framework-bundle/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -3127,20 +3124,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-20T08:11:35+00:00" "time": "2024-06-14T09:52:52+00:00"
}, },
{ {
"name": "symfony/http-client", "name": "symfony/http-client",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-client.git", "url": "https://github.com/symfony/http-client.git",
"reference": "58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04" "reference": "87ca825717928d178de8a3458f163100925fb675"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-client/zipball/58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04", "url": "https://api.github.com/repos/symfony/http-client/zipball/87ca825717928d178de8a3458f163100925fb675",
"reference": "58d3dc6bfa5fb37137e32d52ddc202ba4d1cea04", "reference": "87ca825717928d178de8a3458f163100925fb675",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3202,7 +3199,7 @@
"http" "http"
], ],
"support": { "support": {
"source": "https://github.com/symfony/http-client/tree/v5.4.44" "source": "https://github.com/symfony/http-client/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -3218,7 +3215,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-16T14:04:28+00:00" "time": "2024-06-28T07:25:22+00:00"
}, },
{ {
"name": "symfony/http-client-contracts", "name": "symfony/http-client-contracts",
@ -3300,16 +3297,16 @@
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "ae0d217e5932aa0b70ddb4cf7822cc76d48aee53" "reference": "cf4893ca4eca3fac4ae06da1590afdbbb4217847"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/ae0d217e5932aa0b70ddb4cf7822cc76d48aee53", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cf4893ca4eca3fac4ae06da1590afdbbb4217847",
"reference": "ae0d217e5932aa0b70ddb4cf7822cc76d48aee53", "reference": "cf4893ca4eca3fac4ae06da1590afdbbb4217847",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3356,7 +3353,7 @@
"description": "Defines an object-oriented layer for the HTTP specification", "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-foundation/tree/v5.4.44" "source": "https://github.com/symfony/http-foundation/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -3372,20 +3369,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-15T07:55:06+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/http-kernel", "name": "symfony/http-kernel",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-kernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "788dcf72d9af7432a886aa3b0c5904d68087ba13" "reference": "aad4078e1210343b7cd5acb803c02f8b02f002b2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/788dcf72d9af7432a886aa3b0c5904d68087ba13", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aad4078e1210343b7cd5acb803c02f8b02f002b2",
"reference": "788dcf72d9af7432a886aa3b0c5904d68087ba13", "reference": "aad4078e1210343b7cd5acb803c02f8b02f002b2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3469,7 +3466,7 @@
"description": "Provides a structured process for converting a Request into a Response", "description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-kernel/tree/v5.4.44" "source": "https://github.com/symfony/http-kernel/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -3485,7 +3482,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-21T05:47:58+00:00" "time": "2024-06-28T11:42:41+00:00"
}, },
{ {
"name": "symfony/lock", "name": "symfony/lock",
@ -3711,20 +3708,20 @@
}, },
{ {
"name": "symfony/polyfill-intl-grapheme", "name": "symfony/polyfill-intl-grapheme",
"version": "v1.31.0", "version": "v1.30.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=7.1"
}, },
"suggest": { "suggest": {
"ext-intl": "For best performance" "ext-intl": "For best performance"
@ -3769,7 +3766,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
}, },
"funding": [ "funding": [
{ {
@ -3785,24 +3782,24 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-05-31T15:07:36+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-icu", "name": "symfony/polyfill-intl-icu",
"version": "v1.31.0", "version": "v1.30.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git", "url": "https://github.com/symfony/polyfill-intl-icu.git",
"reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78" "reference": "e76343c631b453088e2260ac41dfebe21954de81"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e76343c631b453088e2260ac41dfebe21954de81",
"reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", "reference": "e76343c631b453088e2260ac41dfebe21954de81",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=7.1"
}, },
"suggest": { "suggest": {
"ext-intl": "For best performance and support of other locales than \"en\"" "ext-intl": "For best performance and support of other locales than \"en\""
@ -3853,7 +3850,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.30.0"
}, },
"funding": [ "funding": [
{ {
@ -3869,24 +3866,24 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-05-31T15:07:36+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-normalizer", "name": "symfony/polyfill-intl-normalizer",
"version": "v1.31.0", "version": "v1.30.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "3833d7255cc303546435cb650316bff708a1c75c" "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb",
"reference": "3833d7255cc303546435cb650316bff708a1c75c", "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=7.1"
}, },
"suggest": { "suggest": {
"ext-intl": "For best performance" "ext-intl": "For best performance"
@ -3934,7 +3931,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0"
}, },
"funding": [ "funding": [
{ {
@ -3950,24 +3947,24 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-05-31T15:07:36+00:00"
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.31.0", "version": "v1.30.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
"reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=7.1"
}, },
"provide": { "provide": {
"ext-mbstring": "*" "ext-mbstring": "*"
@ -4014,7 +4011,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
}, },
"funding": [ "funding": [
{ {
@ -4030,24 +4027,24 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-06-19T12:30:46+00:00"
}, },
{ {
"name": "symfony/polyfill-php73", "name": "symfony/polyfill-php73",
"version": "v1.31.0", "version": "v1.30.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php73.git", "url": "https://github.com/symfony/polyfill-php73.git",
"reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/ec444d3f3f6505bb28d11afa41e75faadebc10a1",
"reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "reference": "ec444d3f3f6505bb28d11afa41e75faadebc10a1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=7.1"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -4090,7 +4087,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-php73/tree/v1.30.0"
}, },
"funding": [ "funding": [
{ {
@ -4106,24 +4103,24 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-05-31T15:07:36+00:00"
}, },
{ {
"name": "symfony/polyfill-php80", "name": "symfony/polyfill-php80",
"version": "v1.31.0", "version": "v1.30.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php80.git", "url": "https://github.com/symfony/polyfill-php80.git",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" "reference": "77fa7995ac1b21ab60769b7323d600a991a90433"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433",
"reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "reference": "77fa7995ac1b21ab60769b7323d600a991a90433",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=7.1"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -4170,7 +4167,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0"
}, },
"funding": [ "funding": [
{ {
@ -4186,24 +4183,24 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-05-31T15:07:36+00:00"
}, },
{ {
"name": "symfony/polyfill-php81", "name": "symfony/polyfill-php81",
"version": "v1.31.0", "version": "v1.30.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-php81.git", "url": "https://github.com/symfony/polyfill-php81.git",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af",
"reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2" "php": ">=7.1"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -4246,7 +4243,7 @@
"shim" "shim"
], ],
"support": { "support": {
"source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0"
}, },
"funding": [ "funding": [
{ {
@ -4262,20 +4259,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T11:45:10+00:00" "time": "2024-06-19T12:30:46+00:00"
}, },
{ {
"name": "symfony/property-access", "name": "symfony/property-access",
"version": "v5.4.43", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/property-access.git", "url": "https://github.com/symfony/property-access.git",
"reference": "2d751866b976a02e22743359733edc55cd20e9fd" "reference": "6e4834145c2231b34eafabe440aaac478a95b456"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/property-access/zipball/2d751866b976a02e22743359733edc55cd20e9fd", "url": "https://api.github.com/repos/symfony/property-access/zipball/6e4834145c2231b34eafabe440aaac478a95b456",
"reference": "2d751866b976a02e22743359733edc55cd20e9fd", "reference": "6e4834145c2231b34eafabe440aaac478a95b456",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4327,7 +4324,7 @@
"reflection" "reflection"
], ],
"support": { "support": {
"source": "https://github.com/symfony/property-access/tree/v5.4.43" "source": "https://github.com/symfony/property-access/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -4343,20 +4340,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-29T08:50:14+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/property-info", "name": "symfony/property-info",
"version": "v5.4.42", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/property-info.git", "url": "https://github.com/symfony/property-info.git",
"reference": "825aa937f6e8cd63dcc118d0af84d7d4979cddf4" "reference": "2c96c24961cab73bdc9020809bd82bdadd1a10f2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/property-info/zipball/825aa937f6e8cd63dcc118d0af84d7d4979cddf4", "url": "https://api.github.com/repos/symfony/property-info/zipball/2c96c24961cab73bdc9020809bd82bdadd1a10f2",
"reference": "825aa937f6e8cd63dcc118d0af84d7d4979cddf4", "reference": "2c96c24961cab73bdc9020809bd82bdadd1a10f2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4418,7 +4415,7 @@
"validator" "validator"
], ],
"support": { "support": {
"source": "https://github.com/symfony/property-info/tree/v5.4.42" "source": "https://github.com/symfony/property-info/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -4434,7 +4431,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-07-22T18:03:36+00:00" "time": "2024-06-09T07:25:10+00:00"
}, },
{ {
"name": "symfony/psr-http-message-bridge", "name": "symfony/psr-http-message-bridge",
@ -4597,16 +4594,16 @@
}, },
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v5.4.43", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/routing.git", "url": "https://github.com/symfony/routing.git",
"reference": "b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8" "reference": "6df1dd8b306649303267a760699cf04cf39b1f7b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8", "url": "https://api.github.com/repos/symfony/routing/zipball/6df1dd8b306649303267a760699cf04cf39b1f7b",
"reference": "b6f71780bbdd5e93e1c5638671cf0ba42aa8c6d8", "reference": "6df1dd8b306649303267a760699cf04cf39b1f7b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4667,7 +4664,7 @@
"url" "url"
], ],
"support": { "support": {
"source": "https://github.com/symfony/routing/tree/v5.4.43" "source": "https://github.com/symfony/routing/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -4683,7 +4680,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-27T06:36:52+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/runtime", "name": "symfony/runtime",
@ -4767,23 +4764,23 @@
}, },
{ {
"name": "symfony/security-bundle", "name": "symfony/security-bundle",
"version": "v5.4.43", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/security-bundle.git", "url": "https://github.com/symfony/security-bundle.git",
"reference": "f14a15c6c7bb37879d59c129d96c4c07c7d5db32" "reference": "86557f237fb152412048912660895ab86aa61494"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/f14a15c6c7bb37879d59c129d96c4c07c7d5db32", "url": "https://api.github.com/repos/symfony/security-bundle/zipball/86557f237fb152412048912660895ab86aa61494",
"reference": "f14a15c6c7bb37879d59c129d96c4c07c7d5db32", "reference": "86557f237fb152412048912660895ab86aa61494",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-xml": "*", "ext-xml": "*",
"php": ">=7.2.5", "php": ">=7.2.5",
"symfony/config": "^4.4|^5.0|^6.0", "symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^5.4.43|^6.4.11", "symfony/dependency-injection": "^5.3|^6.0",
"symfony/deprecation-contracts": "^2.1|^3", "symfony/deprecation-contracts": "^2.1|^3",
"symfony/event-dispatcher": "^5.1|^6.0", "symfony/event-dispatcher": "^5.1|^6.0",
"symfony/http-foundation": "^5.3|^6.0", "symfony/http-foundation": "^5.3|^6.0",
@ -4850,7 +4847,7 @@
"description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/security-bundle/tree/v5.4.43" "source": "https://github.com/symfony/security-bundle/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -4866,20 +4863,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-19T09:13:19+00:00" "time": "2024-06-21T13:58:36+00:00"
}, },
{ {
"name": "symfony/security-core", "name": "symfony/security-core",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/security-core.git", "url": "https://github.com/symfony/security-core.git",
"reference": "8089509e8c92e884fa27af56596576320c3b310d" "reference": "98789f9a01db2168079fa973358ddc4deb6a0da8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/security-core/zipball/8089509e8c92e884fa27af56596576320c3b310d", "url": "https://api.github.com/repos/symfony/security-core/zipball/98789f9a01db2168079fa973358ddc4deb6a0da8",
"reference": "8089509e8c92e884fa27af56596576320c3b310d", "reference": "98789f9a01db2168079fa973358ddc4deb6a0da8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4944,7 +4941,7 @@
"description": "Symfony Security Component - Core Library", "description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/security-core/tree/v5.4.44" "source": "https://github.com/symfony/security-core/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -4960,7 +4957,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-01T10:41:54+00:00" "time": "2024-06-28T07:24:26+00:00"
}, },
{ {
"name": "symfony/security-csrf", "name": "symfony/security-csrf",
@ -5105,16 +5102,16 @@
}, },
{ {
"name": "symfony/security-http", "name": "symfony/security-http",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/security-http.git", "url": "https://github.com/symfony/security-http.git",
"reference": "c0f81598425c170807f19b9a5413ad05323f317b" "reference": "14d271e304dce13ae77e39e6a6353c986e756b40"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/security-http/zipball/c0f81598425c170807f19b9a5413ad05323f317b", "url": "https://api.github.com/repos/symfony/security-http/zipball/14d271e304dce13ae77e39e6a6353c986e756b40",
"reference": "c0f81598425c170807f19b9a5413ad05323f317b", "reference": "14d271e304dce13ae77e39e6a6353c986e756b40",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5171,7 +5168,7 @@
"description": "Symfony Security Component - HTTP Integration", "description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/security-http/tree/v5.4.44" "source": "https://github.com/symfony/security-http/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -5187,7 +5184,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-11T06:50:28+00:00" "time": "2024-06-17T05:58:45+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@ -5274,16 +5271,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "832caa16b6d9aac6bf11747315225f5aba384c24" "reference": "065a9611e0b1fd2197a867e1fb7f2238191b7096"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24", "url": "https://api.github.com/repos/symfony/string/zipball/065a9611e0b1fd2197a867e1fb7f2238191b7096",
"reference": "832caa16b6d9aac6bf11747315225f5aba384c24", "reference": "065a9611e0b1fd2197a867e1fb7f2238191b7096",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5340,7 +5337,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v5.4.44" "source": "https://github.com/symfony/string/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -5356,20 +5353,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-20T07:56:40+00:00" "time": "2024-06-28T09:20:55+00:00"
}, },
{ {
"name": "symfony/translation", "name": "symfony/translation",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/translation.git", "url": "https://github.com/symfony/translation.git",
"reference": "6fed3a20b5b87ee9cdd9dacf545922b8fd475921" "reference": "bb51d7f183756d1ac03f50ea47dc5726518cc7e8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/6fed3a20b5b87ee9cdd9dacf545922b8fd475921", "url": "https://api.github.com/repos/symfony/translation/zipball/bb51d7f183756d1ac03f50ea47dc5726518cc7e8",
"reference": "6fed3a20b5b87ee9cdd9dacf545922b8fd475921", "reference": "bb51d7f183756d1ac03f50ea47dc5726518cc7e8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5437,7 +5434,7 @@
"description": "Provides tools to internationalize your application", "description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/translation/tree/v5.4.44" "source": "https://github.com/symfony/translation/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -5453,7 +5450,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-15T08:12:35+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/translation-contracts", "name": "symfony/translation-contracts",
@ -5535,16 +5532,16 @@
}, },
{ {
"name": "symfony/twig-bridge", "name": "symfony/twig-bridge",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/twig-bridge.git", "url": "https://github.com/symfony/twig-bridge.git",
"reference": "d049fbe0e5ba0ad758f647fa8f99e840bca43f6f" "reference": "d7b10dad12c49863c20c7f8e4cc74b9416eefbb9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d049fbe0e5ba0ad758f647fa8f99e840bca43f6f", "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/d7b10dad12c49863c20c7f8e4cc74b9416eefbb9",
"reference": "d049fbe0e5ba0ad758f647fa8f99e840bca43f6f", "reference": "d7b10dad12c49863c20c7f8e4cc74b9416eefbb9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5636,7 +5633,7 @@
"description": "Provides integration for Twig with various Symfony components", "description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/twig-bridge/tree/v5.4.44" "source": "https://github.com/symfony/twig-bridge/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -5652,20 +5649,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-11T13:27:43+00:00" "time": "2024-06-09T18:59:35+00:00"
}, },
{ {
"name": "symfony/twig-bundle", "name": "symfony/twig-bundle",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/twig-bundle.git", "url": "https://github.com/symfony/twig-bundle.git",
"reference": "b94414b3b9e0c523677c0bf31e8975231b55f18a" "reference": "997c002735c88b50a6325cca8ecf3d8723902666"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/b94414b3b9e0c523677c0bf31e8975231b55f18a", "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/997c002735c88b50a6325cca8ecf3d8723902666",
"reference": "b94414b3b9e0c523677c0bf31e8975231b55f18a", "reference": "997c002735c88b50a6325cca8ecf3d8723902666",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5726,7 +5723,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework", "description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/twig-bundle/tree/v5.4.44" "source": "https://github.com/symfony/twig-bundle/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -5742,20 +5739,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-07T13:25:07+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/validator", "name": "symfony/validator",
"version": "v5.4.44", "version": "v5.4.41",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/validator.git", "url": "https://github.com/symfony/validator.git",
"reference": "5b061420daf15b58e1599cd2191b0780ddcd2157" "reference": "e00b2547f712a97755933db45efc03123b2d2690"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/validator/zipball/5b061420daf15b58e1599cd2191b0780ddcd2157", "url": "https://api.github.com/repos/symfony/validator/zipball/e00b2547f712a97755933db45efc03123b2d2690",
"reference": "5b061420daf15b58e1599cd2191b0780ddcd2157", "reference": "e00b2547f712a97755933db45efc03123b2d2690",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5795,7 +5792,7 @@
"symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/intl": "^4.4|^5.0|^6.0", "symfony/intl": "^4.4|^5.0|^6.0",
"symfony/mime": "^4.4|^5.0|^6.0", "symfony/mime": "^4.4|^5.0|^6.0",
"symfony/property-access": "^5.4|^6.0", "symfony/property-access": "^4.4|^5.0|^6.0",
"symfony/property-info": "^5.3|^6.0", "symfony/property-info": "^5.3|^6.0",
"symfony/translation": "^5.4.35|~6.3.12|^6.4.3", "symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
"symfony/yaml": "^4.4|^5.0|^6.0" "symfony/yaml": "^4.4|^5.0|^6.0"
@ -5839,7 +5836,7 @@
"description": "Provides tools to validate values", "description": "Provides tools to validate values",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/validator/tree/v5.4.44" "source": "https://github.com/symfony/validator/tree/v5.4.41"
}, },
"funding": [ "funding": [
{ {
@ -5855,20 +5852,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-19T08:27:53+00:00" "time": "2024-06-10T09:18:21+00:00"
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v5.4.43", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "6be6a6a8af4818564e3726fc65cf936f34743cef" "reference": "af8868a6e9d6082dfca11f1a1f205ae93a8b6d93"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/6be6a6a8af4818564e3726fc65cf936f34743cef", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/af8868a6e9d6082dfca11f1a1f205ae93a8b6d93",
"reference": "6be6a6a8af4818564e3726fc65cf936f34743cef", "reference": "af8868a6e9d6082dfca11f1a1f205ae93a8b6d93",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5928,7 +5925,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v5.4.43" "source": "https://github.com/symfony/var-dumper/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -5944,7 +5941,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-30T16:01:46+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/var-exporter", "name": "symfony/var-exporter",
@ -6025,16 +6022,16 @@
}, },
{ {
"name": "symfony/web-profiler-bundle", "name": "symfony/web-profiler-bundle",
"version": "v5.4.43", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git", "url": "https://github.com/symfony/web-profiler-bundle.git",
"reference": "8f1628f1361e4623a6c2b373c3594845d6aacb79" "reference": "a29669617c4e63785f363571a190a706b9022890"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8f1628f1361e4623a6c2b373c3594845d6aacb79", "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a29669617c4e63785f363571a190a706b9022890",
"reference": "8f1628f1361e4623a6c2b373c3594845d6aacb79", "reference": "a29669617c4e63785f363571a190a706b9022890",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6085,7 +6082,7 @@
"description": "Provides a development tool that gives detailed information about the execution of any request", "description": "Provides a development tool that gives detailed information about the execution of any request",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.43" "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -6101,7 +6098,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-08-08T09:11:47+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "symfony/webpack-encore-bundle", "name": "symfony/webpack-encore-bundle",
@ -6178,16 +6175,16 @@
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v5.4.44", "version": "v5.4.40",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a" "reference": "81cad0ceab3d61fe14fe941ff18a230ac9c80f83"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/7025b964f123bbf1896d7563db6ec7f1f63e918a", "url": "https://api.github.com/repos/symfony/yaml/zipball/81cad0ceab3d61fe14fe941ff18a230ac9c80f83",
"reference": "7025b964f123bbf1896d7563db6ec7f1f63e918a", "reference": "81cad0ceab3d61fe14fe941ff18a230ac9c80f83",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6233,7 +6230,7 @@
"description": "Loads and dumps YAML files", "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/yaml/tree/v5.4.44" "source": "https://github.com/symfony/yaml/tree/v5.4.40"
}, },
"funding": [ "funding": [
{ {
@ -6249,28 +6246,28 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-16T14:36:56+00:00" "time": "2024-05-31T14:33:22+00:00"
}, },
{ {
"name": "twig/twig", "name": "twig/twig",
"version": "v3.14.0", "version": "v3.10.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/twigphp/Twig.git", "url": "https://github.com/twigphp/Twig.git",
"reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72" "reference": "67f29781ffafa520b0bbfbd8384674b42db04572"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72", "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572",
"reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72", "reference": "67f29781ffafa520b0bbfbd8384674b42db04572",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=8.0.2", "php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8", "symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3", "symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php81": "^1.29" "symfony/polyfill-php80": "^1.22"
}, },
"require-dev": { "require-dev": {
"psr/container": "^1.0|^2.0", "psr/container": "^1.0|^2.0",
@ -6316,7 +6313,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/twigphp/Twig/issues", "issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v3.14.0" "source": "https://github.com/twigphp/Twig/tree/v3.10.3"
}, },
"funding": [ "funding": [
{ {
@ -6328,90 +6325,10 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-09-09T17:55:12+00:00" "time": "2024-05-16T10:04:27+00:00"
}
],
"packages-dev": [
{
"name": "symfony/debug-bundle",
"version": "v5.4.40",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug-bundle.git",
"reference": "177f79296705823eee0d7dd79773f3a9df884fe0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug-bundle/zipball/177f79296705823eee0d7dd79773f3a9df884fe0",
"reference": "177f79296705823eee0d7dd79773f3a9df884fe0",
"shasum": ""
},
"require": {
"ext-xml": "*",
"php": ">=7.2.5",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/polyfill-php80": "^1.16",
"symfony/twig-bridge": "^4.4|^5.0|^6.0",
"symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"conflict": {
"symfony/config": "<4.4",
"symfony/dependency-injection": "<5.2"
},
"require-dev": {
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/web-profiler-bundle": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/config": "For service container configuration",
"symfony/dependency-injection": "For using as a service from the container"
},
"type": "symfony-bundle",
"autoload": {
"psr-4": {
"Symfony\\Bundle\\DebugBundle\\": ""
},
"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": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/debug-bundle/tree/v5.4.40"
},
"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-05-31T14:33:22+00:00"
} }
], ],
"packages-dev": [],
"aliases": [], "aliases": [],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": [],
@ -6423,5 +6340,5 @@
"ext-iconv": "*" "ext-iconv": "*"
}, },
"platform-dev": [], "platform-dev": [],
"plugin-api-version": "2.3.0" "plugin-api-version": "2.6.0"
} }

View File

@ -7,5 +7,4 @@ return [
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true], Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
Sentry\SentryBundle\SentryBundle::class => ['all' => true], Sentry\SentryBundle\SentryBundle::class => ['all' => true],
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
]; ];

View File

@ -1,5 +0,0 @@
when@dev:
debug:
# Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
# See the "server:dump" command to start a new server.
dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"

View File

@ -13,7 +13,12 @@ services:
ports: ports:
- 8082:8071 - 8082:8071
volumes: volumes:
- .:/app - ./src:/app/src
- ./config:/app/config
- ./translations:/app/translations
- ./templates:/app/templates
- /etc/localtime:/etc/localtime:ro
- $HOME/.ssh:/root/.host-ssh:ro
tmpfs: tmpfs:
- /var/www/var/logs:uid=${FIXUID:-1000},gid=${FIXGID:-1000} - /var/www/var/logs:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
- /var/www/var/cache:uid=${FIXUID:-1000},gid=${FIXGID:-1000} - /var/www/var/cache:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
@ -26,7 +31,7 @@ services:
- "localhost:host-gateway" - "localhost:host-gateway"
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
environment: environment:
- APP_ENV=dev - APP_ENV=prod
- PHP_FPM_MEMORY_LIMIT=128m - PHP_FPM_MEMORY_LIMIT=128m
- APP_LOCALES=fr,en - APP_LOCALES=fr,en
- HYDRA_ADMIN_BASE_URL=http://hydra:4445 - HYDRA_ADMIN_BASE_URL=http://hydra:4445

View File

@ -10,8 +10,7 @@ ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
php81-soap=${PHP_PKG_VERSION} \ php81-soap=${PHP_PKG_VERSION} \
php81-ldap=${PHP_PKG_VERSION} \ php81-ldap=${PHP_PKG_VERSION} \
php81-pdo_mysql=${PHP_PKG_VERSION} \ php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION} \ php81-bcmath=${PHP_PKG_VERSION}"
php81-pecl-xdebug"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-base-2024.10.4-stable.1529.b630c69 FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-base-2024.7.25-stable.959.7896915
RUN chown 1000:www-data -R /app RUN chown 1000:www-data -R /app

View File

@ -10,9 +10,8 @@ ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
php81-soap=${PHP_PKG_VERSION} \ php81-soap=${PHP_PKG_VERSION} \
php81-ldap=${PHP_PKG_VERSION} \ php81-ldap=${PHP_PKG_VERSION} \
php81-pdo_mysql=${PHP_PKG_VERSION} \ php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION} \ php81-bcmath=${PHP_PKG_VERSION}"
php81-pecl-xdebug"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2024.10.4-stable.1529.b630c69 FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2024.7.25-stable.959.7896915
RUN chown 1000:www-data -R /app RUN chown 1000:www-data -R /app
USER www-data USER www-data

View File

@ -32,9 +32,21 @@ class SecurityController extends AbstractController
$loginForm->addError(new FormError($trans->trans('error.login', [], 'messages'))); $loginForm->addError(new FormError($trans->trans('error.login', [], 'messages')));
$request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_LOGIN); $request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_LOGIN);
} }
if ($request->getSession()->has(SQLLoginUserAuthenticator::TECHNICAL_ERROR)) { if ($request->getSession()->has(SQLLoginUserAuthenticator::ERROR_PDO)) {
$loginForm->addError(new FormError($trans->trans('error.technical', [], 'messages'))); $loginForm->addError(new FormError($trans->trans('error.pdo', [], 'messages')));
$request->getSession()->remove(SQLLoginUserAuthenticator::TECHNICAL_ERROR); $request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_PDO);
}
if ($request->getSession()->has(SQLLoginUserAuthenticator::ERROR_CONFIGURATION)) {
$loginForm->addError(new FormError($trans->trans('error.configuration', [], 'messages')));
$request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_CONFIGURATION);
}
if ($request->getSession()->has(SQLLoginUserAuthenticator::ERROR_DATA_TO_FETCH_CONFIGURATION)) {
$loginForm->addError(new FormError($trans->trans('error.data_to_fetch_configuration', [], 'messages')));
$request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_DATA_TO_FETCH_CONFIGURATION);
}
if ($request->getSession()->has(SQLLoginUserAuthenticator::ERROR_SECURITY_PATTERN_CONFIGURATION)) {
$loginForm->addError(new FormError($trans->trans('error.security_pattern_configuration', [], 'messages')));
$request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_SECURITY_PATTERN_CONFIGURATION);
} }
} }

View File

@ -3,20 +3,14 @@
namespace App\Hydra; namespace App\Hydra;
use App\Hydra\Exception\InvalidChallengeException; use App\Hydra\Exception\InvalidChallengeException;
use Exception;
use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface; use Symfony\Contracts\HttpClient\ResponseInterface;
class Client class Client
{ {
private HttpClientInterface $client; protected $client;
private const MAX_RETRY = 3;
private const SLEEP_TIME = [ protected $hydraAdminBaseUrl;
5,
500,
5000,
];
private string $hydraAdminBaseUrl;
public function __construct(HttpClientInterface $client, string $hydraAdminBaseUrl) public function __construct(HttpClientInterface $client, string $hydraAdminBaseUrl)
{ {
@ -28,11 +22,11 @@ class Client
{ {
$response = $this->client->request( $response = $this->client->request(
'GET', 'GET',
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/login', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/login',
[ [
'query' => [ 'query' => [
'login_challenge' => $loginChallenge, 'login_challenge' => $loginChallenge,
], ]
] ]
); );
@ -41,6 +35,7 @@ class Client
throw new InvalidChallengeException(); throw new InvalidChallengeException();
} }
return $response; return $response;
} }
@ -48,11 +43,11 @@ class Client
{ {
$response = $this->client->request( $response = $this->client->request(
'GET', 'GET',
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/logout', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/logout',
[ [
'query' => [ 'query' => [
'logout_challenge' => $logoutChallenge, 'logout_challenge' => $logoutChallenge,
], ]
] ]
); );
@ -61,39 +56,28 @@ class Client
throw new InvalidChallengeException(); throw new InvalidChallengeException();
} }
return $response; return $response;
} }
public function fetchConsentRequestInfo(string $consentChallenge): ResponseInterface public function fetchConsentRequestInfo(string $consentChallenge): ResponseInterface
{ {
$attempt = 0; $response = $this->client->request(
while ($attempt < self::MAX_RETRY) { 'GET',
$response = $this->client->request( $this->hydraAdminBaseUrl . '/oauth2/auth/requests/consent',
'GET', [
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/consent', 'query' => [
[ 'consent_challenge' => $consentChallenge,
'query' => [
'consent_challenge' => $consentChallenge,
],
] ]
); ]
);
$status = $response->getStatusCode(); switch ($response->getStatusCode()) {
if (503 === $status) { case 404:
++$attempt; throw new InvalidChallengeException();
usleep(1000 * self::SLEEP_TIME[$attempt] + rand(1, 5) * 1000);
continue;
}
switch ($status) {
case 404:
throw new InvalidChallengeException();
}
break;
}
if (self::MAX_RETRY === $attempt) {
throw new Exception(sprintf('Fetch consent a rencontré une erreur %s après %s tentatives', $response->getStatusCode(), self::MAX_RETRY));
} }
return $response; return $response;
} }
@ -101,13 +85,13 @@ class Client
{ {
$response = $this->client->request( $response = $this->client->request(
'PUT', 'PUT',
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/login/accept', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/login/accept',
[ [
'query' => [ 'query' => [
'login_challenge' => $loginChallenge, 'login_challenge' => $loginChallenge,
], ],
'headers' => [ 'headers' => [
'Content-Type' => 'application/json', 'Content-Type' => 'application/json'
], ],
'body' => json_encode($payload), 'body' => json_encode($payload),
] ]
@ -120,13 +104,13 @@ class Client
{ {
$response = $this->client->request( $response = $this->client->request(
'PUT', 'PUT',
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/consent/accept', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/consent/accept',
[ [
'query' => [ 'query' => [
'consent_challenge' => $consentChallenge, 'consent_challenge' => $consentChallenge,
], ],
'headers' => [ 'headers' => [
'Content-Type' => 'application/json', 'Content-Type' => 'application/json'
], ],
'body' => json_encode($payload), 'body' => json_encode($payload),
] ]
@ -139,13 +123,13 @@ class Client
{ {
$response = $this->client->request( $response = $this->client->request(
'PUT', 'PUT',
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/logout/accept', $this->hydraAdminBaseUrl . '/oauth2/auth/requests/logout/accept',
[ [
'query' => [ 'query' => [
'logout_challenge' => $logoutChallenge, 'logout_challenge' => $logoutChallenge,
], ],
'headers' => [ 'headers' => [
'Content-Type' => 'application/json', 'Content-Type' => 'application/json'
], ],
] ]
); );

View File

@ -4,6 +4,6 @@ namespace App\SQLLogin\Exception;
use Exception; use Exception;
class EmptyResultException extends Exception class DatabaseConnectionException extends Exception
{ {
} }

View File

@ -0,0 +1,9 @@
<?php
namespace App\SQLLogin\Exception;
use Exception;
class InvalidSQLLoginAlgoException extends Exception
{
}

View File

@ -0,0 +1,9 @@
<?php
namespace App\SQLLogin\Exception;
use Exception;
class LoginElementsConfigurationException extends Exception
{
}

View File

@ -0,0 +1,9 @@
<?php
namespace App\SQLLogin\Exception;
use Exception;
class NullPasswordColumnNameException extends Exception
{
}

View File

@ -12,6 +12,7 @@ class SQLLoginConnect extends AbstractController
/** /**
* Méthode qui crée l'unique instance de la classe * Méthode qui crée l'unique instance de la classe
* si elle n'existe pas encore puis la retourne. * si elle n'existe pas encore puis la retourne.
*
*/ */
public static function getInstance(): SQLLoginConnect public static function getInstance(): SQLLoginConnect
{ {

View File

@ -72,37 +72,33 @@ class SQLLoginRequest
return $this->config[self::SUBJECT_REWRITE_EXPRESSION]; return $this->config[self::SUBJECT_REWRITE_EXPRESSION];
} }
private function getDataFields(): array public function getRequestScope(): string
{ {
$scope = '';
if (!$this->config[self::DATA_TO_FETCH]) { if (!$this->config[self::DATA_TO_FETCH]) {
throw new NullDataToFetchException(); throw new NullDataToFetchException();
} }
return $this->config[self::DATA_TO_FETCH]; foreach ($this->config[self::DATA_TO_FETCH] as $data) {
$scope .= $data.',';
}
// On enlève la dernière virgule
$scope = substr($scope, 0, -1);
return 'SELECT '.$scope.' FROM '.$this->getTableName().' WHERE '.$this->getLoginColumnName().' = :'.$this->getLoginColumnName().';';
} }
/** /**
* Construction de la string pour la requête préparée selon la configuration yaml * Construction de la string pour la requête préparée selon la configuration yaml
* intègre la récupération du mot de passe hashé, du salt et de besoin d'upgrade de la méthode de hashage * intègre la récupération du mot de passe hashé, du salt et de besoin d'upgrade de la méthode de hashage
*/ */
private function getPasswordFields(): array public function getRequestPassword(): string
{ {
$fields[] = $this->getPasswordColumnName(); $fields = $this->getPasswordColumnName();
if (!empty($this->getSaltColumnName())) { if (!empty($this->getSaltColumnName())) {
$fields[] = $this->getSaltColumnName(); $fields .= ', '.$this->getSaltColumnName();
} }
return $fields; return 'SELECT '.$fields.' FROM '.$this->getTableName().' WHERE '.$this->getLoginColumnName().' = :'.$this->getLoginColumnName().';';
}
/**
* Construction de la string pour la requête préparée selon la configuration yaml
* intègre la récupération du mot de passe hashé, du salt et de besoin d'upgrade de la méthode de hashage
*/
public function getDatasRequest(): string
{
$fields = join(',', array_merge($this->getPasswordFields(), $this->getDataFields()));
return 'SELECT '.$fields.' FROM '.$this->getTableName().' WHERE LOWER('.$this->getLoginColumnName().') = LOWER(:'.$this->getLoginColumnName().');';
} }
} }

View File

@ -88,7 +88,7 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
foreach ($this->securityPattern as $term) { foreach ($this->securityPattern as $term) {
if (self::PEPPER_PATTERN !== $term && self::PASSWORD_PATTERN !== $term && self::SALT_PATTERN !== $term) { if (self::PEPPER_PATTERN !== $term && self::PASSWORD_PATTERN !== $term && self::SALT_PATTERN !== $term) {
$this->loggerInterface->critical('La configuration du security pattern est invalide, les termes autorisés sont : '.self::PASSWORD_PATTERN.', '.self::SALT_PATTERN.' et '.self::PEPPER_PATTERN); $this->loggerInterface->critical('La configuration du security pattern est invalide, les termes autorisés sont : '.self::PASSWORD_PATTERN.', '.self::SALT_PATTERN.' et '.self::PEPPER_PATTERN);
throw new SecurityPatternConfigurationException('La configuration du security pattern est invalide, les termes autorisés sont : '.self::PASSWORD_PATTERN.', '.self::SALT_PATTERN.' et '.self::PEPPER_PATTERN); throw new SecurityPatternConfigurationException();
} }
} }
$completedPlainPassword = ''; $completedPlainPassword = '';

View File

@ -5,12 +5,12 @@ namespace App\Security;
use App\Entity\User; use App\Entity\User;
use App\Security\Hasher\PasswordEncoder; use App\Security\Hasher\PasswordEncoder;
use App\Service\SQLLoginService; use App\Service\SQLLoginService;
use App\SQLLogin\Exception\DatabaseConnectionException;
use App\SQLLogin\Exception\DataToFetchConfigurationException; use App\SQLLogin\Exception\DataToFetchConfigurationException;
use App\SQLLogin\Exception\EmptyResultException;
use App\SQLLogin\Exception\InvalidSQLPasswordException; use App\SQLLogin\Exception\InvalidSQLPasswordException;
use App\SQLLogin\Exception\LoginElementsConfigurationException;
use App\SQLLogin\Exception\SecurityPatternConfigurationException; use App\SQLLogin\Exception\SecurityPatternConfigurationException;
use App\SQLLogin\SQLLoginRequest; use Exception;
use PDOException;
use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
@ -25,20 +25,21 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
{ {
public const LOGIN_ROUTE = 'app_login'; public const LOGIN_ROUTE = 'app_login';
public const ERROR_LOGIN = 'error_login'; public const ERROR_LOGIN = 'error_login';
public const TECHNICAL_ERROR = 'technical_error'; public const ERROR_PDO = 'error_pdo';
public const ERROR_SQL_LOGIN = 'error_sql_login';
public const ERROR_CONFIGURATION = 'error_configuration';
public const ERROR_DATA_TO_FETCH_CONFIGURATION = 'error_data_to_fetch_configuration';
public const ERROR_SECURITY_PATTERN_CONFIGURATION = 'error_security_pattern_configuration';
private string $baseUrl; private string $baseUrl;
private SQLLoginService $sqlLoginService;
private PasswordEncoder $passwordHasher;
public function __construct( public function __construct(string $baseUrl, SQLLoginService $sqlLoginService, PasswordEncoder $passwordHasher)
string $baseUrl, {
private SQLLoginService $sqlLoginService,
private PasswordEncoder $passwordHasher,
private SQLLoginRequest $sqlLoginRequest
) {
$this->baseUrl = $baseUrl; $this->baseUrl = $baseUrl;
$this->sqlLoginService = $sqlLoginService; $this->sqlLoginService = $sqlLoginService;
$this->passwordHasher = $passwordHasher; $this->passwordHasher = $passwordHasher;
$this->sqlLoginRequest = $sqlLoginRequest;
} }
/** /**
@ -71,47 +72,52 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
$rememberMe = isset($form['_remember_me']) ? true : false; $rememberMe = isset($form['_remember_me']) ? true : false;
$session = $request->getSession(); $session = $request->getSession();
try { try {
$datas = $this->sqlLoginService->fetchPasswordAndDatas($login); // requête préparée
} catch (EmptyResultException $e) { list($remoteHashedPassword, $remoteSalt) = $this->sqlLoginService->fetchPassword($login);
$session->set(self::ERROR_LOGIN, true); } catch (DatabaseConnectionException $e) {
$session->set(self::ERROR_PDO, true);
throw new AuthenticationException(); throw new AuthenticationException();
} catch (DataToFetchConfigurationException|PDOException $e) { } catch (LoginElementsConfigurationException $e) {
\Sentry\captureException($e); $session->set(self::ERROR_CONFIGURATION, true);
$session->set(self::TECHNICAL_ERROR, true); throw new AuthenticationException();
} catch (Exception $exception) {
$request->getSession()->set(self::ERROR_LOGIN, true);
throw new AuthenticationException(); throw new AuthenticationException();
} }
$remoteHashedPassword = $datas[$this->sqlLoginRequest->getPasswordColumnName()];
unset($datas[$this->sqlLoginRequest->getPasswordColumnName()]);
$remoteSalt = null;
if ($this->sqlLoginRequest->getSaltColumnName() && isset($datas[$this->sqlLoginRequest->getSaltColumnName()])) {
$remoteSalt = $datas[$this->sqlLoginRequest->getSaltColumnName()];
unset($datas[$this->sqlLoginRequest->getSaltColumnName()]);
}
if (null === $remoteHashedPassword) { if (null === $remoteHashedPassword) {
$remoteHashedPassword = ''; $remoteHashedPassword = '';
} }
try { try {
// Comparaison remote hash et hash du input password + salt // Comparaison remote hash et hash du input password + salt
$this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt); $this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt);
$attributes = $this->sqlLoginService->fetchDatas($login);
$user = new User($login, $remoteHashedPassword, $attributes, $rememberMe);
$loader = function (string $userIdentifier) use ($user) {
return $user->getLogin() == $userIdentifier ? $user : null;
};
$passport = new SelfValidatingPassport(new UserBadge($login, $loader));
if ($rememberMe) {
$passport->addBadge(new RememberMeBadge());
}
$passport->setAttribute('attributes', $user->getAttributes());
return $passport;
} catch (InvalidSQLPasswordException $e) { } catch (InvalidSQLPasswordException $e) {
$session->set(self::ERROR_LOGIN, true); $session->set(self::ERROR_LOGIN, true);
throw new AuthenticationException(); throw new AuthenticationException();
} catch (DataToFetchConfigurationException $e) {
$session->set(self::ERROR_DATA_TO_FETCH_CONFIGURATION, true);
throw new AuthenticationException();
} catch (DatabaseConnectionException $e) {
$session->set(self::ERROR_PDO, true);
throw new AuthenticationException();
} catch (SecurityPatternConfigurationException $e) { } catch (SecurityPatternConfigurationException $e) {
\Sentry\captureException($e); $session->set(self::ERROR_SECURITY_PATTERN_CONFIGURATION, true);
$session->set(self::TECHNICAL_ERROR, true);
throw new AuthenticationException(); throw new AuthenticationException();
} }
$user = new User($login, $remoteHashedPassword, $datas, $rememberMe);
$loader = function (string $userIdentifier) use ($user) {
return $user->getLogin() == $userIdentifier ? $user : null;
};
$passport = new SelfValidatingPassport(new UserBadge($login, $loader));
if ($rememberMe) {
$passport->addBadge(new RememberMeBadge());
}
$passport->setAttribute('attributes', $user->getAttributes());
return $passport;
} }
protected function getLoginUrl(Request $request): string protected function getLoginUrl(Request $request): string

View File

@ -2,62 +2,100 @@
namespace App\Service; namespace App\Service;
use App\SQLLogin\Exception\EmptyResultException; use App\SQLLogin\Exception\DatabaseConnectionException;
use App\SQLLogin\Exception\DataToFetchConfigurationException;
use App\SQLLogin\Exception\LoginElementsConfigurationException;
use App\SQLLogin\Exception\NullDataToFetchException;
use App\SQLLogin\SQLLoginConnect; use App\SQLLogin\SQLLoginConnect;
use App\SQLLogin\SQLLoginRequest; use App\SQLLogin\SQLLoginRequest;
use Exception;
use PDO; use PDO;
use PDOException;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class SQLLoginService extends AbstractController class SQLLoginService extends AbstractController
{ {
public const MAX_RETRY = 3; private SQLLoginRequest $sqlLoginRequest;
public function __construct( public function __construct(SQLLoginRequest $sqlLoginRequest, private LoggerInterface $loggerInterface)
private SQLLoginRequest $sqlLoginRequest, {
private LoggerInterface $loggerInterface
) {
$this->sqlLoginRequest = $sqlLoginRequest; $this->sqlLoginRequest = $sqlLoginRequest;
$this->loggerInterface = $loggerInterface; $this->loggerInterface = $loggerInterface;
} }
public function fetchPasswordAndDatas(string $login): array public function fetchDatas(string $login): array
{ {
$dataRequest = $this->sqlLoginRequest->getDatasRequest(); if (empty($login)) {
$datas = $this->executeRequestWithLogin($dataRequest, $login); throw new Exception('Connexion échouée, le login ne peut pas être vide');
}
try {
$dbh = $this->getConnection();
} catch (PDOException $e) {
$this->loggerInterface->critical($e->getMessage());
throw new DatabaseConnectionException($e->getMessage());
}
try {
// forge de la requête
$request = $this->sqlLoginRequest->getRequestScope();
} catch (NullDataToFetchException $e) {
throw new DataToFetchConfigurationException($e->getMessage());
}
try {
// Préparation de la requête
$query = $dbh->prepare($request);
$query->execute([$this->sqlLoginRequest->getLoginColumnName() => $login]);
$datas = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();
} catch (PDOException $e) {
$this->loggerInterface->critical($e->getMessage());
throw new DataToFetchConfigurationException($e->getMessage());
}
if (false === $datas) {
throw new Exception(sprintf('La requête sql "%s" a renvoyé un résultat incorrect.', $request));
}
return $datas; return $datas;
} }
private function executeRequestWithLogin(string $request, string $login): array public function fetchPassword(string $login): array
{ {
$attempt = 0; try {
while ($attempt < self::MAX_RETRY) { $dbh = $this->getConnection();
$pdo = $this->getConnection(); } catch (PDOException $e) {
$query = $pdo->prepare($request); $this->loggerInterface->critical($e->getMessage());
$query->execute([$this->sqlLoginRequest->getLoginColumnName() => $login]); throw new DatabaseConnectionException($e->getMessage());
$datas = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();
if (false === $datas) {
usleep(3000);
++$attempt;
} else {
break;
}
}
if (self::MAX_RETRY === $attempt) {
throw new EmptyResultException();
} }
return $datas; // forge de la requête
$request = $this->sqlLoginRequest->getRequestPassword();
try {
$query = $dbh->prepare($request);
$query->execute([$this->sqlLoginRequest->getLoginColumnName() => $login]);
$password = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();
} catch (PDOException $e) {
$this->loggerInterface->critical($e->getMessage());
throw new LoginElementsConfigurationException($e->getMessage());
}
if (!$password) {
throw new Exception('Une erreur est survenue lors de la récupération des données');
}
return [
$password[$this->sqlLoginRequest->getPasswordColumnName()],
isset($password[$this->sqlLoginRequest->getSaltColumnName()]) ? $password[$this->sqlLoginRequest->getSaltColumnName()] : null,
];
} }
private function getConnection(): PDO private function getConnection(): PDO
{ {
// Appel du singleton // Appel du singleton
$sqlLogin = SQLLoginConnect::getInstance(); $sqlLogin = SQLLoginConnect::getInstance();
$pdo = $sqlLogin->connect($this->sqlLoginRequest->getDatabaseDsn(), $this->sqlLoginRequest->getDbUser(), $this->sqlLoginRequest->getDbPassword()); // Connection bdd
return $sqlLogin->connect($this->sqlLoginRequest->getDatabaseDsn(), $this->sqlLoginRequest->getDbUser(), $this->sqlLoginRequest->getDbPassword());
return $pdo;
} }
} }

View File

@ -59,18 +59,6 @@
"bin/console" "bin/console"
] ]
}, },
"symfony/debug-bundle": {
"version": "5.4",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.3",
"ref": "5aa8aa48234c8eb6dbdd7b3cd5d791485d2cec4b"
},
"files": [
"config/packages/debug.yaml"
]
},
"symfony/flex": { "symfony/flex": {
"version": "1.21", "version": "1.21",
"recipe": { "recipe": {

View File

@ -9,9 +9,25 @@
<source>error.login</source> <source>error.login</source>
<target>Incorrect login or password</target> <target>Incorrect login or password</target>
</trans-unit> </trans-unit>
<trans-unit id="1QRR4uA" resname="error.technical"> <trans-unit id="36t19qm" resname="error.sql_login">
<source>error.technical</source> <source>error.sql_login</source>
<target>A technical error happened, try again later</target> <target>Connection to database encountered a problem</target>
</trans-unit>
<trans-unit id="lBole_G" resname="error.pdo">
<source>error.pdo</source>
<target>Connection to database encountered a problem</target>
</trans-unit>
<trans-unit id="1QRR4uA" resname="error.configuration">
<source>error.configuration</source>
<target>Identification data references do not exist in the database</target>
</trans-unit>
<trans-unit id="4EPIhsV" resname="error.data_to_fetch_configuration">
<source>error.data_to_fetch_configuration</source>
<target>Data references to be transmitted do not exist</target>
</trans-unit>
<trans-unit id="6iuTNs3" resname="error.security_pattern_configuration">
<source>error.security_pattern_configuration</source>
<target>The security pattern is not allowed</target>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>

View File

@ -9,9 +9,25 @@
<source>error.login</source> <source>error.login</source>
<target>Login ou mot de passe inconnu</target> <target>Login ou mot de passe inconnu</target>
</trans-unit> </trans-unit>
<trans-unit id="1QRR4uA" resname="error.technical"> <trans-unit id="36t19qm" resname="error.sql_login">
<source>error.technical</source> <source>error.sql_login</source>
<target>Une erreur technique s'est produite, rééssayez plus tard</target> <target>La connexion à la base de données a rencontré un problème</target>
</trans-unit>
<trans-unit id="lBole_G" resname="error.pdo">
<source>error.pdo</source>
<target>La connexion à la base de données a rencontré un problème</target>
</trans-unit>
<trans-unit id="1QRR4uA" resname="error.configuration">
<source>error.configuration</source>
<target>Les références de données d'identification n'existent pas dans la base de données</target>
</trans-unit>
<trans-unit id="4EPIhsV" resname="error.data_to_fetch_configuration">
<source>error.data_to_fetch_configuration</source>
<target>Les références de données à transmettre n'existent pas</target>
</trans-unit>
<trans-unit id="6iuTNs3" resname="error.security_pattern_configuration">
<source>error.security_pattern_configuration</source>
<target>Le patron de sécurité n'est pas autorisé</target>
</trans-unit> </trans-unit>
</body> </body>
</file> </file>