From 0e20ab95a70adf55f5d5191bdce31c71ea028f96 Mon Sep 17 00:00:00 2001 From: Christian Moser Date: Mon, 9 Dec 2024 08:44:47 +0100 Subject: [PATCH] 2024.12.09 08:44:47 --- PO/LINGUAS | 1 - PO/POTFILES | 16 - PO/POTFILES.webroot | 10 - PO/PTOFILES | 1 - PO/compilemessages | 19 - PO/de.po | 151 -- PO/makemessages | 35 - PO/messages.pot | 150 -- PO/webroot/de.po | 18 - PO/webroot/messages.pot | 18 - composer.json | 87 +- composer.lock | 2133 +++++++++-------- config/bundles.php | 1 + config/packages/csrf.yaml | 11 + config/packages/mailer.yaml | 1 + config/packages/reset_password.yaml | 4 + config/packages/uid.yaml | 4 - migrations/Version20241201211313.php | 32 - ...01030110.php => Version20241204160251.php} | 25 +- migrations/Version20241206014353.php | 41 + security.yaml | 1 + src/Controller/Admin/DashboardController.php | 46 + .../Admin/WebrootFileCrudController.php | 28 + .../WebrootFilePermissionCrudController.php | 28 + .../Admin/WebrootRoleCrudController.php | 28 + .../Admin/WebrootUserCrudController.php | 28 + src/Controller/MainController.php | 41 + src/Controller/ResetPasswordController.php | 181 ++ src/Controller/SecurityController.php | 15 +- src/Controller/SetupController.php | 30 +- src/Controller/WebrootController.php | 144 +- src/Controller/WebrootSetupController.php | 110 +- src/Entity/ResetPasswordRequest.php | 39 + src/Entity/WebrootFile.php | 13 +- src/Entity/WebrootUser.php | 1 + src/Form/ChangePasswordFormType.php | 58 + src/Form/ResetPasswordRequestFormType.php | 31 + .../ResetPasswordRequestRepository.php | 32 + src/Repository/WebrootFileRepository.php | 104 + symfony.lock | 39 +- templates/main/index.html.twig | 7 + .../reset_password/check_email.html.twig | 11 + templates/reset_password/de.email.html.twig | 9 + templates/reset_password/email.html.twig | 9 + templates/reset_password/request.html.twig | 22 + templates/reset_password/reset.html.twig | 12 + templates/security/login.html.twig | 9 +- templates/setup/initial-setup.run.html.twig | 7 +- templates/webroot/de.directory.html.twig | 12 +- templates/webroot/directory.html.twig | 32 +- translations/ResetPasswordBundle.de.yaml | 13 + translations/ResetPasswordBundle.en.yaml | 13 + translations/mydevel.webroot.en.yaml | 13 - .../mydevel.webroot.role+intl-icu.en de.po | 35 + .../mydevel.webroot.setup+intl-icu.en de.po | 173 ++ translations/security.de.yaml | 11 +- translations/security.en.yaml | 11 +- v7.2.0 | 0 58 files changed, 2569 insertions(+), 1585 deletions(-) delete mode 100644 PO/LINGUAS delete mode 100644 PO/POTFILES delete mode 100644 PO/POTFILES.webroot delete mode 100644 PO/PTOFILES delete mode 100644 PO/compilemessages delete mode 100644 PO/de.po delete mode 100644 PO/makemessages delete mode 100644 PO/messages.pot delete mode 100644 PO/webroot/de.po delete mode 100644 PO/webroot/messages.pot create mode 100644 config/packages/csrf.yaml create mode 100644 config/packages/reset_password.yaml delete mode 100644 config/packages/uid.yaml delete mode 100644 migrations/Version20241201211313.php rename migrations/{Version20241201030110.php => Version20241204160251.php} (76%) create mode 100644 migrations/Version20241206014353.php create mode 100644 security.yaml create mode 100644 src/Controller/Admin/DashboardController.php create mode 100644 src/Controller/Admin/WebrootFileCrudController.php create mode 100644 src/Controller/Admin/WebrootFilePermissionCrudController.php create mode 100644 src/Controller/Admin/WebrootRoleCrudController.php create mode 100644 src/Controller/Admin/WebrootUserCrudController.php create mode 100644 src/Controller/ResetPasswordController.php create mode 100644 src/Entity/ResetPasswordRequest.php create mode 100644 src/Form/ChangePasswordFormType.php create mode 100644 src/Form/ResetPasswordRequestFormType.php create mode 100644 src/Repository/ResetPasswordRequestRepository.php create mode 100644 templates/reset_password/check_email.html.twig create mode 100644 templates/reset_password/de.email.html.twig create mode 100644 templates/reset_password/email.html.twig create mode 100644 templates/reset_password/request.html.twig create mode 100644 templates/reset_password/reset.html.twig create mode 100644 translations/ResetPasswordBundle.de.yaml create mode 100644 translations/ResetPasswordBundle.en.yaml create mode 100644 translations/mydevel.webroot.role+intl-icu.en de.po create mode 100644 translations/mydevel.webroot.setup+intl-icu.en de.po create mode 100644 v7.2.0 diff --git a/PO/LINGUAS b/PO/LINGUAS deleted file mode 100644 index 0a29054..0000000 --- a/PO/LINGUAS +++ /dev/null @@ -1 +0,0 @@ -de diff --git a/PO/POTFILES b/PO/POTFILES deleted file mode 100644 index f1229f0..0000000 --- a/PO/POTFILES +++ /dev/null @@ -1,16 +0,0 @@ -../src/Constants/const.php -../src/Controller/MainController.php -../src/Controller/SecurityController.php -../src/Controller/SetupController.php -../src/Controller/WebrootController.php -../src/Controller/WebrootSetupController.php -../src/Entity/WebrootFile.php -../src/Entity/WebrootFilePermission.php -../src/Entity/WebrootRole.php -../src/Entity/WebrootUser.php -../src/Kernel.php -../src/Repository/WebrootFilePermissionRepository.php -../src/Repository/WebrootFileRepository.php -../src/Repository/WebrootRoleRepository.php -../src/Repository/WebrootUserRepository.php -../src/Utility/i18n.php diff --git a/PO/POTFILES.webroot b/PO/POTFILES.webroot deleted file mode 100644 index 2ef3a3a..0000000 --- a/PO/POTFILES.webroot +++ /dev/null @@ -1,10 +0,0 @@ -../src/MyDevel/Webroot/Controller/WebrootController.php -../src/MyDevel/Webroot/Controller/WebrootSetupController.php -../src/MyDevel/Webroot/Entity/WebrootFile.php -../src/MyDevel/Webroot/Entity/WebrootFilePermission.php -../src/MyDevel/Webroot/Entity/WebrootRole.php -../src/MyDevel/Webroot/Entity/WebrootUser.php -../src/MyDevel/Webroot/Repository/WebrootFilePermissionRepository.php -../src/MyDevel/Webroot/Repository/WebrootFileRepository.php -../src/MyDevel/Webroot/Repository/WebrootRoleRepository.php -../src/MyDevel/Webroot/Repository/WebrootUserRepository.php diff --git a/PO/PTOFILES b/PO/PTOFILES deleted file mode 100644 index 8b13789..0000000 --- a/PO/PTOFILES +++ /dev/null @@ -1 +0,0 @@ - diff --git a/PO/compilemessages b/PO/compilemessages deleted file mode 100644 index 54f499d..0000000 --- a/PO/compilemessages +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -SELF="$(realpath "$0")" -PO_DIR="$(dirname "$SELF")" -PROJECT_ROOT="$(dirname "$PO_DIR")" - -cd "$PO_DIR" - -for i in `cat LINGUAS`; do - msgdir="$PROJECT_ROOT/translations/$i/LC_MESSAGES"; - if [ ! -d "$msgdir" ]; then - mkdir -p "$msgdir" - fi - - if [ -f $i.po ]; then - msgfmt -o "$msgdir/mydevel-webroot.mo" $i.po - fi -done - diff --git a/PO/de.po b/PO/de.po deleted file mode 100644 index e8a5ee7..0000000 --- a/PO/de.po +++ /dev/null @@ -1,151 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-27 19:03+0100\n" -"PO-Revision-Date: 2024-11-27 19:12+0100\n" -"Last-Translator: Christian Moser \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.5\n" - -#: ../src/Controller/SetupController.php:45 -msgid "Email Settings" -msgstr "Email Einstellungen" - -#: ../src/Controller/SetupController.php:46 -msgid "Site Settings" -msgstr "Site Einstellungen" - -#: ../src/Controller/SetupController.php:47 -msgid "Database Settings" -msgstr "Datenbank Einstellungen" - -#: ../src/Controller/SetupController.php:48 -msgid "User Settings" -msgstr "Nutzer Einstellungen" - -#: ../src/Controller/SetupController.php:56 -msgid "Enter the site name that should be displayed in titles." -msgstr "Gib den Setiennamen and, der in Titeln angezeigt werden soll." - -#: ../src/Controller/SetupController.php:57 -msgid "Site name" -msgstr "Name der Site" - -#: ../src/Controller/SetupController.php:61 -msgid "Site root directory" -msgstr "Wurzelverzeichnis" - -#: ../src/Controller/SetupController.php:65 -msgid "Contact email" -msgstr "Kontakt Email" - -#: ../src/Controller/SetupController.php:69 -msgid "Username" -msgstr "Nutzername" - -#: ../src/Controller/SetupController.php:73 -msgid "Email" -msgstr "Email" - -#: ../src/Controller/SetupController.php:77 -#: ../src/Controller/SetupController.php:117 -#: ../src/Controller/SetupController.php:144 -msgid "Password" -msgstr "Passwort" - -#: ../src/Controller/SetupController.php:81 -msgid "Confirm Password" -msgstr "Passwort bestätigen" - -#: ../src/Controller/SetupController.php:84 -msgid "Run Migrations?" -msgstr "Migrationen anwenden?" - -#: ../src/Controller/SetupController.php:93 -msgid "SQLite3" -msgstr "SQLite3" - -#: ../src/Controller/SetupController.php:94 -msgid "MySQL/MariaDB" -msgstr "MySQL/MariaDB" - -#: ../src/Controller/SetupController.php:95 -msgid "PostgreSQL" -msgstr "PostgreSQL" - -#: ../src/Controller/SetupController.php:96 -#: ../src/Controller/SetupController.php:120 -msgid "Database URL" -msgstr "Datenbank URL" - -#: ../src/Controller/SetupController.php:101 -msgid "Database" -msgstr "Datenbank" - -#: ../src/Controller/SetupController.php:105 -msgid "Host" -msgstr "Host" - -#: ../src/Controller/SetupController.php:109 -msgid "Port" -msgstr "Port" - -#: ../src/Controller/SetupController.php:113 -#: ../src/Controller/SetupController.php:140 -msgid "User" -msgstr "Nutzer" - -#: ../src/Controller/SetupController.php:124 -msgid "Backend" -msgstr "Backend" - -#: ../src/Controller/SetupController.php:127 -msgid "No email support" -msgstr "Keine Emailunterstützung" - -#: ../src/Controller/SetupController.php:128 -msgid "SMTP" -msgstr "SMTP" - -#: ../src/Controller/SetupController.php:129 -msgid "Sendmail" -msgstr "Sendmail" - -#: ../src/Controller/SetupController.php:130 -msgid "Naitve" -msgstr "Nativ" - -#: ../src/Controller/SetupController.php:131 -msgid "User DSN" -msgstr "Nutzer DSN" - -#: ../src/Controller/SetupController.php:136 -msgid "Email Path" -msgstr "Email-Pfad" - -#: ../src/Controller/SetupController.php:148 -msgid "SMTP Host" -msgstr "SMTP Host" - -#: ../src/Controller/SetupController.php:152 -msgid "SMTP Port" -msgstr "SMTP Port" - -#: ../src/Controller/SetupController.php:156 -msgid "DSN" -msgstr "DSN" - -#: ../src/Controller/SetupController.php:160 -msgid "Sender address" -msgstr "Adresse des Senders" diff --git a/PO/makemessages b/PO/makemessages deleted file mode 100644 index c036930..0000000 --- a/PO/makemessages +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh - -SELF="$(realpath "$0")" -PODIR="$(dirname "$SELF")" -PROJECT_ROOT="$(dirname "$PODIR")" - -cd "$PODIR" - -echo "Creating POTFILES" -rm -v POTFILES - -for i in $(find ../src | grep '\.*php$'); do - echo $i >> POTFILES -done -if [ -f messages.pot ]; then - JOIN="--join-existing" -else - JOIN="" -fi -echo "extracting messages" - -xgettext -f POTFILES -d mydevel.webroot -L PHP $JOIN --force-po -o messages.pot -if [ -z "$JOIN" ]; then - sed -i s/charset=CHARSET/charset=UTF-8/g messages.pot -fi - -for i in `cat LINGUAS`; do - if [ ! -f $i.po ]; then - cp messages.pot $i.po - else - msgmerge $i.po messages.pot - fi -done - - diff --git a/PO/messages.pot b/PO/messages.pot deleted file mode 100644 index c5fc16e..0000000 --- a/PO/messages.pot +++ /dev/null @@ -1,150 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-27 19:03+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: ../src/Controller/SetupController.php:45 -msgid "Email Settings" -msgstr "" - -#: ../src/Controller/SetupController.php:46 -msgid "Site Settings" -msgstr "" - -#: ../src/Controller/SetupController.php:47 -msgid "Database Settings" -msgstr "" - -#: ../src/Controller/SetupController.php:48 -msgid "User Settings" -msgstr "" - -#: ../src/Controller/SetupController.php:56 -msgid "Enter the site name that should be displayed in titles." -msgstr "" - -#: ../src/Controller/SetupController.php:57 -msgid "Site name" -msgstr "" - -#: ../src/Controller/SetupController.php:61 -msgid "Site root directory" -msgstr "" - -#: ../src/Controller/SetupController.php:65 -msgid "Contact email" -msgstr "" - -#: ../src/Controller/SetupController.php:69 -msgid "Username" -msgstr "" - -#: ../src/Controller/SetupController.php:73 -msgid "Email" -msgstr "" - -#: ../src/Controller/SetupController.php:77 -#: ../src/Controller/SetupController.php:117 -#: ../src/Controller/SetupController.php:144 -msgid "Password" -msgstr "" - -#: ../src/Controller/SetupController.php:81 -msgid "Confirm Password" -msgstr "" - -#: ../src/Controller/SetupController.php:84 -msgid "Run Migrations?" -msgstr "" - -#: ../src/Controller/SetupController.php:93 -msgid "SQLite3" -msgstr "" - -#: ../src/Controller/SetupController.php:94 -msgid "MySQL/MariaDB" -msgstr "" - -#: ../src/Controller/SetupController.php:95 -msgid "PostgreSQL" -msgstr "" - -#: ../src/Controller/SetupController.php:96 -#: ../src/Controller/SetupController.php:120 -msgid "Database URL" -msgstr "" - -#: ../src/Controller/SetupController.php:101 -msgid "Database" -msgstr "" - -#: ../src/Controller/SetupController.php:105 -msgid "Host" -msgstr "" - -#: ../src/Controller/SetupController.php:109 -msgid "Port" -msgstr "" - -#: ../src/Controller/SetupController.php:113 -#: ../src/Controller/SetupController.php:140 -msgid "User" -msgstr "" - -#: ../src/Controller/SetupController.php:124 -msgid "Backend" -msgstr "" - -#: ../src/Controller/SetupController.php:127 -msgid "No email support" -msgstr "" - -#: ../src/Controller/SetupController.php:128 -msgid "SMTP" -msgstr "" - -#: ../src/Controller/SetupController.php:129 -msgid "Sendmail" -msgstr "" - -#: ../src/Controller/SetupController.php:130 -msgid "Naitve" -msgstr "" - -#: ../src/Controller/SetupController.php:131 -msgid "User DSN" -msgstr "" - -#: ../src/Controller/SetupController.php:136 -msgid "Email Path" -msgstr "" - -#: ../src/Controller/SetupController.php:148 -msgid "SMTP Host" -msgstr "" - -#: ../src/Controller/SetupController.php:152 -msgid "SMTP Port" -msgstr "" - -#: ../src/Controller/SetupController.php:156 -msgid "DSN" -msgstr "" - -#: ../src/Controller/SetupController.php:160 -msgid "Sender address" -msgstr "" diff --git a/PO/webroot/de.po b/PO/webroot/de.po deleted file mode 100644 index 4ee1245..0000000 --- a/PO/webroot/de.po +++ /dev/null @@ -1,18 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-26 20:44+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" diff --git a/PO/webroot/messages.pot b/PO/webroot/messages.pot deleted file mode 100644 index 4ee1245..0000000 --- a/PO/webroot/messages.pot +++ /dev/null @@ -1,18 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-11-26 20:44+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" diff --git a/composer.json b/composer.json index 5f29e91..48adda3 100644 --- a/composer.json +++ b/composer.json @@ -7,44 +7,45 @@ "php": ">=8.1", "ext-ctype": "*", "ext-iconv": "*", - "doctrine/dbal": "^3", - "doctrine/doctrine-bundle": "^2.13", - "doctrine/doctrine-migrations-bundle": "^3.3", + "doctrine/dbal": "^3.9.3", + "doctrine/doctrine-bundle": "^2.13.1", + "doctrine/doctrine-migrations-bundle": "^3.3.1", "doctrine/orm": "^3.3", - "easycorp/easyadmin-bundle": "^4.18", + "easycorp/easyadmin-bundle": "4.x-dev", "phpdocumentor/reflection-docblock": "^5.6", "phpstan/phpdoc-parser": "^2.0", - "symfony/asset": "6.4.*", - "symfony/asset-mapper": "6.4.*", - "symfony/console": "6.4.*", - "symfony/doctrine-messenger": "6.4.*", - "symfony/dotenv": "6.4.*", - "symfony/expression-language": "6.4.*", - "symfony/flex": "^2", - "symfony/form": "6.4.*", - "symfony/framework-bundle": "6.4.*", - "symfony/http-client": "6.4.*", - "symfony/intl": "6.4.*", - "symfony/mailer": "6.4.*", - "symfony/mime": "6.4.*", + "symfony/asset": "7.2.*", + "symfony/asset-mapper": "7.2.*", + "symfony/console": "7.2.*", + "symfony/doctrine-messenger": "7.2.*", + "symfony/dotenv": "7.2.*", + "symfony/expression-language": "7.2.*", + "symfony/flex": "^2.4", + "symfony/form": "7.2.*", + "symfony/framework-bundle": "7.2.*", + "symfony/http-client": "7.2.*", + "symfony/intl": "7.2.*", + "symfony/mailer": "7.2.*", + "symfony/mime": "7.2.*", "symfony/monolog-bundle": "^3.10", - "symfony/notifier": "6.4.*", - "symfony/process": "6.4.*", - "symfony/property-access": "6.4.*", - "symfony/property-info": "6.4.*", - "symfony/runtime": "6.4.*", - "symfony/security-bundle": "6.4.*", - "symfony/serializer": "6.4.*", - "symfony/stimulus-bundle": "^2.21", - "symfony/string": "6.4.*", - "symfony/translation": "6.4.*", - "symfony/twig-bundle": "6.4.*", - "symfony/ux-turbo": "^2.21", - "symfony/validator": "6.4.*", - "symfony/web-link": "6.4.*", - "symfony/yaml": "6.4.*", - "twig/extra-bundle": "^2.12|^3.0", - "twig/twig": "^2.12|^3.0" + "symfony/notifier": "7.2.*", + "symfony/process": "7.2.*", + "symfony/property-access": "7.2.*", + "symfony/property-info": "7.2.*", + "symfony/runtime": "^7.2", + "symfony/security-bundle": "7.2.*", + "symfony/serializer": "7.2.*", + "symfony/stimulus-bundle": "^2.22", + "symfony/string": "7.2.*", + "symfony/translation": "7.2.*", + "symfony/twig-bundle": "7.2.*", + "symfony/ux-turbo": "^2.22", + "symfony/validator": "7.2.*", + "symfony/web-link": "7.2.*", + "symfony/yaml": "7.2.*", + "symfonycasts/reset-password-bundle": "^1.23", + "twig/extra-bundle": "^2.12|^3.16", + "twig/twig": "^2.12|^3.16" }, "config": { "allow-plugins": { @@ -92,17 +93,17 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "6.4.*" + "require": "7.2.*" } }, "require-dev": { - "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "6.4.*", - "symfony/css-selector": "6.4.*", - "symfony/debug-bundle": "6.4.*", - "symfony/maker-bundle": "^1.0", - "symfony/phpunit-bridge": "^7.1", - "symfony/stopwatch": "6.4.*", - "symfony/web-profiler-bundle": "6.4.*" + "phpunit/phpunit": "^9.6.21", + "symfony/browser-kit": "7.2.*", + "symfony/css-selector": "7.2.*", + "symfony/debug-bundle": "7.2.*", + "symfony/maker-bundle": "^1.61", + "symfony/phpunit-bridge": "^7.2", + "symfony/stopwatch": "7.2.*", + "symfony/web-profiler-bundle": "7.2.*" } } diff --git a/composer.lock b/composer.lock index 432b419..680d767 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": "bc953808482a0b93397e27bda2670bdc", + "content-hash": "d3eb6c56978520e103cd887dbbf36a88", "packages": [ { "name": "composer/semver", @@ -1315,16 +1315,16 @@ }, { "name": "easycorp/easyadmin-bundle", - "version": "v4.18.0", + "version": "4.x-dev", "source": { "type": "git", "url": "https://github.com/EasyCorp/EasyAdminBundle.git", - "reference": "c1b694c1890d6f20858802d201cd7199212dc42a" + "reference": "2b49b51ccd128ac3983ef1c585d74d60ee5c6efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/c1b694c1890d6f20858802d201cd7199212dc42a", - "reference": "c1b694c1890d6f20858802d201cd7199212dc42a", + "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/2b49b51ccd128ac3983ef1c585d74d60ee5c6efa", + "reference": "2b49b51ccd128ac3983ef1c585d74d60ee5c6efa", "shasum": "" }, "require": { @@ -1369,6 +1369,7 @@ "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/phpunit-bridge": "^6.1|^7.0" }, + "default-branch": true, "type": "symfony-bundle", "extra": { "branch-alias": { @@ -1399,7 +1400,7 @@ ], "support": { "issues": "https://github.com/EasyCorp/EasyAdminBundle/issues", - "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v4.18.0" + "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/4.x" }, "funding": [ { @@ -1407,7 +1408,7 @@ "type": "github" } ], - "time": "2024-11-28T19:54:15+00:00" + "time": "2024-12-02T19:53:15+00:00" }, { "name": "egulias/email-validator", @@ -2109,28 +2110,28 @@ }, { "name": "symfony/asset", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "2466c17d61d14539cddf77e57ebb9cc971185302" + "reference": "cb926cd59fefa1f9b4900b3695f0f846797ba5c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/2466c17d61d14539cddf77e57ebb9cc971185302", - "reference": "2466c17d61d14539cddf77e57ebb9cc971185302", + "url": "https://api.github.com/repos/symfony/asset/zipball/cb926cd59fefa1f9b4900b3695f0f846797ba5c0", + "reference": "cb926cd59fefa1f9b4900b3695f0f846797ba5c0", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/http-foundation": "<5.4" + "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0" + "symfony/http-client": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2158,7 +2159,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v6.4.13" + "source": "https://github.com/symfony/asset/tree/v7.2.0" }, "funding": [ { @@ -2174,42 +2175,42 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/asset-mapper", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/asset-mapper.git", - "reference": "21fe29b637ddaada739d3d6cd55694a7b95d2343" + "reference": "ffb733232bb6bb85ef6a994f47c817e7c2ecab9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/21fe29b637ddaada739d3d6cd55694a7b95d2343", - "reference": "21fe29b637ddaada739d3d6cd55694a7b95d2343", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/ffb733232bb6bb85ef6a994f47c817e7c2ecab9c", + "reference": "ffb733232bb6bb85ef6a994f47c817e7c2ecab9c", "shasum": "" }, "require": { "composer/semver": "^3.0", - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/http-client": "^6.3|^7.0" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^7.1", + "symfony/http-client": "^6.4|^7.0" }, "conflict": { "symfony/framework-bundle": "<6.4" }, "require-dev": { - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", "symfony/event-dispatcher-contracts": "^3.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0" + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2237,7 +2238,7 @@ "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset-mapper/tree/v6.4.15" + "source": "https://github.com/symfony/asset-mapper/tree/v7.2.0" }, "funding": [ { @@ -2253,35 +2254,36 @@ "type": "tidelift" } ], - "time": "2024-11-09T07:17:14+00:00" + "time": "2024-11-20T11:17:29+00:00" }, { "name": "symfony/cache", - "version": "v6.4.14", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613" + "reference": "2c926bc348184b4b235f2200fcbe8fcf3c8c5b8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/36fb8aa88833708e9f29014b6f15fac051a8b613", - "reference": "36fb8aa88833708e9f29014b6f15fac051a8b613", + "url": "https://api.github.com/repos/symfony/cache/zipball/2c926bc348184b4b235f2200fcbe8fcf3c8c5b8a", + "reference": "2c926bc348184b4b235f2200fcbe8fcf3c8c5b8a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.3.6|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/var-dumper": "<5.4" + "doctrine/dbal": "<3.6", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" }, "provide": { "psr/cache-implementation": "2.0|3.0", @@ -2290,15 +2292,16 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2333,7 +2336,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.14" + "source": "https://github.com/symfony/cache/tree/v7.2.0" }, "funding": [ { @@ -2349,20 +2352,20 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:40+00:00" + "time": "2024-11-25T15:21:05+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", "shasum": "" }, "require": { @@ -2409,7 +2412,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.1" }, "funding": [ { @@ -2425,24 +2428,24 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/clock", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b" + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b2bf55c4dd115003309eafa87ee7df9ed3dde81b", - "reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b", + "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/clock": "^1.0", "symfony/polyfill-php83": "^1.28" }, @@ -2483,7 +2486,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.13" + "source": "https://github.com/symfony/clock/tree/v7.2.0" }, "funding": [ { @@ -2499,38 +2502,38 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/config", - "version": "v6.4.14", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef" + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/4e55e7e4ffddd343671ea972216d4509f46c22ef", - "reference": "4e55e7e4ffddd343671ea972216d4509f46c22ef", + "url": "https://api.github.com/repos/symfony/config/zipball/bcd3c4adf0144dee5011bb35454728c38adec055", + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^7.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<5.4", + "symfony/finder": "<6.4", "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2558,7 +2561,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.4.14" + "source": "https://github.com/symfony/config/tree/v7.2.0" }, "funding": [ { @@ -2574,51 +2577,50 @@ "type": "tidelift" } ], - "time": "2024-11-04T11:33:53+00:00" + "time": "2024-11-04T11:36:24+00:00" }, { "name": "symfony/console", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f1fc6f47283e27336e7cebb9e8946c8de7bff9bd" + "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f1fc6f47283e27336e7cebb9e8946c8de7bff9bd", - "reference": "f1fc6f47283e27336e7cebb9e8946c8de7bff9bd", + "url": "https://api.github.com/repos/symfony/console/zipball/23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", + "reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2652,7 +2654,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.15" + "source": "https://github.com/symfony/console/tree/v7.2.0" }, "funding": [ { @@ -2668,44 +2670,43 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:19:14+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36" + "reference": "a475747af1a1c98272a5471abc35f3da81197c5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/70ab1f65a4516ef741e519ea938e6aa465e6aa36", - "reference": "70ab1f65a4516ef741e519ea938e6aa465e6aa36", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a475747af1a1c98272a5471abc35f3da81197c5d", + "reference": "a475747af1a1c98272a5471abc35f3da81197c5d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10|^7.0" + "symfony/service-contracts": "^3.5", + "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<6.1", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.3", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/finder": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "psr/container-implementation": "1.1|2.0", "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.1|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2733,7 +2734,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.15" + "source": "https://github.com/symfony/dependency-injection/tree/v7.2.0" }, "funding": [ { @@ -2749,20 +2750,20 @@ "type": "tidelift" } ], - "time": "2024-11-09T06:56:25+00:00" + "time": "2024-11-25T15:45:00+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -2800,7 +2801,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -2816,71 +2817,72 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "402d5831a73217ea76ab7e032cc05045cd3fa678" + "reference": "09dbb7c731430335e9ae89ee5054b5f5580c49bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/402d5831a73217ea76ab7e032cc05045cd3fa678", - "reference": "402d5831a73217ea76ab7e032cc05045cd3fa678", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/09dbb7c731430335e9ae89ee5054b5f5580c49bf", + "reference": "09dbb7c731430335e9ae89ee5054b5f5580c49bf", "shasum": "" }, "require": { - "doctrine/event-manager": "^1.2|^2", + "doctrine/event-manager": "^2", "doctrine/persistence": "^3.1", - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "doctrine/dbal": "<2.13.1", + "doctrine/collections": "<1.8", + "doctrine/dbal": "<3.6", "doctrine/lexer": "<1.1", "doctrine/orm": "<2.15", - "symfony/cache": "<5.4", - "symfony/dependency-injection": "<6.2", - "symfony/form": "<5.4.38|>=6,<6.4.6|>=7,<7.0.6", - "symfony/http-foundation": "<6.3", - "symfony/http-kernel": "<6.2", - "symfony/lock": "<6.3", - "symfony/messenger": "<5.4", - "symfony/property-info": "<5.4", - "symfony/security-bundle": "<5.4", + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/form": "<6.4.6|>=7,<7.0.6", + "symfony/http-foundation": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/lock": "<6.4", + "symfony/messenger": "<6.4", + "symfony/property-info": "<6.4", + "symfony/security-bundle": "<6.4", "symfony/security-core": "<6.4", "symfony/validator": "<6.4" }, "require-dev": { - "doctrine/collections": "^1.0|^2.0", - "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/collections": "^1.8|^2.0", + "doctrine/data-fixtures": "^1.1|^2", + "doctrine/dbal": "^3.6|^4", "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^6.2|^7.0", - "symfony/doctrine-messenger": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4.38|^6.4.6|^7.0.6", - "symfony/http-kernel": "^6.3|^7.0", - "symfony/lock": "^6.3|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/proxy-manager-bridge": "^6.4", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/doctrine-messenger": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4.6|^7.0.6", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", "symfony/security-core": "^6.4|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/type-info": "^7.1", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -2908,7 +2910,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.13" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.2.0" }, "funding": [ { @@ -2924,26 +2926,26 @@ "type": "tidelift" } ], - "time": "2024-10-18T09:23:39+00:00" + "time": "2024-11-25T12:10:02+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "c4afe708134a4506316955d1c009bc6091b16b2d" + "reference": "533e664a37b4208c5a26f1f7894f212690e806f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/c4afe708134a4506316955d1c009bc6091b16b2d", - "reference": "c4afe708134a4506316955d1c009bc6091b16b2d", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/533e664a37b4208c5a26f1f7894f212690e806f5", + "reference": "533e664a37b4208c5a26f1f7894f212690e806f5", "shasum": "" }, "require": { - "doctrine/dbal": "^2.13|^3|^4", - "php": ">=8.1", - "symfony/messenger": "^5.4|^6.0|^7.0", + "doctrine/dbal": "^3.6|^4", + "php": ">=8.2", + "symfony/messenger": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -2951,8 +2953,8 @@ }, "require-dev": { "doctrine/persistence": "^1.3|^2|^3", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "symfony-messenger-bridge", "autoload": { @@ -2980,7 +2982,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.13" + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.2.0" }, "funding": [ { @@ -2996,32 +2998,32 @@ "type": "tidelift" } ], - "time": "2024-10-18T09:45:38+00:00" + "time": "2024-10-18T09:50:33+00:00" }, { "name": "symfony/dotenv", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "436ae2dd89360fea8c7d5ff3f48ecf523c80bfb4" + "reference": "28347a897771d0c28e99b75166dd2689099f3045" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/436ae2dd89360fea8c7d5ff3f48ecf523c80bfb4", - "reference": "436ae2dd89360fea8c7d5ff3f48ecf523c80bfb4", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/28347a897771d0c28e99b75166dd2689099f3045", + "reference": "28347a897771d0c28e99b75166dd2689099f3045", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/console": "<5.4", - "symfony/process": "<5.4" + "symfony/console": "<6.4", + "symfony/process": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3054,7 +3056,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.13" + "source": "https://github.com/symfony/dotenv/tree/v7.2.0" }, "funding": [ { @@ -3070,26 +3072,26 @@ "type": "tidelift" } ], - "time": "2024-09-28T07:43:51+00:00" + "time": "2024-11-27T11:18:42+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.14", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "9e024324511eeb00983ee76b9aedc3e6ecd993d9" + "reference": "672b3dd1ef8b87119b446d67c58c106c43f965fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/9e024324511eeb00983ee76b9aedc3e6ecd993d9", - "reference": "9e024324511eeb00983ee76b9aedc3e6ecd993d9", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/672b3dd1ef8b87119b446d67c58c106c43f965fe", + "reference": "672b3dd1ef8b87119b446d67c58c106c43f965fe", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", @@ -3098,7 +3100,7 @@ "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" + "symfony/serializer": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -3129,7 +3131,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.14" + "source": "https://github.com/symfony/error-handler/tree/v7.2.0" }, "funding": [ { @@ -3145,28 +3147,28 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:40+00:00" + "time": "2024-11-05T15:35:02+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e" + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", - "reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -3175,13 +3177,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3209,7 +3211,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.13" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" }, "funding": [ { @@ -3225,20 +3227,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -3285,7 +3287,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -3301,25 +3303,25 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/expression-language", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df" + "reference": "26f4884a455e755e630a5fc372df124a3578da2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/3524904fb026356a5230cd197f9a4e6a61e0e7df", - "reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/26f4884a455e755e630a5fc372df124a3578da2e", + "reference": "26f4884a455e755e630a5fc372df124a3578da2e", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/cache": "^5.4|^6.0|^7.0", + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3" }, @@ -3349,7 +3351,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.13" + "source": "https://github.com/symfony/expression-language/tree/v7.2.0" }, "funding": [ { @@ -3365,29 +3367,29 @@ "type": "tidelift" } ], - "time": "2024-10-09T08:40:40+00:00" + "time": "2024-10-15T11:52:45+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", - "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^5.4|^6.4|^7.0" + "symfony/process": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3415,7 +3417,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.13" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -3431,27 +3433,27 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/finder", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958" + "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/daea9eca0b08d0ed1dc9ab702a46128fd1be4958", - "reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958", + "url": "https://api.github.com/repos/symfony/finder/zipball/6de263e5868b9a137602dd1e33e4d48bfae99c49", + "reference": "6de263e5868b9a137602dd1e33e4d48bfae99c49", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3479,7 +3481,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.13" + "source": "https://github.com/symfony/finder/tree/v7.2.0" }, "funding": [ { @@ -3495,7 +3497,7 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:30:56+00:00" + "time": "2024-10-23T06:56:12+00:00" }, { "name": "symfony/flex", @@ -3567,56 +3569,56 @@ }, { "name": "symfony/form", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "0fe17f90af23908ddc11dc23507db98e66572046" + "reference": "264cff30f52f12149aff92bbc23e78160a45c2f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/0fe17f90af23908ddc11dc23507db98e66572046", - "reference": "0fe17f90af23908ddc11dc23507db98e66572046", + "url": "https://api.github.com/repos/symfony/form/zipball/264cff30f52f12149aff92bbc23e78160a45c2f3", + "reference": "264cff30f52f12149aff92bbc23e78160a45c2f3", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/options-resolver": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/options-resolver": "^6.4|^7.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-access": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", - "symfony/error-handler": "<5.4", - "symfony/framework-bundle": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/error-handler": "<6.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<6.3" + "symfony/twig-bridge": "<6.4" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/security-core": "^6.2|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3644,7 +3646,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.4.13" + "source": "https://github.com/symfony/form/tree/v7.2.0" }, "funding": [ { @@ -3660,112 +3662,113 @@ "type": "tidelift" } ], - "time": "2024-10-09T08:40:40+00:00" + "time": "2024-11-27T11:55:00+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "e8b0bd921f9bd35ea4d1508067c3f3f6e2036418" + "reference": "a8d0da4110fe643ab3cde7c938a03e222fe787c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/e8b0bd921f9bd35ea4d1508067c3f3f6e2036418", - "reference": "e8b0bd921f9bd35ea4d1508067c3f3f6e2036418", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/a8d0da4110fe643ab3cde7c938a03e222fe787c6", + "reference": "a8d0da4110fe643ab3cde7c938a03e222fe787c6", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=8.1", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/dependency-injection": "^6.4.12|^7.0", + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^7.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.1|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/filesystem": "^7.1", + "symfony/finder": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4", + "symfony/http-kernel": "^7.2", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^6.4|^7.0" }, "conflict": { - "doctrine/annotations": "<1.13.1", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/asset": "<5.4", + "symfony/asset": "<6.4", "symfony/asset-mapper": "<6.4", - "symfony/clock": "<6.3", - "symfony/console": "<5.4|>=7.0", + "symfony/clock": "<6.4", + "symfony/console": "<6.4", "symfony/dom-crawler": "<6.4", - "symfony/dotenv": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<6.3", - "symfony/lock": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<6.3", + "symfony/dotenv": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/lock": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", "symfony/mime": "<6.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4", - "symfony/runtime": "<5.4.45|>=6.0,<6.4.13|>=7.0,<7.1.6", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", - "symfony/security-core": "<5.4", - "symfony/security-csrf": "<5.4", - "symfony/serializer": "<6.4", - "symfony/stopwatch": "<5.4", + "symfony/security-core": "<6.4", + "symfony/security-csrf": "<7.2", + "symfony/serializer": "<7.1", + "symfony/stopwatch": "<6.4", "symfony/translation": "<6.4", - "symfony/twig-bridge": "<5.4", - "symfony/twig-bundle": "<5.4", + "symfony/twig-bridge": "<6.4", + "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", + "symfony/webhook": "<7.2", "symfony/workflow": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.13.1|^2", "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "seld/jsonlint": "^1.10", - "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0", "symfony/asset-mapper": "^6.4|^7.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/console": "^5.4.9|^6.0.9|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", "symfony/dom-crawler": "^6.4|^7.0", - "symfony/dotenv": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-client": "^6.3|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/mailer": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.3|^7.0", + "symfony/dotenv": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/mailer": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", "symfony/mime": "^6.4|^7.0", - "symfony/notifier": "^5.4|^6.0|^7.0", + "symfony/notifier": "^6.4|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", "symfony/scheduler": "^6.4.4|^7.0.4", - "symfony/security-bundle": "^5.4|^6.0|^7.0", - "symfony/semaphore": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/string": "^5.4|^6.0|^7.0", + "symfony/security-bundle": "^6.4|^7.0", + "symfony/semaphore": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", + "symfony/type-info": "^7.1", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/webhook": "^7.2", "symfony/workflow": "^6.4|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/twig": "^2.10|^3.0.4" + "symfony/yaml": "^6.4|^7.0", + "twig/twig": "^3.12" }, "type": "symfony-bundle", "autoload": { @@ -3793,7 +3796,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.4.13" + "source": "https://github.com/symfony/framework-bundle/tree/v7.2.0" }, "funding": [ { @@ -3809,32 +3812,33 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-11-20T16:27:35+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "cb4073c905cd12b8496d24ac428a9228c1750670" + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/cb4073c905cd12b8496d24ac428a9228c1750670", - "reference": "cb4073c905cd12b8496d24ac428a9228c1750670", + "url": "https://api.github.com/repos/symfony/http-client/zipball/955e43336aff03df1e8a8e17daefabb0127a313b", + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "^3.4.1", + "symfony/http-client-contracts": "~3.4.3|^3.5.1", "symfony/service-contracts": "^2.5|^3" }, "conflict": { + "amphp/amp": "<2.5", "php-http/discovery": "<1.15", - "symfony/http-foundation": "<6.3" + "symfony/http-foundation": "<6.4" }, "provide": { "php-http/async-client-implementation": "*", @@ -3843,19 +3847,20 @@ "symfony/http-client-implementation": "3.0" }, "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", "amphp/socket": "^1.1", "guzzlehttp/promises": "^1.4|^2.0", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/amphp-http-client-meta": "^1.0|^2.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3886,7 +3891,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.15" + "source": "https://github.com/symfony/http-client/tree/v7.2.0" }, "funding": [ { @@ -3902,20 +3907,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:40:18+00:00" + "time": "2024-11-29T08:22:02+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "20414d96f391677bf80078aa55baece78b82647d" + "reference": "c2f3ad828596624ca39ea40f83617ef51ca8bbf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", - "reference": "20414d96f391677bf80078aa55baece78b82647d", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/c2f3ad828596624ca39ea40f83617ef51ca8bbf9", + "reference": "c2f3ad828596624ca39ea40f83617ef51ca8bbf9", "shasum": "" }, "require": { @@ -3964,7 +3969,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.1" }, "funding": [ { @@ -3980,40 +3985,41 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-11-25T12:02:18+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6" + "reference": "e88a66c3997859532bc2ddd6dd8f35aba2711744" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", - "reference": "9b3165eb2f04aeaa1a5a2cfef73e63fe3b22dff6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e88a66c3997859532bc2ddd6dd8f35aba2711744", + "reference": "e88a66c3997859532bc2ddd6dd8f35aba2711744", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, "conflict": { + "doctrine/dbal": "<3.6", "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "symfony/cache": "^6.4.12|^7.1.5", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4041,7 +4047,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.15" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.0" }, "funding": [ { @@ -4057,77 +4063,77 @@ "type": "tidelift" } ], - "time": "2024-11-08T16:09:24+00:00" + "time": "2024-11-13T18:58:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5" + "reference": "6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b002a5b3947653c5aee3adac2a024ea615fd3ff5", - "reference": "b002a5b3947653c5aee3adac2a024ea615fd3ff5", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d", + "reference": "6b4722a25e0aed1ccb4914b9bcbd493cc4676b4d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", + "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4.4|^7.0.4", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^7.1", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^7.1", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.12" }, "type": "library", "autoload": { @@ -4155,7 +4161,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.15" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.0" }, "funding": [ { @@ -4171,29 +4177,32 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:57:37+00:00" + "time": "2024-11-29T08:42:40+00:00" }, { "name": "symfony/intl", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "b1d5e8d82615b60f229216edfee0b59e2ef66da6" + "reference": "76bb3462c6c308f8bd97d3c178c2626ae44d4dea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/b1d5e8d82615b60f229216edfee0b59e2ef66da6", - "reference": "b1d5e8d82615b60f229216edfee0b59e2ef66da6", + "url": "https://api.github.com/repos/symfony/intl/zipball/76bb3462c6c308f8bd97d3c178c2626ae44d4dea", + "reference": "76bb3462c6c308f8bd97d3c178c2626ae44d4dea", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/string": "<7.1" }, "require-dev": { - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4238,7 +4247,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.4.15" + "source": "https://github.com/symfony/intl/tree/v7.2.0" }, "funding": [ { @@ -4254,43 +4263,43 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:28:48+00:00" + "time": "2024-11-25T14:26:33+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663" + "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", - "reference": "c2f7e0d8d7ac8fe25faccf5d8cac462805db2663", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e4d358702fb66e4c8a2af08e90e7271a62de39cc", + "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", + "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4318,7 +4327,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.13" + "source": "https://github.com/symfony/mailer/tree/v7.2.0" }, "funding": [ { @@ -4334,50 +4343,50 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-11-25T15:21:05+00:00" }, { "name": "symfony/messenger", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "f9d4bae8301dced6f12e110a7956d2fd441573f1" + "reference": "2512b9bc1e7093c8bd5adec579a364a198059f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/f9d4bae8301dced6f12e110a7956d2fd441573f1", - "reference": "f9d4bae8301dced6f12e110a7956d2fd441573f1", + "url": "https://api.github.com/repos/symfony/messenger/zipball/2512b9bc1e7093c8bd5adec579a364a198059f4d", + "reference": "2512b9bc1e7093c8bd5adec579a364a198059f4d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/clock": "^6.3|^7.0", + "symfony/clock": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<6.3", - "symfony/event-dispatcher": "<5.4", + "symfony/console": "<7.2", + "symfony/event-dispatcher": "<6.4", "symfony/event-dispatcher-contracts": "<2.5", - "symfony/framework-bundle": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/serializer": "<5.4" + "symfony/framework-bundle": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^6.3|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0", + "symfony/console": "^7.2", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/validator": "^5.4|^6.0|^7.0" + "symfony/stopwatch": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4405,7 +4414,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v6.4.15" + "source": "https://github.com/symfony/messenger/tree/v7.2.0" }, "funding": [ { @@ -4421,25 +4430,24 @@ "type": "tidelift" } ], - "time": "2024-11-09T07:05:35+00:00" + "time": "2024-11-26T10:00:31+00:00" }, { "name": "symfony/mime", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "1de1cf14d99b12c7ebbb850491ec6ae3ed468855" + "reference": "cc84a4b81f62158c3846ac7ff10f696aae2b524d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/1de1cf14d99b12c7ebbb850491ec6ae3ed468855", - "reference": "1de1cf14d99b12c7ebbb850491ec6ae3ed468855", + "url": "https://api.github.com/repos/symfony/mime/zipball/cc84a4b81f62158c3846ac7ff10f696aae2b524d", + "reference": "cc84a4b81f62158c3846ac7ff10f696aae2b524d", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -4447,17 +4455,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", + "symfony/mailer": "<6.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.4|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", "symfony/serializer": "^6.4.3|^7.0.3" }, "type": "library", @@ -4490,7 +4498,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.13" + "source": "https://github.com/symfony/mime/tree/v7.2.0" }, "funding": [ { @@ -4506,42 +4514,41 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-11-23T09:19:39+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "9d14621e59f22c2b6d030d92d37ffe5ae1e60452" + "reference": "bbae784f0456c5a87c89d7c1a3fcc9cbee976c1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/9d14621e59f22c2b6d030d92d37ffe5ae1e60452", - "reference": "9d14621e59f22c2b6d030d92d37ffe5ae1e60452", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/bbae784f0456c5a87c89d7c1a3fcc9cbee976c1d", + "reference": "bbae784f0456c5a87c89d7c1a3fcc9cbee976c1d", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1|^2|^3", - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0|^7.0", + "monolog/monolog": "^3", + "php": ">=8.2", + "symfony/http-kernel": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<5.4", - "symfony/http-foundation": "<5.4", - "symfony/security-core": "<5.4" + "symfony/console": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/mailer": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/security-core": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/mailer": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -4569,7 +4576,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.13" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.2.0" }, "funding": [ { @@ -4585,7 +4592,7 @@ "type": "tidelift" } ], - "time": "2024-10-14T08:49:08+00:00" + "time": "2024-10-14T18:16:08+00:00" }, { "name": "symfony/monolog-bundle", @@ -4670,33 +4677,33 @@ }, { "name": "symfony/notifier", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", - "reference": "c46321b53391088861bf627cd9e24873d216cf00" + "reference": "b5104341c0b0d78fe2cfc8a7a0a185d544ee5c1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/c46321b53391088861bf627cd9e24873d216cf00", - "reference": "c46321b53391088861bf627cd9e24873d216cf00", + "url": "https://api.github.com/repos/symfony/notifier/zipball/b5104341c0b0d78fe2cfc8a7a0a185d544ee5c1c", + "reference": "b5104341c0b0d78fe2cfc8a7a0a185d544ee5c1c", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3" }, "conflict": { - "symfony/event-dispatcher": "<5.4", + "symfony/event-dispatcher": "<6.4", "symfony/event-dispatcher-contracts": "<2.5", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4" + "symfony/http-kernel": "<6.4" }, "require-dev": { "symfony/event-dispatcher-contracts": "^2.5|^3", "symfony/http-client-contracts": "^2.5|^3", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0" + "symfony/http-foundation": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4728,7 +4735,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/v6.4.13" + "source": "https://github.com/symfony/notifier/tree/v7.2.0" }, "funding": [ { @@ -4744,24 +4751,24 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-11-15T13:52:25+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "0a62a9f2504a8dd27083f89d21894ceb01cc59db" + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0a62a9f2504a8dd27083f89d21894ceb01cc59db", - "reference": "0a62a9f2504a8dd27083f89d21894ceb01cc59db", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -4795,7 +4802,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.13" + "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" }, "funding": [ { @@ -4811,31 +4818,31 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-11-20T11:17:29+00:00" }, { "name": "symfony/password-hasher", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47" + "reference": "d8bd3d66d074c0acba1214a0d42f5941a8e1e94d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/e97a1b31f60b8bdfc1fdedab4398538da9441d47", - "reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/d8bd3d66d074c0acba1214a0d42f5941a8e1e94d", + "reference": "d8bd3d66d074c0acba1214a0d42f5941a8e1e94d", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/security-core": "<5.4" + "symfony/security-core": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/security-core": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/security-core": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4867,7 +4874,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v6.4.13" + "source": "https://github.com/symfony/password-hasher/tree/v7.2.0" }, "funding": [ { @@ -4883,7 +4890,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -5448,20 +5455,20 @@ }, { "name": "symfony/process", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", - "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", + "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -5489,7 +5496,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.15" + "source": "https://github.com/symfony/process/tree/v7.2.0" }, "funding": [ { @@ -5505,29 +5512,28 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:19:14+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "symfony/property-access", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "8cc779d88d12e440adaa26387bcfc25744064afe" + "reference": "3ae42efba01e45aaedecf5c93c8d6a3ab3a82276" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/8cc779d88d12e440adaa26387bcfc25744064afe", - "reference": "8cc779d88d12e440adaa26387bcfc25744064afe", + "url": "https://api.github.com/repos/symfony/property-access/zipball/3ae42efba01e45aaedecf5c93c8d6a3ab3a82276", + "reference": "3ae42efba01e45aaedecf5c93c8d6a3ab3a82276", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/property-info": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/property-info": "^6.4|^7.0" }, "require-dev": { - "symfony/cache": "^5.4|^6.0|^7.0" + "symfony/cache": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5566,7 +5572,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v6.4.13" + "source": "https://github.com/symfony/property-access/tree/v7.2.0" }, "funding": [ { @@ -5582,37 +5588,37 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-26T12:28:35+00:00" }, { "name": "symfony/property-info", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "9d7b576bb643c72bf3b60eb8e89c98725d00afd0" + "reference": "b00580d9d7c9654e1df95df85105d0da67418b3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/9d7b576bb643c72bf3b60eb8e89c98725d00afd0", - "reference": "9d7b576bb643c72bf3b60eb8e89c98725d00afd0", + "url": "https://api.github.com/repos/symfony/property-info/zipball/b00580d9d7c9654e1df95df85105d0da67418b3f", + "reference": "b00580d9d7c9654e1df95df85105d0da67418b3f", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/string": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/string": "^6.4|^7.0", + "symfony/type-info": "^7.1" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", "phpdocumentor/type-resolver": "<1.5.1", - "symfony/dependency-injection": "<5.4", - "symfony/serializer": "<6.4" + "symfony/dependency-injection": "<6.4" }, "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0" }, "type": "library", @@ -5649,7 +5655,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.4.15" + "source": "https://github.com/symfony/property-info/tree/v7.2.0" }, "funding": [ { @@ -5665,40 +5671,38 @@ "type": "tidelift" } ], - "time": "2024-11-07T16:39:46+00:00" + "time": "2024-11-27T09:50:52+00:00" }, { "name": "symfony/routing", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278" + "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/640a74250d13f9c30d5ca045b6aaaabcc8215278", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278", + "url": "https://api.github.com/repos/symfony/routing/zipball/e10a2450fa957af6c448b9b93c9010a4e4c0725e", + "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5732,7 +5736,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.13" + "source": "https://github.com/symfony/routing/tree/v7.2.0" }, "funding": [ { @@ -5748,35 +5752,35 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:30:56+00:00" + "time": "2024-11-25T11:08:51+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.14", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "4facd4174f45cd37c65860403412b67c7381136a" + "reference": "2c350568f3eaccb25fbbbf962bd67cde273121a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/4facd4174f45cd37c65860403412b67c7381136a", - "reference": "4facd4174f45cd37c65860403412b67c7381136a", + "url": "https://api.github.com/repos/symfony/runtime/zipball/2c350568f3eaccb25fbbbf962bd67cde273121a7", + "reference": "2c350568f3eaccb25fbbbf962bd67cde273121a7", "shasum": "" }, "require": { "composer-plugin-api": "^1.0|^2.0", - "php": ">=8.1" + "php": ">=8.2" }, "conflict": { - "symfony/dotenv": "<5.4" + "symfony/dotenv": "<6.4" }, "require-dev": { - "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^5.4.9|^6.0.9|^7.0", - "symfony/dotenv": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0" + "composer/composer": "^2.6", + "symfony/console": "^6.4|^7.0", + "symfony/dotenv": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" }, "type": "composer-plugin", "extra": { @@ -5811,7 +5815,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.14" + "source": "https://github.com/symfony/runtime/tree/v7.2.0" }, "funding": [ { @@ -5827,75 +5831,69 @@ "type": "tidelift" } ], - "time": "2024-11-05T16:39:55+00:00" + "time": "2024-11-06T11:43:25+00:00" }, { "name": "symfony/security-bundle", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "181d1fcf5f88ef8212ed7f6434e5ff51c9d7dff3" + "reference": "4bed2029576bf02a6915c5a58bc8a174af338e6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/181d1fcf5f88ef8212ed7f6434e5ff51c9d7dff3", - "reference": "181d1fcf5f88ef8212ed7f6434e5ff51c9d7dff3", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4bed2029576bf02a6915c5a58bc8a174af338e6f", + "reference": "4bed2029576bf02a6915c5a58bc8a174af338e6f", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=8.1", - "symfony/clock": "^6.3|^7.0", - "symfony/config": "^6.1|^7.0", + "php": ">=8.2", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", "symfony/dependency-injection": "^6.4.11|^7.1.4", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.2|^7.0", - "symfony/http-kernel": "^6.2", - "symfony/password-hasher": "^5.4|^6.0|^7.0", - "symfony/security-core": "^6.2|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/security-http": "^6.3.6|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/password-hasher": "^6.4|^7.0", + "symfony/security-core": "^7.2", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/security-http": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/console": "<6.4", "symfony/framework-bundle": "<6.4", - "symfony/http-client": "<5.4", - "symfony/ldap": "<5.4", + "symfony/http-client": "<6.4", + "symfony/ldap": "<6.4", "symfony/serializer": "<6.4", - "symfony/twig-bundle": "<5.4", + "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4" }, "require-dev": { - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", "symfony/framework-bundle": "^6.4|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/ldap": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/ldap": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/twig-bridge": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1", - "web-token/jwt-signature-algorithm-eddsa": "^3.1", - "web-token/jwt-signature-algorithm-hmac": "^3.1", - "web-token/jwt-signature-algorithm-none": "^3.1", - "web-token/jwt-signature-algorithm-rsa": "^3.1" + "symfony/yaml": "^6.4|^7.0", + "twig/twig": "^3.12", + "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "symfony-bundle", "autoload": { @@ -5923,7 +5921,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.4.13" + "source": "https://github.com/symfony/security-bundle/tree/v7.2.0" }, "funding": [ { @@ -5939,48 +5937,49 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-10-23T08:31:32+00:00" }, { "name": "symfony/security-core", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "bbd1a919aec8696a95bf8749d5577fbe74de973c" + "reference": "fdbf318b939a86f89b0c071f60b9d551261d3cc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/bbd1a919aec8696a95bf8749d5577fbe74de973c", - "reference": "bbd1a919aec8696a95bf8749d5577fbe74de973c", + "url": "https://api.github.com/repos/symfony/security-core/zipball/fdbf318b939a86f89b0c071f60b9d551261d3cc1", + "reference": "fdbf318b939a86f89b0c071f60b9d551261d3cc1", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher-contracts": "^2.5|^3", - "symfony/password-hasher": "^5.4|^6.0|^7.0", + "symfony/password-hasher": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<5.4", - "symfony/http-foundation": "<5.4", - "symfony/ldap": "<5.4", - "symfony/security-guard": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", - "symfony/validator": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/ldap": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/validator": "<6.4" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/ldap": "^5.4|^6.0|^7.0", - "symfony/string": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/ldap": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", "symfony/validator": "^6.4|^7.0" }, "type": "library", @@ -6009,7 +6008,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.4.13" + "source": "https://github.com/symfony/security-core/tree/v7.2.0" }, "funding": [ { @@ -6025,31 +6024,33 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-11-27T09:50:52+00:00" }, { "name": "symfony/security-csrf", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3" + "reference": "5d884aff316bd4f24c4c2ab4d5f02a00df4b08cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/c34421b7d34efbaef5d611ab2e646a0ec464ffe3", - "reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/5d884aff316bd4f24c4c2ab4d5f02a00df4b08cf", + "reference": "5d884aff316bd4f24c4c2ab4d5f02a00df4b08cf", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/security-core": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/security-core": "^6.4|^7.0" }, "conflict": { - "symfony/http-foundation": "<5.4" + "symfony/http-foundation": "<6.4" }, "require-dev": { - "symfony/http-foundation": "^5.4|^6.0|^7.0" + "psr/log": "^1|^2|^3", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6077,7 +6078,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v6.4.13" + "source": "https://github.com/symfony/security-csrf/tree/v7.2.0" }, "funding": [ { @@ -6093,51 +6094,51 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-10-08T13:08:31+00:00" }, { "name": "symfony/security-http", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "ded1e078f952e686b058d9eac98e497bea47b308" + "reference": "0d0ab4d491f22306c893b2d30ce73ea911201a61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/ded1e078f952e686b058d9eac98e497bea47b308", - "reference": "ded1e078f952e686b058d9eac98e497bea47b308", + "url": "https://api.github.com/repos/symfony/security-http/zipball/0d0ab4d491f22306c893b2d30ce73ea911201a61", + "reference": "0d0ab4d491f22306c893b2d30ce73ea911201a61", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-foundation": "^6.2|^7.0", - "symfony/http-kernel": "^6.3|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/security-core": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/security-core": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/clock": "<6.3", - "symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9", + "symfony/clock": "<6.4", + "symfony/event-dispatcher": "<6.4", "symfony/http-client-contracts": "<3.0", - "symfony/security-bundle": "<5.4", - "symfony/security-csrf": "<5.4" + "symfony/security-bundle": "<6.4", + "symfony/security-csrf": "<6.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.3|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/cache": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", "symfony/http-client-contracts": "^3.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "web-token/jwt-checker": "^3.1", - "web-token/jwt-signature-algorithm-ecdsa": "^3.1" + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "web-token/jwt-library": "^3.3.2|^4.0" }, "type": "library", "autoload": { @@ -6165,7 +6166,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.4.15" + "source": "https://github.com/symfony/security-http/tree/v7.2.0" }, "funding": [ { @@ -6181,61 +6182,61 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:40:18+00:00" + "time": "2024-11-13T13:40:36+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "9d862d66198f3c2e30404228629ef4c18d5d608e" + "reference": "3f5ed9f5e6c02e3853109190ba38408f5e1d2dd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/9d862d66198f3c2e30404228629ef4c18d5d608e", - "reference": "9d862d66198f3c2e30404228629ef4c18d5d608e", + "url": "https://api.github.com/repos/symfony/serializer/zipball/3f5ed9f5e6c02e3853109190ba38408f5e1d2dd0", + "reference": "3f5ed9f5e6c02e3853109190ba38408f5e1d2dd0", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<5.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4.24|>=6,<6.2.11", - "symfony/uid": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/uid": "<6.4", "symfony/validator": "<6.4", - "symfony/yaml": "<5.4" + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.26|^6.3|^7.0", - "symfony/property-info": "^5.4.24|^6.2.11|^7.0", + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^7.2", + "symfony/error-handler": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/type-info": "^7.1", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6263,7 +6264,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.4.15" + "source": "https://github.com/symfony/serializer/tree/v7.2.0" }, "funding": [ { @@ -6279,20 +6280,20 @@ "type": "tidelift" } ], - "time": "2024-10-23T13:25:59+00:00" + "time": "2024-11-25T15:21:05+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -6346,7 +6347,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -6362,20 +6363,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/stimulus-bundle", - "version": "v2.21.0", + "version": "v2.22.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "e5f7747b514865719e0990389ce35a9b71bebb48" + "reference": "2e840a3b12f06b33441cc3eb8907f51b806a7e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/e5f7747b514865719e0990389ce35a9b71bebb48", - "reference": "e5f7747b514865719e0990389ce35a9b71bebb48", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/2e840a3b12f06b33441cc3eb8907f51b806a7e4b", + "reference": "2e840a3b12f06b33441cc3eb8907f51b806a7e4b", "shasum": "" }, "require": { @@ -6415,7 +6416,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.21.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.22.0" }, "funding": [ { @@ -6431,24 +6432,24 @@ "type": "tidelift" } ], - "time": "2024-10-05T22:11:16+00:00" + "time": "2024-11-20T07:57:38+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "2cae0a6f8d04937d02f6d19806251e2104d54f92" + "reference": "696f418b0d722a4225e1c3d95489d262971ca924" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/2cae0a6f8d04937d02f6d19806251e2104d54f92", - "reference": "2cae0a6f8d04937d02f6d19806251e2104d54f92", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/696f418b0d722a4225e1c3d95489d262971ca924", + "reference": "696f418b0d722a4225e1c3d95489d262971ca924", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -6477,7 +6478,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.13" + "source": "https://github.com/symfony/stopwatch/tree/v7.2.0" }, "funding": [ { @@ -6493,24 +6494,24 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/string", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", - "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -6520,11 +6521,12 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6563,7 +6565,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.15" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -6579,37 +6581,37 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:31:12+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/translation", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66" + "reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/bee9bfabfa8b4045a66bf82520e492cddbaffa66", - "reference": "bee9bfabfa8b4045a66bf82520e492cddbaffa66", + "url": "https://api.github.com/repos/symfony/translation/zipball/dc89e16b44048ceecc879054e5b7f38326ab6cc5", + "reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", + "symfony/http-kernel": "<6.4", "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" @@ -6617,17 +6619,17 @@ "require-dev": { "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/routing": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6658,7 +6660,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.13" + "source": "https://github.com/symfony/translation/tree/v7.2.0" }, "funding": [ { @@ -6674,20 +6676,20 @@ "type": "tidelift" } ], - "time": "2024-09-27T18:14:25+00:00" + "time": "2024-11-12T20:47:56+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { @@ -6736,7 +6738,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -6752,69 +6754,70 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "ec3511eef0576f378b2758da9e1c157086babd59" + "reference": "9958f5a5b6640734fe4b24c18897191f77a02c61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ec3511eef0576f378b2758da9e1c157086babd59", - "reference": "ec3511eef0576f378b2758da9e1c157086babd59", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9958f5a5b6640734fe4b24c18897191f77a02c61", + "reference": "9958f5a5b6640734fe4b24c18897191f77a02c61", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/translation-contracts": "^2.5|^3", - "twig/twig": "^2.13|^3.0.4" + "twig/twig": "^3.12" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<5.4", - "symfony/form": "<6.3", - "symfony/http-foundation": "<5.4", + "symfony/console": "<6.4", + "symfony/form": "<6.4", + "symfony/http-foundation": "<6.4", "symfony/http-kernel": "<6.4", - "symfony/mime": "<6.2", + "symfony/mime": "<6.4", "symfony/serializer": "<6.4", - "symfony/translation": "<5.4", - "symfony/workflow": "<5.4" + "symfony/translation": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/asset-mapper": "^6.3|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/asset": "^6.4|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/emoji": "^7.1", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/form": "^6.4|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^5.4|^6.0|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/security-http": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/security-csrf": "^6.4|^7.0", + "symfony/security-http": "^6.4|^7.0", "symfony/serializer": "^6.4.3|^7.0.3", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^6.1|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", - "symfony/workflow": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" @@ -6845,7 +6848,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.13" + "source": "https://github.com/symfony/twig-bridge/tree/v7.2.0" }, "funding": [ { @@ -6861,47 +6864,47 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-11-25T14:26:33+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "c3beeb5336aba1ea03c37e526968c2fde3ef25c4" + "reference": "cd2be4563afaef5285bb6e0a06c5445e644a5c01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/c3beeb5336aba1ea03c37e526968c2fde3ef25c4", - "reference": "c3beeb5336aba1ea03c37e526968c2fde3ef25c4", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/cd2be4563afaef5285bb6e0a06c5445e644a5c01", + "reference": "cd2be4563afaef5285bb6e0a06c5445e644a5c01", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", - "php": ">=8.1", - "symfony/config": "^6.1|^7.0", - "symfony/dependency-injection": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^6.2", - "symfony/twig-bridge": "^6.4", - "twig/twig": "^2.13|^3.0.4" + "php": ">=8.2", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0", + "twig/twig": "^3.12" }, "conflict": { - "symfony/framework-bundle": "<5.4", - "symfony/translation": "<5.4" + "symfony/framework-bundle": "<6.4", + "symfony/translation": "<6.4" }, "require-dev": { - "symfony/asset": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/form": "^5.4|^6.0|^7.0", - "symfony/framework-bundle": "^5.4|^6.0|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/web-link": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/asset": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -6929,7 +6932,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v6.4.13" + "source": "https://github.com/symfony/twig-bundle/tree/v7.2.0" }, "funding": [ { @@ -6945,28 +6948,108 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-10-23T08:11:15+00:00" }, { - "name": "symfony/uid", - "version": "v6.4.13", + "name": "symfony/type-info", + "version": "v7.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007" + "url": "https://github.com/symfony/type-info.git", + "reference": "e0bfd95bceb3886c59487828537691aecb7d9c6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/18eb207f0436a993fffbdd811b5b8fa35fa5e007", - "reference": "18eb207f0436a993fffbdd811b5b8fa35fa5e007", + "url": "https://api.github.com/repos/symfony/type-info/zipball/e0bfd95bceb3886c59487828537691aecb7d9c6b", + "reference": "e0bfd95bceb3886c59487828537691aecb7d9c6b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.0", + "symfony/dependency-injection": "<6.4" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/dependency-injection": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/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-11-18T09:51:31+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "2d294d0c48df244c71c105a169d0190bfb080426" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/2d294d0c48df244c71c105a169d0190bfb080426", + "reference": "2d294d0c48df244c71c105a169d0190bfb080426", + "shasum": "" + }, + "require": { + "php": ">=8.2", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7003,7 +7086,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.13" + "source": "https://github.com/symfony/uid/tree/v7.2.0" }, "funding": [ { @@ -7019,20 +7102,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/ux-turbo", - "version": "v2.21.0", + "version": "v2.22.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "075c609e54fc421c6b1c1974e46e9a8b2d44277c" + "reference": "f7af0aa09190354dd4630ea330d8a3fc3e8ef278" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/075c609e54fc421c6b1c1974e46e9a8b2d44277c", - "reference": "075c609e54fc421c6b1c1974e46e9a8b2d44277c", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/f7af0aa09190354dd4630ea330d8a3fc3e8ef278", + "reference": "f7af0aa09190354dd4630ea330d8a3fc3e8ef278", "shasum": "" }, "require": { @@ -7067,8 +7150,8 @@ "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -7101,7 +7184,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/v2.21.0" + "source": "https://github.com/symfony/ux-turbo/tree/v2.22.0" }, "funding": [ { @@ -7117,20 +7200,20 @@ "type": "tidelift" } ], - "time": "2024-10-21T19:07:02+00:00" + "time": "2024-11-29T15:25:16+00:00" }, { "name": "symfony/ux-twig-component", - "version": "v2.21.0", + "version": "v2.22.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-twig-component.git", - "reference": "5b60b239fffcb04fc8bdb2a5a4001d19442d575d" + "reference": "03177a494399fbdcbb1f5f2aee017ccf8df581d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/5b60b239fffcb04fc8bdb2a5a4001d19442d575d", - "reference": "5b60b239fffcb04fc8bdb2a5a4001d19442d575d", + "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/03177a494399fbdcbb1f5f2aee017ccf8df581d9", + "reference": "03177a494399fbdcbb1f5f2aee017ccf8df581d9", "shasum": "" }, "require": { @@ -7157,8 +7240,8 @@ "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -7184,7 +7267,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-twig-component/tree/v2.21.0" + "source": "https://github.com/symfony/ux-twig-component/tree/v2.22.0" }, "funding": [ { @@ -7200,24 +7283,24 @@ "type": "tidelift" } ], - "time": "2024-10-05T22:11:16+00:00" + "time": "2024-11-23T06:59:34+00:00" }, { "name": "symfony/validator", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "7541055cdaf54ff95f0735bf703d313374e8b20b" + "reference": "ddad20aa8cf7a45a9d6300e5776b8d252dc3524b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/7541055cdaf54ff95f0735bf703d313374e8b20b", - "reference": "7541055cdaf54ff95f0735bf703d313374e8b20b", + "url": "https://api.github.com/repos/symfony/validator/zipball/ddad20aa8cf7a45a9d6300e5776b8d252dc3524b", + "reference": "ddad20aa8cf7a45a9d6300e5776b8d252dc3524b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", @@ -7225,34 +7308,34 @@ "symfony/translation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.13", "doctrine/lexer": "<1.1", - "symfony/dependency-injection": "<5.4", - "symfony/expression-language": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/intl": "<5.4", - "symfony/property-info": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", - "symfony/yaml": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<7.0", + "symfony/expression-language": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/intl": "<6.4", + "symfony/property-info": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.13|^2", "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/cache": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/translation": "^6.4.3|^7.0.3", + "symfony/type-info": "^7.1", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7281,7 +7364,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.15" + "source": "https://github.com/symfony/validator/tree/v7.2.0" }, "funding": [ { @@ -7297,38 +7380,36 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:28:48+00:00" + "time": "2024-11-27T09:50:52+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.15", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80" + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", - "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -7366,7 +7447,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.15" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.0" }, "funding": [ { @@ -7382,30 +7463,29 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:28:48+00:00" + "time": "2024-11-08T15:48:14+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "0f605f72a363f8743001038a176eeb2a11223b51" + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0f605f72a363f8743001038a176eeb2a11223b51", - "reference": "0f605f72a363f8743001038a176eeb2a11223b51", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1a6a89f95a46af0f142874c9d650a6358d13070d", + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.2" }, "require-dev": { "symfony/property-access": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7443,7 +7523,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.13" + "source": "https://github.com/symfony/var-exporter/tree/v7.2.0" }, "funding": [ { @@ -7459,34 +7539,34 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-10-18T07:58:17+00:00" }, { "name": "symfony/web-link", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "4d188b64bb9a9c5e2e4d20c8d5fdce6bbbb32c94" + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/4d188b64bb9a9c5e2e4d20c8d5fdce6bbbb32c94", - "reference": "4d188b64bb9a9c5e2e4d20c8d5fdce6bbbb32c94", + "url": "https://api.github.com/repos/symfony/web-link/zipball/f537556a885e14a1d28f6c759d41e57e93d0a532", + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/link": "^1.1|^2.0" }, "conflict": { - "symfony/http-kernel": "<5.4" + "symfony/http-kernel": "<6.4" }, "provide": { "psr/link-implementation": "1.0|2.0" }, "require-dev": { - "symfony/http-kernel": "^5.4|^6.0|^7.0" + "symfony/http-kernel": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -7526,7 +7606,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v6.4.13" + "source": "https://github.com/symfony/web-link/tree/v7.2.0" }, "funding": [ { @@ -7542,32 +7622,32 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9" + "reference": "099581e99f557e9f16b43c5916c26380b54abb22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", - "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", + "url": "https://api.github.com/repos/symfony/yaml/zipball/099581e99f557e9f16b43c5916c26380b54abb22", + "reference": "099581e99f557e9f16b43c5916c26380b54abb22", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -7598,7 +7678,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.13" + "source": "https://github.com/symfony/yaml/tree/v7.2.0" }, "funding": [ { @@ -7614,11 +7694,59 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-10-23T06:56:12+00:00" + }, + { + "name": "symfonycasts/reset-password-bundle", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/SymfonyCasts/reset-password-bundle.git", + "reference": "419a3283beb66392eca7030cf7c5c363b39b12b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SymfonyCasts/reset-password-bundle/zipball/419a3283beb66392eca7030cf7c5c363b39b12b1", + "reference": "419a3283beb66392eca7030cf7c5c363b39b12b1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=8.1.10", + "symfony/config": "^5.4 | ^6.0 | ^7.0", + "symfony/dependency-injection": "^5.4 | ^6.0 | ^7.0", + "symfony/deprecation-contracts": "^2.2 | ^3.0", + "symfony/http-kernel": "^5.4 | ^6.0 | ^7.0" + }, + "require-dev": { + "doctrine/annotations": "^1.0", + "doctrine/doctrine-bundle": "^2.8", + "doctrine/orm": "^2.13", + "symfony/framework-bundle": "^5.4 | ^6.0 | ^7.0", + "symfony/phpunit-bridge": "^5.4 | ^6.0 | ^7.0", + "symfony/process": "^6.4 | ^7.0 | ^7.1", + "symfonycasts/internal-test-helpers": "dev-main" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "SymfonyCasts\\Bundle\\ResetPassword\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Symfony bundle that adds password reset functionality.", + "support": { + "issues": "https://github.com/SymfonyCasts/reset-password-bundle/issues", + "source": "https://github.com/SymfonyCasts/reset-password-bundle/tree/v1.23.0" + }, + "time": "2024-11-08T11:57:33+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.15.0", + "version": "v3.16.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", @@ -7676,7 +7804,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.15.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.16.0" }, "funding": [ { @@ -7692,16 +7820,16 @@ }, { "name": "twig/twig", - "version": "v3.15.0", + "version": "v3.16.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02" + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/2d5b3964cc21d0188633d7ddce732dc8e874db02", - "reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561", + "reference": "475ad2dc97d65d8631393e721e7e44fb544f0561", "shasum": "" }, "require": { @@ -7712,6 +7840,7 @@ "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -7755,7 +7884,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.15.0" + "source": "https://github.com/twigphp/Twig/tree/v3.16.0" }, "funding": [ { @@ -7767,7 +7896,7 @@ "type": "tidelift" } ], - "time": "2024-11-17T15:59:19+00:00" + "time": "2024-11-29T08:27:05+00:00" }, { "name": "webmozart/assert", @@ -9519,27 +9648,27 @@ }, { "name": "symfony/browser-kit", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "65d4b3fd9556e4b5b41287bef93c671f8f9f86ab" + "reference": "8d64d17e198082f8f198d023a6b634e7b5fdda94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/65d4b3fd9556e4b5b41287bef93c671f8f9f86ab", - "reference": "65d4b3fd9556e4b5b41287bef93c671f8f9f86ab", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8d64d17e198082f8f198d023a6b634e7b5fdda94", + "reference": "8d64d17e198082f8f198d023a6b634e7b5fdda94", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/dom-crawler": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/dom-crawler": "^6.4|^7.0" }, "require-dev": { - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0" + "symfony/css-selector": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -9567,7 +9696,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v6.4.13" + "source": "https://github.com/symfony/browser-kit/tree/v7.2.0" }, "funding": [ { @@ -9583,24 +9712,24 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "cb23e97813c5837a041b73a6d63a9ddff0778f5e" + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/cb23e97813c5837a041b73a6d63a9ddff0778f5e", - "reference": "cb23e97813c5837a041b73a6d63a9ddff0778f5e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -9632,7 +9761,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.13" + "source": "https://github.com/symfony/css-selector/tree/v7.2.0" }, "funding": [ { @@ -9648,37 +9777,37 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/debug-bundle", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff" + "reference": "2dade0d1415c08b627379b5ec214ec8424cb2e32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7bcfaff39e094cc09455201916d016d9b2ae08ff", - "reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/2dade0d1415c08b627379b5ec214ec8424cb2e32", + "reference": "2dade0d1415c08b627379b5ec214ec8424cb2e32", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=8.1", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/twig-bridge": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "php": ">=8.2", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "conflict": { - "symfony/config": "<5.4", - "symfony/dependency-injection": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4" }, "require-dev": { - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/web-profiler-bundle": "^6.4|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -9706,7 +9835,7 @@ "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/v6.4.13" + "source": "https://github.com/symfony/debug-bundle/tree/v7.2.0" }, "funding": [ { @@ -9722,30 +9851,30 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/dom-crawler", - "version": "v6.4.13", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "ae074dffb018c37a57071990d16e6152728dd972" + "reference": "b176e1f1f550ef44c94eb971bf92488de08f7c6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/ae074dffb018c37a57071990d16e6152728dd972", - "reference": "ae074dffb018c37a57071990d16e6152728dd972", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b176e1f1f550ef44c94eb971bf92488de08f7c6b", + "reference": "b176e1f1f550ef44c94eb971bf92488de08f7c6b", "shasum": "" }, "require": { "masterminds/html5": "^2.6", - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "^5.4|^6.0|^7.0" + "symfony/css-selector": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -9773,7 +9902,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.4.13" + "source": "https://github.com/symfony/dom-crawler/tree/v7.2.0" }, "funding": [ { @@ -9789,7 +9918,7 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-11-13T16:15:23+00:00" }, { "name": "symfony/maker-bundle", @@ -9885,16 +10014,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "c6b9d8f52d3e276bedb49612aa4a2a046171287f" + "reference": "2bbde92ab25a0e2c88160857af7be9db5da0d145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/c6b9d8f52d3e276bedb49612aa4a2a046171287f", - "reference": "c6b9d8f52d3e276bedb49612aa4a2a046171287f", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/2bbde92ab25a0e2c88160857af7be9db5da0d145", + "reference": "2bbde92ab25a0e2c88160857af7be9db5da0d145", "shasum": "" }, "require": { @@ -9914,8 +10043,8 @@ "type": "symfony-bridge", "extra": { "thanks": { - "name": "phpunit/phpunit", - "url": "https://github.com/sebastianbergmann/phpunit" + "url": "https://github.com/sebastianbergmann/phpunit", + "name": "phpunit/phpunit" } }, "autoload": { @@ -9947,7 +10076,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.1.6" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.2.0" }, "funding": [ { @@ -9963,42 +10092,42 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-13T16:15:23+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.14", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "bfbade623f1cc7f1e243ce5488af33861a8f5be7" + "reference": "8843019fa7140a4aa079f1a8d71fd010f61de5f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/bfbade623f1cc7f1e243ce5488af33861a8f5be7", - "reference": "bfbade623f1cc7f1e243ce5488af33861a8f5be7", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8843019fa7140a4aa079f1a8d71fd010f61de5f2", + "reference": "8843019fa7140a4aa079f1a8d71fd010f61de5f2", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/config": "^5.4|^6.0|^7.0", + "php": ">=8.2", + "symfony/config": "^6.4|^7.0", "symfony/framework-bundle": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/twig-bundle": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/routing": "^6.4|^7.0", + "symfony/twig-bundle": "^6.4|^7.0", + "twig/twig": "^3.12" }, "conflict": { - "symfony/form": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/twig-bundle": ">=7.0" + "symfony/form": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/serializer": "<7.2" }, "require-dev": { - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0" + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -10029,7 +10158,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.14" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.2.0" }, "funding": [ { @@ -10045,7 +10174,7 @@ "type": "tidelift" } ], - "time": "2024-11-04T11:33:53+00:00" + "time": "2024-11-19T10:12:55+00:00" }, { "name": "theseer/tokenizer", @@ -10100,7 +10229,9 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": { + "easycorp/easyadmin-bundle": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/config/bundles.php b/config/bundles.php index 1737743..e95cf69 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -15,4 +15,5 @@ return [ Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true], EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true], + SymfonyCasts\Bundle\ResetPassword\SymfonyCastsResetPasswordBundle::class => ['all' => true], ]; diff --git a/config/packages/csrf.yaml b/config/packages/csrf.yaml new file mode 100644 index 0000000..40d4040 --- /dev/null +++ b/config/packages/csrf.yaml @@ -0,0 +1,11 @@ +# Enable stateless CSRF protection for forms and logins/logouts +framework: + form: + csrf_protection: + token_id: submit + + csrf_protection: + stateless_token_ids: + - submit + - authenticate + - logout diff --git a/config/packages/mailer.yaml b/config/packages/mailer.yaml index 56a650d..7c4498e 100644 --- a/config/packages/mailer.yaml +++ b/config/packages/mailer.yaml @@ -1,3 +1,4 @@ framework: mailer: dsn: '%env(MAILER_DSN)%' + message_bus: false diff --git a/config/packages/reset_password.yaml b/config/packages/reset_password.yaml new file mode 100644 index 0000000..d04ef3a --- /dev/null +++ b/config/packages/reset_password.yaml @@ -0,0 +1,4 @@ +symfonycasts_reset_password: + request_password_repository: App\Repository\ResetPasswordRequestRepository + lifetime: 3600 + throttle_limit: 3600 diff --git a/config/packages/uid.yaml b/config/packages/uid.yaml deleted file mode 100644 index 0152094..0000000 --- a/config/packages/uid.yaml +++ /dev/null @@ -1,4 +0,0 @@ -framework: - uid: - default_uuid_version: 7 - time_based_uuid_version: 7 diff --git a/migrations/Version20241201211313.php b/migrations/Version20241201211313.php deleted file mode 100644 index 352b455..0000000 --- a/migrations/Version20241201211313.php +++ /dev/null @@ -1,32 +0,0 @@ -addSql('CREATE TABLE rememberme_token (series VARCHAR(88) NOT NULL, value VARCHAR(88) NOT NULL, lastUsed DATETIME NOT NULL --(DC2Type:datetime_immutable) - , class VARCHAR(100) NOT NULL, username VARCHAR(200) NOT NULL, PRIMARY KEY(series))'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('DROP TABLE rememberme_token'); - } -} diff --git a/migrations/Version20241201030110.php b/migrations/Version20241204160251.php similarity index 76% rename from migrations/Version20241201030110.php rename to migrations/Version20241204160251.php index b80f465..ec90e2d 100644 --- a/migrations/Version20241201030110.php +++ b/migrations/Version20241204160251.php @@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration; /** * Auto-generated Migration: Please modify to your needs! */ -final class Version20241201030110 extends AbstractMigration +final class Version20241204160251 extends AbstractMigration { public function getDescription(): string { @@ -58,6 +58,18 @@ final class Version20241201030110 extends AbstractMigration )'); $this->addSql('CREATE UNIQUE INDEX UNIQ_A6BDD54BE7927C74 ON mydevel_webroot_user (email)'); $this->addSql('CREATE UNIQUE INDEX UNIQ_IDENTIFIER_USERNAME ON mydevel_webroot_user (username)'); + $this->addSql('CREATE TABLE reset_password_request ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + user_id INTEGER NOT NULL, + selector VARCHAR(20) NOT NULL, + hashed_token VARCHAR(100) NOT NULL, + requested_at DATETIME NOT NULL --(DC2Type:datetime_immutable) + , + expires_at DATETIME NOT NULL --(DC2Type:datetime_immutable) + , + CONSTRAINT FK_7CE748AA76ED395 FOREIGN KEY (user_id) REFERENCES mydevel_webroot_user (id) NOT DEFERRABLE INITIALLY IMMEDIATE + )'); + $this->addSql('CREATE INDEX IDX_7CE748AA76ED395 ON reset_password_request (user_id)'); $this->addSql('CREATE TABLE messenger_messages ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, body CLOB NOT NULL, @@ -72,6 +84,15 @@ final class Version20241201030110 extends AbstractMigration $this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)'); $this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)'); $this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)'); + $this->addSql('CREATE TABLE rememberme_token ( + series VARCHAR(88) NOT NULL, + value VARCHAR(88) NOT NULL, + lastUsed DATETIME NOT NULL --(DC2Type:datetime_immutable) + , + class VARCHAR(100) NOT NULL, + username VARCHAR(200) NOT NULL, + PRIMARY KEY(series) + )'); } public function down(Schema $schema): void @@ -81,6 +102,8 @@ final class Version20241201030110 extends AbstractMigration $this->addSql('DROP TABLE mydevel_webroot_file_permission'); $this->addSql('DROP TABLE mydevel_webroot_role'); $this->addSql('DROP TABLE mydevel_webroot_user'); + $this->addSql('DROP TABLE reset_password_request'); $this->addSql('DROP TABLE messenger_messages'); + $this->addSql('DROP TABLE rememberme_token'); } } diff --git a/migrations/Version20241206014353.php b/migrations/Version20241206014353.php new file mode 100644 index 0000000..88f01a3 --- /dev/null +++ b/migrations/Version20241206014353.php @@ -0,0 +1,41 @@ +addSql('CREATE TEMPORARY TABLE __temp__mydevel_webroot_file AS SELECT id, owner_id, url, abspath, description FROM mydevel_webroot_file'); + $this->addSql('DROP TABLE mydevel_webroot_file'); + $this->addSql('CREATE TABLE mydevel_webroot_file (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, owner_id INTEGER NOT NULL, url_path CLOB NOT NULL, abspath CLOB NOT NULL, description CLOB DEFAULT NULL, section VARCHAR(1024) DEFAULT \'webroot\' NOT NULL, CONSTRAINT FK_A7B135127E3C61F9 FOREIGN KEY (owner_id) REFERENCES mydevel_webroot_user (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO mydevel_webroot_file (id, owner_id, url_path, abspath, description) SELECT id, owner_id, url, abspath, description FROM __temp__mydevel_webroot_file'); + $this->addSql('DROP TABLE __temp__mydevel_webroot_file'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_A7B135127E3C61F9 ON mydevel_webroot_file (owner_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE TEMPORARY TABLE __temp__mydevel_webroot_file AS SELECT id, owner_id, url_path, abspath, description FROM mydevel_webroot_file'); + $this->addSql('DROP TABLE mydevel_webroot_file'); + $this->addSql('CREATE TABLE mydevel_webroot_file (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, owner_id INTEGER NOT NULL, url CLOB NOT NULL, abspath CLOB NOT NULL, description CLOB DEFAULT NULL, CONSTRAINT FK_A7B135127E3C61F9 FOREIGN KEY (owner_id) REFERENCES mydevel_webroot_user (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO mydevel_webroot_file (id, owner_id, url, abspath, description) SELECT id, owner_id, url_path, abspath, description FROM __temp__mydevel_webroot_file'); + $this->addSql('DROP TABLE __temp__mydevel_webroot_file'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_A7B135127E3C61F9 ON mydevel_webroot_file (owner_id)'); + } +} diff --git a/security.yaml b/security.yaml new file mode 100644 index 0000000..3edec0e --- /dev/null +++ b/security.yaml @@ -0,0 +1 @@ +# vim syn=yaml ts=2 sts=2 sw=2 smartindent expandtab diff --git a/src/Controller/Admin/DashboardController.php b/src/Controller/Admin/DashboardController.php new file mode 100644 index 0000000..ebc2e42 --- /dev/null +++ b/src/Controller/Admin/DashboardController.php @@ -0,0 +1,46 @@ +container->get(AdminUrlGenerator::class); + // return $this->redirect($adminUrlGenerator->setController(OneOfYourCrudController::class)->generateUrl()); + + // Option 2. You can make your dashboard redirect to different pages depending on the user + // + // if ('jane' === $this->getUser()->getUsername()) { + // return $this->redirect('...'); + // } + + // Option 3. You can render some custom template to display a proper dashboard with widgets, etc. + // (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig) + // + // return $this->render('some/path/my-dashboard.html.twig'); + } + + public function configureDashboard(): Dashboard + { + return Dashboard::new() + ->setTitle('Webroot'); + } + + public function configureMenuItems(): iterable + { + yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home'); + // yield MenuItem::linkToCrud('The Label', 'fas fa-list', EntityClass::class); + } +} diff --git a/src/Controller/Admin/WebrootFileCrudController.php b/src/Controller/Admin/WebrootFileCrudController.php new file mode 100644 index 0000000..9d833ac --- /dev/null +++ b/src/Controller/Admin/WebrootFileCrudController.php @@ -0,0 +1,28 @@ + $user, ])); } + + #[Route('/webroot',name:"app_webroot")] + public function webroot(): Response + { + $is_allowed = false; + $user = $this->getUser(); + + + if (!$is_allowed) { + throw new AccessDeniedHttpException(); + } + + $routeconfig = [ + "parent"=>null, + "url"=> $this->generateUrl("app_webroot"), + "child"=>"app_webroot_target", + ]; + + return new Response("

it works

"); + } + + #[Route('/webroot/{target}',name:"app_webroot_target")] + public function webrootTarget(?string $target): Response + { + $is_allowed = false; + $user = $this->getUser(); + + if ($user) { + if (in_array("ROLE_SUPERADMIN",$user->getRoles()) || in_array("ROLE_ADMIN",$user->getRoles())) { + $is_allowed = true; + } + } + if (!$is_allowed) { + throw new AccessDeniedHttpException(); + } + + + return new Response("

it works

"); + } } diff --git a/src/Controller/ResetPasswordController.php b/src/Controller/ResetPasswordController.php new file mode 100644 index 0000000..5604c03 --- /dev/null +++ b/src/Controller/ResetPasswordController.php @@ -0,0 +1,181 @@ +createForm(ResetPasswordRequestFormType::class); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + /** @var string $email */ + $email = $form->get('email')->getData(); + + return $this->processSendingPasswordResetEmail($email, $mailer, $translator + ); + } + + return $this->render('reset_password/request.html.twig', [ + 'requestForm' => $form, + ]); + } + + /** + * Confirmation page after a user has requested a password reset. + */ + #[Route('/check-email', name: 'app_check_email')] + public function checkEmail(): Response + { + // Generate a fake token if the user does not exist or someone hit this page directly. + // This prevents exposing whether or not a user was found with the given email address or not + if (null === ($resetToken = $this->getTokenObjectFromSession())) { + $resetToken = $this->resetPasswordHelper->generateFakeResetToken(); + } + + return $this->render('reset_password/check_email.html.twig', [ + 'resetToken' => $resetToken, + ]); + } + + /** + * Validates and process the reset URL that the user clicked in their email. + */ + #[Route('/reset/{token}', name: 'app_reset_password')] + public function reset(Request $request, UserPasswordHasherInterface $passwordHasher, TranslatorInterface $translator, ?string $token = null): Response + { + if ($token) { + // We store the token in session and remove it from the URL, to avoid the URL being + // loaded in a browser and potentially leaking the token to 3rd party JavaScript. + $this->storeTokenInSession($token); + + return $this->redirectToRoute('app_reset_password'); + } + + $token = $this->getTokenFromSession(); + + if (null === $token) { + throw $this->createNotFoundException('No reset password token found in the URL or in the session.'); + } + + try { + /** @var WebrootUser $user */ + $user = $this->resetPasswordHelper->validateTokenAndFetchUser($token); + } catch (ResetPasswordExceptionInterface $e) { + $this->addFlash('reset_password_error', sprintf( + '%s - %s', + $translator->trans(ResetPasswordExceptionInterface::MESSAGE_PROBLEM_VALIDATE, [], 'ResetPasswordBundle'), + $translator->trans($e->getReason(), [], 'ResetPasswordBundle') + )); + + return $this->redirectToRoute('app_forgot_password_request'); + } + + // The token is valid; allow the user to change their password. + $form = $this->createForm(ChangePasswordFormType::class); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + // A password reset token should be used only once, remove it. + $this->resetPasswordHelper->removeResetRequest($token); + + /** @var string $plainPassword */ + $plainPassword = $form->get('plainPassword')->getData(); + + // Encode(hash) the plain password, and set it. + $user->setPassword($passwordHasher->hashPassword($user, $plainPassword)); + $this->entityManager->flush(); + + // The session is cleaned up after the password has been changed. + $this->cleanSessionAfterReset(); + + return $this->redirectToRoute('app_index'); + } + + return $this->render('reset_password/reset.html.twig', [ + 'resetForm' => $form, + ]); + } + + private function processSendingPasswordResetEmail(string $emailFormData, TransportInterface $mailer, TranslatorInterface $translator): RedirectResponse + { + $user = $this->entityManager->getRepository(WebrootUser::class)->findOneBy([ + 'email' => $emailFormData, + ]); + + // Do not reveal whether a user account was found or not. + if (!$user) { + return $this->redirectToRoute('app_check_email'); + } + + try { + $resetToken = $this->resetPasswordHelper->generateResetToken($user); + } catch (ResetPasswordExceptionInterface $e) { + // If you want to tell the user why a reset email was not sent, uncomment + // the lines below and change the redirect to 'app_forgot_password_request'. + // Caution: This may reveal if a user is registered or not. + // + /* + $this->addFlash('reset_password_error', sprintf( + '%s - %s', + $translator->trans(ResetPasswordExceptionInterface::MESSAGE_PROBLEM_HANDLE, [], 'ResetPasswordBundle'), + $translator->trans($e->getReason(), [], 'ResetPasswordBundle') + )); + return $this->redirectToRoute('app_forgot_password_request'); + */ + return $this->redirectToRoute('app_check_email'); + } + + $email = (new TemplatedEmail()) + ->from(new Address('noreply@mydevel.at',"MyDevel.at")) + ->to((string) $user->getEmail()) + ->subject($translator->trans('Your password reset request',domain:'ResetPasswordBundle')) + ->htmlTemplate($translator->trans('reset_password/email.html.twig',domain:'ResetPasswordBundle')) + ->context([ + 'resetToken' => $resetToken, + 'username' => $user->getUsername(), + ]) + ; + + $mailer->send($email); + + // Store the token object in session for retrieval in check-email route. + $this->setTokenObjectInSession($resetToken); + + return $this->redirectToRoute('app_check_email'); + } +} diff --git a/src/Controller/SecurityController.php b/src/Controller/SecurityController.php index dc7de33..4ef0325 100644 --- a/src/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -6,6 +6,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; +use Symfony\Bundle\SecurityBundle\Security; use App\Controller\WebrootController; @@ -27,14 +28,20 @@ class SecurityController extends WebrootController 'login_username' => $this->trans("login.username",domain:"security"), 'login_password' => $this->trans("login.password",domain:"security"), 'login_remember_me' => $this->trans("login.remember_me",domain:"security"), + 'login_forgotten_password' => $this->trans("login.forgotten_password",domain:"security"), 'last_username' => $lastUsername, 'error' => $error, ])); } - - #[Route(path: '/logout', name: 'app_logout')] - public function logout(): void + + #[Route('/logout',name:'app_logout')] + public function logout(Security $security): Response { - throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.'); + if ($this->getUser()) { + $response = $security->logout(false); + } else { + $response = $this->redirect("Login"); + } + return $response; } } diff --git a/src/Controller/SetupController.php b/src/Controller/SetupController.php index 5f938ec..8b5d420 100644 --- a/src/Controller/SetupController.php +++ b/src/Controller/SetupController.php @@ -122,6 +122,7 @@ class SetupController extends WebrootSetupController $data= $this->getDataFromInitialSetupDataCookie($request); $commands=$data["__commands__"]; + $error=null; if ($step >= count($commands)) { return $this->redirectToRoute("app_login"); @@ -133,14 +134,26 @@ class SetupController extends WebrootSetupController $output = $this->trans("command.createdb",domain:"mydevel.webroot.setup"); try { $this->runCreateDatabase(); - } catch (\Throwable $ex) { + $status="SUCCESS"; + } catch (\Exception $ex) { $status = "FAILED"; - $status_message = $this->trans("command.failed",domain:"mydevel.webroot.setup"); + $status_message = $this->translate("command.failed",domain:"mydevel.webroot.setup"); + $error = $ex->getMessage(); + } catch (\Throwable $ex) { + $status = "FAILED"; + if (function_exists([$ex,'getMessage'])) { + $error=$ex->getMessage(); + } + $status_message = $this->trans("command.failed",domain:"mydevel.webroot.setup"); } } elseif ($commands[$step] === "make-migrations") { $output = $this->trans("command.makemigrations",domain:"mydevel.webroot.setup"); try { $this->runMakeMigration(); + } catch (\Exception $ex) { + $status = "FAILED"; + $status_message = $this->translate("command.failed",domain:"mydevel.webroot.setup"); + $error = $ex->getMessage(); } catch (\Throwable $ex) { $status = "FAILED"; $status_message = $this->trans("command.success",domain:"mydevel.webroot.setup"); @@ -149,6 +162,10 @@ class SetupController extends WebrootSetupController $output = $this->trans("command.migrate",domain:"mydevel.webroot.setup"); try { $this->runMigrate(); + } catch (\Exception $ex) { + $status = "FAILED"; + $status_message = $this->translate("command.failed",domain:"mydevel.webroot.setup"); + $error = $ex->getMessage(); } catch (\Throwable $ex) { $status_message = $this->trans("command.failed",domain:"mydevel.webroot.setup"); $status = "FAILED"; @@ -161,10 +178,14 @@ class SetupController extends WebrootSetupController $this->addRootDir($data); $status = "SUCCESS"; $status_message = $this->trans("command.success",domain:"mydevel.webroot.setup"); - } catch (\Throwable $ex) { + } catch (\Exception $ex) { $status = "FAILED"; $status_message = $this->translate("command.failed",domain:"mydevel.webroot.setup"); - } + $error = $ex->getMessage(); + } catch (\throwable $ex) { + $status_message = $this->trans("command.failed"); + $status = "FAILED"; + } } else { $output = "Unknown command \"" . $commands[$step] . "\""; $status = "FAILED"; @@ -177,6 +198,7 @@ class SetupController extends WebrootSetupController 'status' => $status, 'status_message' => $status_message, 'output' => $output, + 'error' => $error, 'failed_button' => $this->trans("button.return-setup",domain:"mydevel.webroot.setup"), ]); } diff --git a/src/Controller/WebrootController.php b/src/Controller/WebrootController.php index 6afe151..74ce38b 100644 --- a/src/Controller/WebrootController.php +++ b/src/Controller/WebrootController.php @@ -4,24 +4,33 @@ namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\ResponseHeaderBag; +use Symfony\Component\HttpFoundation\File\Exception\FileException; use Symfony\Component\Routing\Attribute\Route; +use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Contracts\Translation\TranslatorInterface; - +use Doctrine\ORM\EntityManagerInterface; +use App\Entity\WebrootFile; use App\Utility\NullTranslator; abstract class WebrootController extends AbstractController { private ?string $project_dir = null; private ?TranslatorInterface $tranlsator = null; + private ?EntityManager $entitymanager = null; protected ?NullTranslator $nulltranslator = null; - public function __construct(KernelInterface $kernel,TranslatorInterface $translator) + public function __construct(KernelInterface $kernel,TranslatorInterface $translator,EntityManagerInterface $entitymanager) { + $this->entity_manager = $entitymanager; $this->project_dir = $kernel->getProjectDir(); $this->translator = $translator; - $this->nulltranslator = new NullTranslator(); + $this->nulltranslator = new NullTranslator(); + $this->entitymanager = $entitymanager; } public function getHeaderTitleFiglet(): ?string @@ -51,4 +60,133 @@ abstract class WebrootController extends AbstractController { return $this->translator->trans($message,$args,domain:$domain,locale:$locale); } + + protected function getFilePermissions($section,string $url_path): array + { + return $this->entitymanager->getRepositiory(WebrootFile::class) + ->findFilePermissionsBySectionPath($this->getUser(),$section,$url_path); + } + + protected function getFileResponse($abspath): Response + { + if (!is_file($abspath)) { + throw new FileException(); + } + $response = new BinaryFileResponse(); + $response->setFile($abspath); + $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE); + return response; + } + + protected function getDirectoryList(string $abspath,string $section,string $url_path,array $routeconfig): array + { + if (!is_directory("abspath")) { + throw new FileException(); + } + $file_repos = $this->entitymanager->getRepository(WebrootFile::class); + $user = $this->getUser(); + $roles = $user->getRoles(); + if (in_array('ROLE_SUPERADMIN', $roles) || in_array('ROLE_ADMIN',$roles)) { + $show_dotfiles = true; + } else { + $show_dotfiles = false; + } + + $dirlist = []; + + if (key_exists("child",$routeconfig)) { + $child_route=$routeconfig["child"]; + } else { + $child_route=$routeconfig["route"]; + } + + if (key_exists("parent_href",$routeconfig)) { + $parent_href=$routeconfig["parent"]; + } else { + $parent_href=null; + } + + foreach (scandir($abspath) as $dirent) { + if ($dirent === '.' || $dirent === '..') { + continue; + } + if ($dirent[0] === '.' && ! $show_dotfiles) { + continue; + } + + $file_urlpath = $url_path . '/' . $dirent; + $file_abspath = $abspath . DIRECTORY_SEPARATOR . $dirent; + $fileperm = $file_repos->findFilePermissionsBySectionPath($user,$section,$file_urlpath); + + if (!$fileperm['read']) { + continue; + } + + if (is_file($file_abspath)) { + $dirlist[] = [ + "name" => $dirent, + "icon" => "icons/file.svg", + "href" => $this->generateUrl($child_route, ["path"=>"file_urlpath"]), + "size" => filesize($file_abspath), + "delete" => $fileperm['delete'], + "write" => $fileperm['write'], + "mtime" => filemtime($file_abspath), + "read" => true, + "dir" => false, + ]; + } elseif (is_dir($file_abspath)) { + $dirlist[] = [ + "name" => $dirent, + "icon"=>"icons/dir.svg", + "href" => $this->generateUrl($child_route, ["path"=>"file_urlpath"]), + "size" => "-", + "delete" => $fileperm['delete'], + "write" => $fileperm['write'], + "mtime" => filemtime($file_abspath), + "read" => true, + "dir" => true, + ]; + } + } + return $dirlist; + } + + protected function getDirectoryResponse($abspath,$fileperm,$section,$url_path) : Response + { + $dirlist = $this->getDirectoryList($abspath, $fileperm, $section, $url_path); + + return new Response(); + } + + protected function getSectionPathResponse(string $section,string $url_path,array $routeconfig): Response + { + if (!getFilePermissions($section,$urlPath)) { + throw AccessDeniedHttpException(); + } + + $path = $this->buildPath($section,$url_path); + if (!$path || !file_exists($path)) { + throw NotFoundHttpException(); + } + + $file_repos = $this->entitymanager->getRepository(WebrootFile::class); + $abspath = $file_repos->findAbspathBySectionPath($section,$path); + + if (!file_exists($abspath)) { + throw new NotFoundHttpException(); + } + $fileperm = $file_repos->findFilePermissionsBySectionPath($this->getUser(),$section,$path); + if (!$fileperm['read']) { + throw AccessDeniedHttpException(); + } + + if (is_file($abspath)) { + return $this->getFileResponse($abspath); + } + if (is_dir($abspath)) { + return $this->getDirectoryListResponse($abspath,$section,$url_path,$routeconfig); + } + + throw FileException(); + } } diff --git a/src/Controller/WebrootSetupController.php b/src/Controller/WebrootSetupController.php index c42eab6..0c3b872 100644 --- a/src/Controller/WebrootSetupController.php +++ b/src/Controller/WebrootSetupController.php @@ -208,6 +208,54 @@ abstract class WebrootSetupController extends AbstractController return $content; } + /** + * + * @return string + */ + protected function runCacheClear(): string + { + $application = new Application($this->kernel); + $application->setAutoExit(false); + + $input = new ArrayInput([ + "command" => "cache:clear", + "--no-interaction" => true, + "--quiet" => true, + ]); + + $output = new BufferedOutput(); + $errcode = $application->run($input,$output); + if ($errcode) { + throw new \Exception("runMigrate failed!\n". $output->fetch()); + } + + $content = $output->fetch(); + + return $content; + } + + protected function runDatabaseUpdate(): string + { + $application = new Application($this->kernel); + $application->setAutoExit(false); + + $input = new ArrayInput([ + "command" => "doctrine:schema:update", + "--no-interaction" => true, + "--quiet" => true, + ]); + + $output = new BufferedOutput(); + $errcode = $application->run($input,$output); + if ($errcode) { + throw new \Exception("runMigrate failed!\n". $output->fetch()); + } + + $content = $output->fetch(); + + return $content; + } + public function getInitialRoles(bool $translated=true): array { @@ -543,8 +591,9 @@ abstract class WebrootSetupController extends AbstractController public function getDataFromSetupForm(Form $form) : array { - $data=[]; - $data['env'] = $form->get('env')->getNormData(); + $data=[ + 'env' => $form->get('env')->getNormData() + ]; $locale = $form->get('locale')->getNormData(); if ($locale && strlen($locale)) { @@ -632,22 +681,23 @@ abstract class WebrootSetupController extends AbstractController if ($email_path && strlen($email_path)) { $email["path"] = $email_path; } - $email_user = $form->get("email_user")->getNormData(); if ($email_user && strlen($email_user)) { $email["user"] = $email_user; } + $email_password = $form->get("email_password")->getNormData(); + if ($email_password && strlen($email_password)) { + $email["password"] = $email_password; + } $email_host = $form->get('email_host')->getNormData(); if ($email_host && strlen($email_host)) { $email["host"] = $email_host; } - $email_port = $form->get('email_port')->getNormData(); if ($email_port && (int) $email_port) { $email["port"] = $email_port; } - $email_dsn = $form->get('email_dsn')->getNormData(); if ($email_dsn && strlen($email_dsn)) { $email["dsn"] = $email_dsn; @@ -749,7 +799,14 @@ abstract class WebrootSetupController extends AbstractController $response->headers->removeCookie(WebrootSetupController::INITIAL_SETUP_COOKIE,"/setup/"); } } + public function envencode(string $str): string + { + return preg_replace('/%/','%%',urlencode($str)); + } + public function writeDotEnvLocal(array $data,bool $generate_app_secret=true) { + + $file = fopen(join(DIRECTORY_SEPARATOR,[$this->project_dir,".env.local"]),"w"); fwrite($file,"APP_ENV=" . $data["env"] . "\n"); @@ -764,7 +821,7 @@ abstract class WebrootSetupController extends AbstractController $db_backend=$data['database']['backend']; if ($db_backend === "sqlite") { - fwrite($file,"DATABASE_URL=\"sqlite://" . $data['database']['database'] . "\"\n"); + fwrite($file,"DATABASE_URL=\"sqlite:///" . $data['database']['database'] . "\"\n"); } elseif ($db_backend === "mysql") { fwrite($file,"DATABASE_URL=\"msysql://" . urlencode($data['database']['user']) @@ -784,8 +841,30 @@ abstract class WebrootSetupController extends AbstractController } elseif ($db_backend === "url") { fwrite($file,"DATABASE_URL=\"" . $data["database"]["url"] . "\"\n"); } + + $mail_backend = $data["email"]["backend"]; + if ($mail_backend === "none") { + $MAILER_DSN="null://null"; + } elseif ($mail_backend === "smtp") { + $MAILER_DSN="smtp://" + . urlencode($data['email']['user']) + . ':' . urlencode($data['email']['password']) + . '@' . urlencode($data['email']['host']) + . ':' . $data['email']['port']; + } elseif ($mail_backend === "sendmail") { + $MAILER_DSN="sendmail://default"; + } elseif ($mail_backend === "native") { + $MAILER_DSN="native://default"; + } elseif ($mail_backend === "dsn") { + $MAILER_DSN=$data['email']['dsn']; + } + fwrite($file,"MAILER_DSN=\"" . $MAILER_DSN . "\"\n"); + + fclose($file); } + + protected function addRoles() { foreach ($this->getInitialRoles(false) as $roledata) { @@ -804,6 +883,7 @@ abstract class WebrootSetupController extends AbstractController $user->setUsername($setup_data["user"]["username"]); $user->setEmail($setup_data["user"]["email"]); $user->setAdmin(true); + $user->setRoles(["ROLE_SUPERADMIN","ROLE_ADMIN","ROLE_USER"]); $user->setPassword($setup_data["user"]["password"]); $this->entitymanager->persist($user); $this->entitymanager->flush(); @@ -814,7 +894,7 @@ abstract class WebrootSetupController extends AbstractController ->getRepository(WebrootUser::class) ->findByUsername($setup_data['user']['username']); $wrf = new WebrootFile(); - $wrf->setUrl('/root'); + $wrf->setUrl('/webroot'); $wrf->setAbspath($setup_data["site"]["rootdir"]); $wrf->setOwner($admin); $this->entitymanager->persist($wrf); @@ -822,14 +902,26 @@ abstract class WebrootSetupController extends AbstractController $superadmin_role = $this->entitymanager ->getRepository(WebrootRole::class) ->findByRolename("ROLE_SUPERADMIN"); + $rootperm = new WebrootFilePermission(); $rootperm->setWebrootFile($wrf); $rootperm->setRole($superadmin_role); $rootperm->setDeleteable(true); $rootperm->setReadable(true); - $rootperm->setWriteable(false); - + $rootperm->setWriteable(true); $this->entitymanager->persist($rootperm); + + $admin_role = $this->entitymanager + ->getRepository(WebrootRole::class) + ->findByRolename("ROLE_ADMIN"); + $adminperm = new WebrootFilePermission(); + $adminperm->setWebrootFile($wrf); + $adminperm->setRole($admin_role); + $adminperm->setReadable(true); + $adminperm->setWriteable(false); + $adminperm->setDeleteable(false); + $this->entitymanager->persist($adminperm); + $this->entitymanager->flush(); } } diff --git a/src/Entity/ResetPasswordRequest.php b/src/Entity/ResetPasswordRequest.php new file mode 100644 index 0000000..537f76c --- /dev/null +++ b/src/Entity/ResetPasswordRequest.php @@ -0,0 +1,39 @@ +user = $user; + $this->initialize($expiresAt, $selector, $hashedToken); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getUser(): WebrootUser + { + return $this->user; + } +} diff --git a/src/Entity/WebrootFile.php b/src/Entity/WebrootFile.php index f3d469d..c3794f1 100644 --- a/src/Entity/WebrootFile.php +++ b/src/Entity/WebrootFile.php @@ -16,9 +16,14 @@ class WebrootFile #[ORM\Column] private ?int $id = null; - #[ORM\Column(length: 65535,nullable:false)] - private ?string $url = null; + #[ORM\Column(length:1024,nullable:false,options:["default"=>"webroot"])] + private ?string $section = null; + + #[ORM\Column(length: 65535,nullable:false)] + private ?string $url_path = null; + + #[ORM\Column(length: 65535,nullable:false)] private ?string $abspath = null; @@ -46,12 +51,12 @@ class WebrootFile return $this->id; } - public function getUrl(): ?string + public function getUrlPath(): ?string { return $this->url; } - public function setUrl(string $url): static + public function setUrlPath(string $url): static { $this->url = $url; diff --git a/src/Entity/WebrootUser.php b/src/Entity/WebrootUser.php index 4f7c9a5..96c2d5f 100644 --- a/src/Entity/WebrootUser.php +++ b/src/Entity/WebrootUser.php @@ -75,6 +75,7 @@ class WebrootUser implements UserInterface, PasswordAuthenticatedUserInterface $roles = $this->roles; // guarantee every user at least has ROLE_USER $roles[] = 'ROLE_USER'; + $roles[] = 'ROLE_PUBLIC'; return array_unique($roles); } diff --git a/src/Form/ChangePasswordFormType.php b/src/Form/ChangePasswordFormType.php new file mode 100644 index 0000000..42c6c0f --- /dev/null +++ b/src/Form/ChangePasswordFormType.php @@ -0,0 +1,58 @@ +add('plainPassword', RepeatedType::class, [ + 'type' => PasswordType::class, + 'options' => [ + 'attr' => [ + 'autocomplete' => 'new-password', + ], + ], + 'first_options' => [ + 'constraints' => [ + new NotBlank([ + 'message' => 'Please enter a password', + ]), + new Length([ + 'min' => 12, + 'minMessage' => 'Your password should be at least {{ limit }} characters', + // max length allowed by Symfony for security reasons + 'max' => 4096, + ]), + new PasswordStrength(), + new NotCompromisedPassword(), + ], + 'label' => 'New password', + ], + 'second_options' => [ + 'label' => 'Repeat Password', + ], + 'invalid_message' => 'The password fields must match.', + // Instead of being set onto the object directly, + // this is read and encoded in the controller + 'mapped' => false, + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([]); + } +} diff --git a/src/Form/ResetPasswordRequestFormType.php b/src/Form/ResetPasswordRequestFormType.php new file mode 100644 index 0000000..939ea5f --- /dev/null +++ b/src/Form/ResetPasswordRequestFormType.php @@ -0,0 +1,31 @@ +add('email', EmailType::class, [ + 'attr' => ['autocomplete' => 'email'], + 'constraints' => [ + new NotBlank([ + 'message' => 'Please enter your email', + ]), + ], + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([]); + } +} diff --git a/src/Repository/ResetPasswordRequestRepository.php b/src/Repository/ResetPasswordRequestRepository.php new file mode 100644 index 0000000..9f5f0bc --- /dev/null +++ b/src/Repository/ResetPasswordRequestRepository.php @@ -0,0 +1,32 @@ + + */ +class ResetPasswordRequestRepository extends ServiceEntityRepository implements ResetPasswordRequestRepositoryInterface +{ + use ResetPasswordRequestRepositoryTrait; + + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, ResetPasswordRequest::class); + } + + /** + * @param WebrootUser $user + */ + public function createResetPasswordRequest(object $user, \DateTimeInterface $expiresAt, string $selector, string $hashedToken): ResetPasswordRequestInterface + { + return new ResetPasswordRequest($user, $expiresAt, $selector, $hashedToken); + } +} diff --git a/src/Repository/WebrootFileRepository.php b/src/Repository/WebrootFileRepository.php index fbe555b..a6b4423 100644 --- a/src/Repository/WebrootFileRepository.php +++ b/src/Repository/WebrootFileRepository.php @@ -3,9 +3,11 @@ namespace App\Repository; use App\Entity\WebrootFile; +use App\Entity\WebrootUser; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; + /** * @extends ServiceEntityRepository */ @@ -16,6 +18,108 @@ class WebrootFileRepository extends ServiceEntityRepository parent::__construct($registry, WebrootFile::class); } + public function findFilePermissionsBySectionPath(?WebrootUser $user,string $section,string $url_path): array + { + $paths_array= explode('/', $url_path); + $query_builder = $this->createQueryBuilder('f') + ->andWhere('f.section := sect') + ->andWhere('f.url_path := path') + ->setParameter('sect', $section); + if ($user) { + $roles = $user->getRoles(); + if (in_array('ROLE_SUPERADMIN',$roles)) { + return ['read'=>true,'write'=>true,'delete'=>true]; + } + + } else { + $roles = ["ROLE_PUBLIC"]; + } + + $ret = [ + 'read'=>false, + 'write'=>false, + 'delete'=>false, + ]; + + while (sizeof($paths_array) > 0) { + $result = $query_builder->setParameter('sect',$section) + ->setParameter('path',join(DIRECTORY_SEPARATOR,$paths_array)) + ->getQuery() + ->getOneOrNullResult(); + if ($result) { + foreach($result->getPermissions() as $perm) { + if ($user && $result->getOwner()->getId() === $user->getId()) { + return [['read'=>true,'write'=>true,'delete'=>true]]; + } + + if (in_array($perm->getRole()->getRole(),$roles)) { + if ($perm->isReadable()) { + $ret['read'] = true; + } + if ($perm->isWriteable()) { + $ret['write'] = true; + } + if ($perm->isDeleteable()) { + $ret['delete'] = true; + } + } + } + break; + } + } + return $ret; + } + + public function findBySectionPath(string $section,string $url_path): ?WebrootFile + { + return $this->createQueryBuilder('f') + ->andWhere('f.section := sect') + ->andWhere('f.url_path := path') + ->setParameter('sect', $section) + ->setParameter('path', $url_path) + ->getQuery() + ->getOneOrNullResult(); + } + + public function findAbspathBySectionPath(string $section, string $url_path): ?string + { + $query_builder = $this->createQueryBuilder('f') + ->andWhere('f.section := sect') + ->andWhere('f.path : path') + ->setParameter('sect', $section); + + $path_array = explode('/',$url_path); + $path_extend=[]; + while (sizeof($path_array) > 0) { + $result = query_builder->setParameter('path',join('/',path_array)) + ->qetQuery() + ->getOneOrNullResult(); + if ($result) { + if (!sizeof($path_extend)) { + return $result->getAbspath(); + } else { + $join_path = [$result->getAbaspath()]; + + foreach (array_reverse($path_extend) as $xpath) { + $join_path[] = $xpath; + } + return join(DIRECTORY_SEPARATOR,$join_path); + } + } + $path_extend[] = array_pop($path_array); + } + return null; + } + + public function findByAbspath(string $abspath): array + { + return $this->createQueryBuilder('f') + ->andWhere('f.absath := val') + ->setParameter('val', $abspath) + ->getQuery() + ->getResult(); + } + // /** // * @return WebrootFile[] Returns an array of WebrootFile objects // */ diff --git a/symfony.lock b/symfony.lock index 76897ca..8289a2d 100644 --- a/symfony.lock +++ b/symfony.lock @@ -27,7 +27,7 @@ ] }, "easycorp/easyadmin-bundle": { - "version": "4.18", + "version": "4.9999999", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -100,6 +100,18 @@ "./.env" ] }, + "symfony/form": { + "version": "7.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.2", + "ref": "7d86a6723f4a623f59e2bf966b6aad2fc461d36b" + }, + "files": [ + "./config/packages/csrf.yaml" + ] + }, "symfony/framework-bundle": { "version": "6.4", "recipe": { @@ -258,16 +270,13 @@ ] }, "symfony/uid": { - "version": "6.4", + "version": "7.2", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "6.2", - "ref": "d294ad4add3e15d7eb1bae0221588ca89b38e558" - }, - "files": [ - "./config/packages/uid.yaml" - ] + "version": "7.0", + "ref": "0df5844274d871b37fc3816c57a768ffc60a43a5" + } }, "symfony/ux-turbo": { "version": "2.21", @@ -279,7 +288,7 @@ } }, "symfony/ux-twig-component": { - "version": "2.21", + "version": "2.22", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -315,6 +324,18 @@ "./config/routes/web_profiler.yaml" ] }, + "symfonycasts/reset-password-bundle": { + "version": "1.23", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "97c1627c0384534997ae1047b93be517ca16de43" + }, + "files": [ + "./config/packages/reset_password.yaml" + ] + }, "twig/extra-bundle": { "version": "v3.15.0" } diff --git a/templates/main/index.html.twig b/templates/main/index.html.twig index 07a4b7a..8bade47 100644 --- a/templates/main/index.html.twig +++ b/templates/main/index.html.twig @@ -3,4 +3,11 @@

You are logged in as {{ user.username }}.

+

+

    + {% for role in user.roles %} +
  • {{ role }}
  • + {% endfor %} +
+

{% endblock %} diff --git a/templates/reset_password/check_email.html.twig b/templates/reset_password/check_email.html.twig new file mode 100644 index 0000000..786819b --- /dev/null +++ b/templates/reset_password/check_email.html.twig @@ -0,0 +1,11 @@ +{% extends 'base.html.twig' %} + +{% block title %}Password Reset Email Sent{% endblock %} + +{% block body %} +

+ If an account matching your email exists, then an email was just sent that contains a link that you can use to reset your password. + This link will expire in {{ resetToken.expirationMessageKey|trans(resetToken.expirationMessageData, 'ResetPasswordBundle') }}. +

+

If you don't receive an email please check your spam folder or try again.

+{% endblock %} diff --git a/templates/reset_password/de.email.html.twig b/templates/reset_password/de.email.html.twig new file mode 100644 index 0000000..283b603 --- /dev/null +++ b/templates/reset_password/de.email.html.twig @@ -0,0 +1,9 @@ +

Hi!

+ +

Um Dein Passwort zurückzusetzen, besuche folgenden Link

+ +{{ url('app_reset_password', {token: resetToken.token}) }} + +

Der Link läuft in {{ resetToken.expirationMessageKey|trans(resetToken.expirationMessageData, 'ResetPasswordBundle') }} ab.

+

Dein Nutzername falls du ihn vergessen hast: {{ username }}

+

Mit freundlichen Grüßen das {{ app.request.server.get('SITE_NAME') }} Team!

diff --git a/templates/reset_password/email.html.twig b/templates/reset_password/email.html.twig new file mode 100644 index 0000000..23813a5 --- /dev/null +++ b/templates/reset_password/email.html.twig @@ -0,0 +1,9 @@ +

Hi!

+ +

To reset your password, please visit the following link

+ +{{ url('app_reset_password', {token: resetToken.token}) }} + +

This link will expire in {{ resetToken.expirationMessageKey|trans(resetToken.expirationMessageData, 'ResetPasswordBundle') }}.

+

Your username in case you have forgotten it: {{ username }}

+

Cheers! Your {{ app.request.server.get("SITE_NAME")}} team.

diff --git a/templates/reset_password/request.html.twig b/templates/reset_password/request.html.twig new file mode 100644 index 0000000..0a118aa --- /dev/null +++ b/templates/reset_password/request.html.twig @@ -0,0 +1,22 @@ +{% extends 'base.html.twig' %} + +{% block title %}Reset your password{% endblock %} + +{% block body %} + {% for flash_error in app.flashes('reset_password_error') %} + + {% endfor %} +

Reset your password

+ + {{ form_start(requestForm) }} + {{ form_row(requestForm.email) }} +
+ + Enter your email address, and we will send you a + link to reset your password. + +
+ + + {{ form_end(requestForm) }} +{% endblock %} diff --git a/templates/reset_password/reset.html.twig b/templates/reset_password/reset.html.twig new file mode 100644 index 0000000..799aa10 --- /dev/null +++ b/templates/reset_password/reset.html.twig @@ -0,0 +1,12 @@ +{% extends 'base.html.twig' %} + +{% block title %}Reset your password{% endblock %} + +{% block body %} +

Reset your password

+ + {{ form_start(resetForm) }} + {{ form_row(resetForm.plainPassword) }} + + {{ form_end(resetForm) }} +{% endblock %} diff --git a/templates/security/login.html.twig b/templates/security/login.html.twig index 75eba16..0f40f3c 100644 --- a/templates/security/login.html.twig +++ b/templates/security/login.html.twig @@ -41,9 +41,14 @@ - - +

{{ login_forgotten_password }}

+ +

+
+ +
+ {% endblock %} diff --git a/templates/setup/initial-setup.run.html.twig b/templates/setup/initial-setup.run.html.twig index d4dcd52..1aad25d 100644 --- a/templates/setup/initial-setup.run.html.twig +++ b/templates/setup/initial-setup.run.html.twig @@ -12,9 +12,9 @@ function initializeSetup() { let a = document.createElement("a"); a.setAttribute('href',"{{ setup_url }}"); a.setAttribute('class','button'); - a.innerText = "{{ failed_button }}" + a.innerText = "{{ failed_button }}"; elem.appendChild(a); - console.log("LOADED") + console.log("LOADED"); } } @@ -24,5 +24,8 @@ function initializeSetup() {

Running Setup

{{ output }} ... {{ status_message }}

+ {% if error %} +

{{ error }}

+ {% endif %} {% endblock %} diff --git a/templates/webroot/de.directory.html.twig b/templates/webroot/de.directory.html.twig index 2c9ed5e..ba36c12 100644 --- a/templates/webroot/de.directory.html.twig +++ b/templates/webroot/de.directory.html.twig @@ -3,14 +3,12 @@ {% block body %}

Index für {{ url_path }}

- {% if create_dir %} + {% if write %} - {% endif %} - {% if upload_file %} @@ -20,10 +18,10 @@
- - - - + + + + diff --git a/templates/webroot/directory.html.twig b/templates/webroot/directory.html.twig index dad5a86..a5bd826 100644 --- a/templates/webroot/directory.html.twig +++ b/templates/webroot/directory.html.twig @@ -3,33 +3,30 @@ {% block body %}

Index for {{ url_path }}

- {% if create_dir %} + {% if write %} - - + + create-icon - {% endif %} - {% if upload_file %} - - + + upload-icon {% endif %}
[icon]NameGrößeZuletzt geändert[icon]NameGrößeZuletzt geändert Beschreibung
- - - - + + + - + {% if parent_url %} - + @@ -39,11 +36,10 @@ {% endif %} {% for entry in dir_entries %} - + - - - + + {% endfor %} - +
[icon]SizeLast changedDescription[icon]SizeLast changed


[icon][icon] Zurück - -
{% if entry.icon %}{{ entry.icon_alt }}{% endif %}{% if entry.icon %}icon{% endif %} {{ entry.name }}{{ entry.display_size }}{{ entry.last_modified }}{{ entry.description }}{{ entry.size }}{{ entry.mtime }} {% if entry.delete %} @@ -53,7 +49,7 @@


{% endblock %} diff --git a/translations/ResetPasswordBundle.de.yaml b/translations/ResetPasswordBundle.de.yaml new file mode 100644 index 0000000..b8a878c --- /dev/null +++ b/translations/ResetPasswordBundle.de.yaml @@ -0,0 +1,13 @@ +'%count% year|%count% years': '%count% Jahr|%count% Jahren' +'%count% month|%count% months': '%count% Monat|%count% Monaten' +'%count% day|%count% days': '%count% Tag|%count% Tagen' +'%count% hour|%count% hours': '%count% Stunde|%count% Stunden' +'%count% minute|%count% minutes': '%count% Minute|%count% Minuten' +'There was a problem validating your password reset request': 'Es gab ein Problem bei der Validierung Ihrer Anfrage zum Zurücksetzen des Passworts' +'There was a problem handling your password reset request': 'Es gab ein Problem bei der Bearbeitung Ihrer Anfrage zum Zurücksetzen des Passworts' +'The link in your email is expired. Please try to reset your password again.': 'Der Link in Ihrer E-Mail ist abgelaufen. Bitte versuchen Sie erneut, Ihr Passwort zurückzusetzen.' +'Please update the request_password_repository configuration in config/packages/reset_password.yaml to point to your "request password repository" service.': 'Bitte aktualisieren Sie die request_password_repository-Konfiguration in config/packages/reset_password.yaml, um auf Ihren "request password repository"-Dienst zu verweisen.' +'The reset password link is invalid. Please try to reset your password again.': 'Der Link zum Zurücksetzen des Passworts ist ungültig. Bitte versuchen Sie erneut, Ihr Passwort zurückzusetzen.' +'You have already requested a reset password email. Please check your email or try again soon.': 'Sie haben bereits eine E-Mail mit einem neuen Passwort angefordert. Bitte überprüfen Sie Ihre E-Mail oder versuchen Sie es später erneut.' +'Your password reset request': 'Dein Passwort zurücksetzen Anfrage' +reset_password/email.html.twig: reset_password/de.email.html.twig diff --git a/translations/ResetPasswordBundle.en.yaml b/translations/ResetPasswordBundle.en.yaml new file mode 100644 index 0000000..74c88a4 --- /dev/null +++ b/translations/ResetPasswordBundle.en.yaml @@ -0,0 +1,13 @@ +'%count% year|%count% years': '%count% year|%count% years' +'%count% month|%count% months': '%count% month|%count% months' +'%count% day|%count% days': '%count% day|%count% days' +'%count% hour|%count% hours': '%count% hour|%count% hours' +'%count% minute|%count% minutes': '%count% minute|%count% minutes' +'There was a problem validating your password reset request': 'There was a problem validating your password reset request' +'There was a problem handling your password reset request': 'There was a problem handling your password reset request' +'The link in your email is expired. Please try to reset your password again.': 'The link in your email is expired. Please try to reset your password again.' +'Please update the request_password_repository configuration in config/packages/reset_password.yaml to point to your "request password repository" service.': 'Please update the request_password_repository configuration in config/packages/reset_password.yaml to point to your "request password repository" service.' +'The reset password link is invalid. Please try to reset your password again.': 'The reset password link is invalid. Please try to reset your password again.' +'You have already requested a reset password email. Please check your email or try again soon.': 'You have already requested a reset password email. Please check your email or try again soon.' +'Your password reset request': 'Your password reset request' +reset_password/email.html.twig: reset_password/email.html.twig diff --git a/translations/mydevel.webroot.en.yaml b/translations/mydevel.webroot.en.yaml index e07be7e..e69de29 100644 --- a/translations/mydevel.webroot.en.yaml +++ b/translations/mydevel.webroot.en.yaml @@ -1,13 +0,0 @@ -role: - superadmin: - name: __role.superadmin.name - descr: __role.superadmin.descr - admin: - name: __role.admin.name - descr: __role.admin.descr - user: - name: __role.user.name - descr: __role.user.descr - public: - name: __role.public.name - descr: __role.public.descr diff --git a/translations/mydevel.webroot.role+intl-icu.en de.po b/translations/mydevel.webroot.role+intl-icu.en de.po new file mode 100644 index 0000000..da1c2ca --- /dev/null +++ b/translations/mydevel.webroot.role+intl-icu.en de.po @@ -0,0 +1,35 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en de\n" + +msgid "webroot-user.name" +msgstr "__webroot-user.name" + +msgid "webroot-user.decr" +msgstr "__webroot-user.decr" + +msgid "superadmin.name" +msgstr "__superadmin.name" + +msgid "superadmin.descr" +msgstr "__superadmin.descr" + +msgid "admin.name" +msgstr "__admin.name" + +msgid "admin.descr" +msgstr "__admin.descr" + +msgid "user.name" +msgstr "__user.name" + +msgid "user.descr" +msgstr "__user.descr" + +msgid "public.name" +msgstr "__public.name" + +msgid "public.descr" +msgstr "__public.descr" diff --git a/translations/mydevel.webroot.setup+intl-icu.en de.po b/translations/mydevel.webroot.setup+intl-icu.en de.po new file mode 100644 index 0000000..ffa25ad --- /dev/null +++ b/translations/mydevel.webroot.setup+intl-icu.en de.po @@ -0,0 +1,173 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en de\n" + +msgid "setupform.section.email" +msgstr "__setupform.section.email" + +msgid "setupform.section.site" +msgstr "__setupform.section.site" + +msgid "setupform.section.database" +msgstr "__setupform.section.database" + +msgid "setupform.section.user" +msgstr "__setupform.section.user" + +msgid "setupform.title" +msgstr "__setupform.title" + +msgid "command.success" +msgstr "__command.success" + +msgid "command.createdb" +msgstr "__command.createdb" + +msgid "command.failed" +msgstr "__command.failed" + +msgid "command.makemigrations" +msgstr "__command.makemigrations" + +msgid "command.migrate" +msgstr "__command.migrate" + +msgid "command.populatedb" +msgstr "__command.populatedb" + +msgid "button.return-setup" +msgstr "__button.return-setup" + +msgid "setupform.env.label" +msgstr "__setupform.env.label" + +msgid "setupform.env.help" +msgstr "__setupform.env.help" + +msgid "setupform.env.choices.prod" +msgstr "__setupform.env.choices.prod" + +msgid "setupform.env.choices.dev" +msgstr "__setupform.env.choices.dev" + +msgid "setupform.locale.label" +msgstr "__setupform.locale.label" + +msgid "setupform.locale.help" +msgstr "__setupform.locale.help" + +msgid "setupform.tempdir.label" +msgstr "__setupform.tempdir.label" + +msgid "setupform.site.name.help" +msgstr "__setupform.site.name.help" + +msgid "setupform.site.name.label" +msgstr "__setupform.site.name.label" + +msgid "setupform.site.root.help" +msgstr "__setupform.site.root.help" + +msgid "setupform.site.root.label" +msgstr "__setupform.site.root.label" + +msgid "setupform.site.email.label" +msgstr "__setupform.site.email.label" + +msgid "setupform.user.username.label" +msgstr "__setupform.user.username.label" + +msgid "setupform.user.email.label" +msgstr "__setupform.user.email.label" + +msgid "setupform.user.password.label" +msgstr "__setupform.user.password.label" + +msgid "setupform.user.confpasswd.label" +msgstr "__setupform.user.confpasswd.label" + +msgid "setupform.db.migrate.label" +msgstr "__setupform.db.migrate.label" + +msgid "setupform.db.create.label" +msgstr "__setupform.db.create.label" + +msgid "setupform.db.mkmigrations.label" +msgstr "__setupform.db.mkmigrations.label" + +msgid "setupform.db.backend.label" +msgstr "__setupform.db.backend.label" + +msgid "setupform.db.backend.choices.sqlite" +msgstr "__setupform.db.backend.choices.sqlite" + +msgid "setupform.db.backend.choices.mysql" +msgstr "__setupform.db.backend.choices.mysql" + +msgid "setupform.db.backend.choices.portgesql" +msgstr "__setupform.db.backend.choices.portgesql" + +msgid "setupform.db.backend.choices.url" +msgstr "__setupform.db.backend.choices.url" + +msgid "setupform.db.database.label" +msgstr "__setupform.db.database.label" + +msgid "setupform.db.host.label" +msgstr "__setupform.db.host.label" + +msgid "setupform.db.port.label" +msgstr "__setupform.db.port.label" + +msgid "setupform.db.user.label" +msgstr "__setupform.db.user.label" + +msgid "setupform.db.password.label" +msgstr "__setupform.db.password.label" + +msgid "setupform.db.url.label" +msgstr "__setupform.db.url.label" + +msgid "setupform.email.backend.label" +msgstr "__setupform.email.backend.label" + +msgid "setupform.email.backend.choices.none" +msgstr "__setupform.email.backend.choices.none" + +msgid "setupform.email.backend.choices.smtp" +msgstr "__setupform.email.backend.choices.smtp" + +msgid "setupform.email.backend.choices.sendmail" +msgstr "__setupform.email.backend.choices.sendmail" + +msgid "setupform.email.backend.choices.native" +msgstr "__setupform.email.backend.choices.native" + +msgid "setupform.email.backend.choices.dsn" +msgstr "__setupform.email.backend.choices.dsn" + +msgid "setupform.email.path.label" +msgstr "__setupform.email.path.label" + +msgid "setupform.email.user.label" +msgstr "__setupform.email.user.label" + +msgid "setupform.email.password.label" +msgstr "__setupform.email.password.label" + +msgid "setupform.email.host.label" +msgstr "__setupform.email.host.label" + +msgid "setupform.email.smtp-port.label" +msgstr "__setupform.email.smtp-port.label" + +msgid "setupform.email.dsn.label" +msgstr "__setupform.email.dsn.label" + +msgid "setupform.email.sender.label" +msgstr "__setupform.email.sender.label" + +msgid "setupform.submit" +msgstr "__setupform.submit" diff --git a/translations/security.de.yaml b/translations/security.de.yaml index 1dd673f..6debf5a 100644 --- a/translations/security.de.yaml +++ b/translations/security.de.yaml @@ -18,8 +18,9 @@ 'Too many failed login attempts, please try again in %minutes% minute.': 'Zu viele fehlgeschlagene Anmeldeversuche, bitte versuchen Sie es in einer Minute noch einmal.' 'Too many failed login attempts, please try again in %minutes% minutes.': 'Zu viele fehlgeschlagene Anmeldeversuche, bitte versuchen Sie es in %minutes% Minuten noch einmal.' login: - title: "Bitte melde dich an" - button: "Anmelden" - username: "Nutzername" - password: "Passwort" - remember_me: "An mich erinnern" + title: 'Bitte melde dich an' + button: Anmelden + username: Nutzername + password: Passwort + remember_me: 'An mich erinnern' + forgotten_password: 'Passwort vergessen?' diff --git a/translations/security.en.yaml b/translations/security.en.yaml index b7048d2..7b45678 100644 --- a/translations/security.en.yaml +++ b/translations/security.en.yaml @@ -18,8 +18,9 @@ 'Too many failed login attempts, please try again in %minutes% minute.': 'Too many failed login attempts, please try again in %minutes% minute.' 'Too many failed login attempts, please try again in %minutes% minutes.': 'Too many failed login attempts, please try again in %minutes% minutes.' login: - title: "Please sign in" - button: "Log me in" - username: "Username" - password: "Password" - remember_me: "Remember me" + title: 'Please sign in' + button: 'Log me in' + username: Username + password: Password + remember_me: 'Remember me' + forgotten_password: "Password forgotten?" diff --git a/v7.2.0 b/v7.2.0 new file mode 100644 index 0000000..e69de29