diff --git a/Dockerfile b/Dockerfile
index 0f909f16..13a8d5c7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
ARG BASE_IMAGE=debian:bookworm-slim
-ARG PHP_VERSION=8.3
+ARG PHP_VERSION=8.4
FROM ${BASE_IMAGE} AS base
ARG PHP_VERSION
@@ -48,7 +48,7 @@ RUN apt-get update && apt-get -y install \
# Install node and yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
- curl -sL https://deb.nodesource.com/setup_20.x | bash - && \
+ curl -sL https://deb.nodesource.com/setup_22.x | bash - && \
apt-get update && apt-get install -y \
nodejs \
yarn \
diff --git a/Dockerfile-frankenphp b/Dockerfile-frankenphp
index ae837019..f381f330 100644
--- a/Dockerfile-frankenphp
+++ b/Dockerfile-frankenphp
@@ -1,4 +1,4 @@
-FROM dunglas/frankenphp:1-php8.3 AS frankenphp_upstream
+FROM dunglas/frankenphp:1-php8.4 AS frankenphp_upstream
RUN apt-get update && apt-get -y install \
curl \
@@ -13,13 +13,33 @@ RUN apt-get update && apt-get -y install \
zip \
&& apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*;
-# Install node and yarn
-RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
- echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
- curl -sL https://deb.nodesource.com/setup_20.x | bash - && \
- apt-get update && apt-get install -y \
- nodejs yarn \
- && apt-get -y autoremove && apt-get clean autoclean && rm -rf /var/lib/apt/lists/*
+RUN set -eux; \
+ # Prepare keyrings directory
+ mkdir -p /etc/apt/keyrings; \
+ \
+ # Import Yarn GPG key
+ curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg \
+ | tee /etc/apt/keyrings/yarn.gpg >/dev/null; \
+ chmod 644 /etc/apt/keyrings/yarn.gpg; \
+ \
+ # Add Yarn repo with signed-by
+ echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian stable main" \
+ | tee /etc/apt/sources.list.d/yarn.list; \
+ \
+ # Run NodeSource setup script (unchanged)
+ curl -sL https://deb.nodesource.com/setup_22.x | bash -; \
+ \
+ # Install Node.js + Yarn
+ apt-get update; \
+ apt-get install -y --no-install-recommends \
+ nodejs \
+ yarn; \
+ \
+ # Cleanup
+ apt-get -y autoremove; \
+ apt-get clean autoclean; \
+ rm -rf /var/lib/apt/lists/*
+
# Install PHP
RUN set -eux; \
diff --git a/composer.lock b/composer.lock
index 7fba241b..91fcf0e4 100644
--- a/composer.lock
+++ b/composer.lock
@@ -968,7 +968,7 @@
},
{
"name": "api-platform/doctrine-common",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/doctrine-common.git",
@@ -1050,13 +1050,13 @@
"rest"
],
"support": {
- "source": "https://github.com/api-platform/doctrine-common/tree/v4.1.21"
+ "source": "https://github.com/api-platform/doctrine-common/tree/v4.1.22"
},
"time": "2025-08-18T13:30:43+00:00"
},
{
"name": "api-platform/doctrine-orm",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/doctrine-orm.git",
@@ -1135,13 +1135,13 @@
"rest"
],
"support": {
- "source": "https://github.com/api-platform/doctrine-orm/tree/v4.1.21"
+ "source": "https://github.com/api-platform/doctrine-orm/tree/v4.1.22"
},
"time": "2025-06-06T14:56:47+00:00"
},
{
"name": "api-platform/documentation",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/documentation.git",
@@ -1203,7 +1203,7 @@
},
{
"name": "api-platform/http-cache",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/http-cache.git",
@@ -1275,13 +1275,13 @@
"rest"
],
"support": {
- "source": "https://github.com/api-platform/http-cache/tree/v4.1.21"
+ "source": "https://github.com/api-platform/http-cache/tree/v4.1.22"
},
"time": "2025-06-06T14:56:47+00:00"
},
{
"name": "api-platform/hydra",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/hydra.git",
@@ -1360,13 +1360,13 @@
"rest"
],
"support": {
- "source": "https://github.com/api-platform/hydra/tree/v4.1.21"
+ "source": "https://github.com/api-platform/hydra/tree/v4.1.22"
},
"time": "2025-07-15T14:10:59+00:00"
},
{
"name": "api-platform/json-api",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/json-api.git",
@@ -1439,13 +1439,13 @@
"rest"
],
"support": {
- "source": "https://github.com/api-platform/json-api/tree/v4.1.21"
+ "source": "https://github.com/api-platform/json-api/tree/v4.1.22"
},
"time": "2025-08-06T07:56:58+00:00"
},
{
"name": "api-platform/json-schema",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/json-schema.git",
@@ -1518,13 +1518,13 @@
"swagger"
],
"support": {
- "source": "https://github.com/api-platform/json-schema/tree/v4.1.21"
+ "source": "https://github.com/api-platform/json-schema/tree/v4.1.22"
},
"time": "2025-06-29T12:24:14+00:00"
},
{
"name": "api-platform/jsonld",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/jsonld.git",
@@ -1596,22 +1596,22 @@
"rest"
],
"support": {
- "source": "https://github.com/api-platform/jsonld/tree/v4.1.21"
+ "source": "https://github.com/api-platform/jsonld/tree/v4.1.22"
},
"time": "2025-07-25T10:05:30+00:00"
},
{
"name": "api-platform/metadata",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/metadata.git",
- "reference": "9158aa2ab7090c135336f38816ce0d8226e526b5"
+ "reference": "782477dd28cc675909597bfa47af7c1f85659ffa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/api-platform/metadata/zipball/9158aa2ab7090c135336f38816ce0d8226e526b5",
- "reference": "9158aa2ab7090c135336f38816ce0d8226e526b5",
+ "url": "https://api.github.com/repos/api-platform/metadata/zipball/782477dd28cc675909597bfa47af7c1f85659ffa",
+ "reference": "782477dd28cc675909597bfa47af7c1f85659ffa",
"shasum": ""
},
"require": {
@@ -1693,13 +1693,13 @@
"swagger"
],
"support": {
- "source": "https://github.com/api-platform/metadata/tree/v4.1.21"
+ "source": "https://github.com/api-platform/metadata/tree/v4.1.22"
},
- "time": "2025-07-29T08:54:26+00:00"
+ "time": "2025-08-29T15:13:26+00:00"
},
{
"name": "api-platform/openapi",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/openapi.git",
@@ -1780,22 +1780,22 @@
"swagger"
],
"support": {
- "source": "https://github.com/api-platform/openapi/tree/v4.1.21"
+ "source": "https://github.com/api-platform/openapi/tree/v4.1.22"
},
"time": "2025-07-29T08:53:27+00:00"
},
{
"name": "api-platform/serializer",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/serializer.git",
- "reference": "4cdce13e9b08de9658a36aec8bc9acca6052c1bc"
+ "reference": "70dbdeac9584870be444d78c1a796b6edb9e46a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/api-platform/serializer/zipball/4cdce13e9b08de9658a36aec8bc9acca6052c1bc",
- "reference": "4cdce13e9b08de9658a36aec8bc9acca6052c1bc",
+ "url": "https://api.github.com/repos/api-platform/serializer/zipball/70dbdeac9584870be444d78c1a796b6edb9e46a5",
+ "reference": "70dbdeac9584870be444d78c1a796b6edb9e46a5",
"shasum": ""
},
"require": {
@@ -1871,13 +1871,13 @@
"serializer"
],
"support": {
- "source": "https://github.com/api-platform/serializer/tree/v4.1.21"
+ "source": "https://github.com/api-platform/serializer/tree/v4.1.22"
},
- "time": "2025-08-20T09:58:23+00:00"
+ "time": "2025-08-29T15:13:26+00:00"
},
{
"name": "api-platform/state",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/state.git",
@@ -1963,13 +1963,13 @@
"swagger"
],
"support": {
- "source": "https://github.com/api-platform/state/tree/v4.1.21"
+ "source": "https://github.com/api-platform/state/tree/v4.1.22"
},
"time": "2025-07-16T14:01:52+00:00"
},
{
"name": "api-platform/symfony",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/symfony.git",
@@ -2087,13 +2087,13 @@
"symfony"
],
"support": {
- "source": "https://github.com/api-platform/symfony/tree/v4.1.21"
+ "source": "https://github.com/api-platform/symfony/tree/v4.1.22"
},
"time": "2025-07-16T14:01:52+00:00"
},
{
"name": "api-platform/validator",
- "version": "v4.1.21",
+ "version": "v4.1.22",
"source": {
"type": "git",
"url": "https://github.com/api-platform/validator.git",
@@ -2162,7 +2162,7 @@
"validator"
],
"support": {
- "source": "https://github.com/api-platform/validator/tree/v4.1.21"
+ "source": "https://github.com/api-platform/validator/tree/v4.1.22"
},
"time": "2025-07-16T14:01:52+00:00"
},
@@ -10125,16 +10125,16 @@
},
{
"name": "symfony/console",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1"
+ "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/5f360ebc65c55265a74d23d7fe27f957870158a1",
- "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
+ "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
"shasum": ""
},
"require": {
@@ -10199,7 +10199,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.2"
+ "source": "https://github.com/symfony/console/tree/v7.3.3"
},
"funding": [
{
@@ -10219,7 +10219,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-30T17:13:41+00:00"
+ "time": "2025-08-25T06:35:40+00:00"
},
{
"name": "symfony/css-selector",
@@ -10288,16 +10288,16 @@
},
{
"name": "symfony/dependency-injection",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "6cd2a1a77e8a0676a26e8bcddf10acfe7b0ba352"
+ "reference": "ab6c38dad5da9b15b1f7afb2f5c5814112e70261"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6cd2a1a77e8a0676a26e8bcddf10acfe7b0ba352",
- "reference": "6cd2a1a77e8a0676a26e8bcddf10acfe7b0ba352",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ab6c38dad5da9b15b1f7afb2f5c5814112e70261",
+ "reference": "ab6c38dad5da9b15b1f7afb2f5c5814112e70261",
"shasum": ""
},
"require": {
@@ -10348,7 +10348,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/v7.3.2"
+ "source": "https://github.com/symfony/dependency-injection/tree/v7.3.3"
},
"funding": [
{
@@ -10368,7 +10368,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-30T17:31:46+00:00"
+ "time": "2025-08-14T09:54:27+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -10439,16 +10439,16 @@
},
{
"name": "symfony/doctrine-bridge",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/doctrine-bridge.git",
- "reference": "a2cbc12baf9bcc5d0c125e4c0f8330b98af841ca"
+ "reference": "b371ded46da25415e1a3a7422e4acd2ec34214c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/a2cbc12baf9bcc5d0c125e4c0f8330b98af841ca",
- "reference": "a2cbc12baf9bcc5d0c125e4c0f8330b98af841ca",
+ "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b371ded46da25415e1a3a7422e4acd2ec34214c5",
+ "reference": "b371ded46da25415e1a3a7422e4acd2ec34214c5",
"shasum": ""
},
"require": {
@@ -10528,7 +10528,7 @@
"description": "Provides integration for Doctrine with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.2"
+ "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.3"
},
"funding": [
{
@@ -10548,20 +10548,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T11:36:08+00:00"
+ "time": "2025-08-18T13:10:53+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v7.3.1",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9"
+ "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8b2ee2e06ab99fa5f067b6699296d4e35c156bb9",
- "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba",
+ "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba",
"shasum": ""
},
"require": {
@@ -10599,7 +10599,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v7.3.1"
+ "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3"
},
"funding": [
{
@@ -10610,12 +10610,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-06-15T10:07:06+00:00"
+ "time": "2025-08-06T20:13:54+00:00"
},
{
"name": "symfony/dotenv",
@@ -10778,16 +10782,16 @@
},
{
"name": "symfony/event-dispatcher",
- "version": "v7.3.0",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "497f73ac996a598c92409b44ac43b6690c4f666d"
+ "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d",
- "reference": "497f73ac996a598c92409b44ac43b6690c4f666d",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191",
+ "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191",
"shasum": ""
},
"require": {
@@ -10838,7 +10842,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/v7.3.0"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3"
},
"funding": [
{
@@ -10849,12 +10853,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-22T09:11:45+00:00"
+ "time": "2025-08-13T11:49:31+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -11212,16 +11220,16 @@
},
{
"name": "symfony/form",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
- "reference": "e83e898d1589f3ec647824bd4416defe3d6e3875"
+ "reference": "f151b4a027fa67769268b80111f7fdb63edb5e79"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/form/zipball/e83e898d1589f3ec647824bd4416defe3d6e3875",
- "reference": "e83e898d1589f3ec647824bd4416defe3d6e3875",
+ "url": "https://api.github.com/repos/symfony/form/zipball/f151b4a027fa67769268b80111f7fdb63edb5e79",
+ "reference": "f151b4a027fa67769268b80111f7fdb63edb5e79",
"shasum": ""
},
"require": {
@@ -11289,7 +11297,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/form/tree/v7.3.2"
+ "source": "https://github.com/symfony/form/tree/v7.3.3"
},
"funding": [
{
@@ -11309,20 +11317,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-24T12:10:26+00:00"
+ "time": "2025-08-18T13:10:53+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "06c0f678129f99bda8b5cf8873b3d8ef5a0029e7"
+ "reference": "19ec4ab6be90322ed190e041e2404a976ed22571"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/06c0f678129f99bda8b5cf8873b3d8ef5a0029e7",
- "reference": "06c0f678129f99bda8b5cf8873b3d8ef5a0029e7",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/19ec4ab6be90322ed190e041e2404a976ed22571",
+ "reference": "19ec4ab6be90322ed190e041e2404a976ed22571",
"shasum": ""
},
"require": {
@@ -11447,7 +11455,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/v7.3.2"
+ "source": "https://github.com/symfony/framework-bundle/tree/v7.3.3"
},
"funding": [
{
@@ -11467,20 +11475,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-30T17:13:41+00:00"
+ "time": "2025-08-27T07:45:05+00:00"
},
{
"name": "symfony/http-client",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "1c064a0c67749923483216b081066642751cc2c7"
+ "reference": "333b9bd7639cbdaecd25a3a48a9d2dcfaa86e019"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/1c064a0c67749923483216b081066642751cc2c7",
- "reference": "1c064a0c67749923483216b081066642751cc2c7",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/333b9bd7639cbdaecd25a3a48a9d2dcfaa86e019",
+ "reference": "333b9bd7639cbdaecd25a3a48a9d2dcfaa86e019",
"shasum": ""
},
"require": {
@@ -11488,6 +11496,7 @@
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-client-contracts": "~3.4.4|^3.5.2",
+ "symfony/polyfill-php83": "^1.29",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
@@ -11546,7 +11555,7 @@
"http"
],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v7.3.2"
+ "source": "https://github.com/symfony/http-client/tree/v7.3.3"
},
"funding": [
{
@@ -11566,7 +11575,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T11:36:08+00:00"
+ "time": "2025-08-27T07:45:05+00:00"
},
{
"name": "symfony/http-client-contracts",
@@ -11648,16 +11657,16 @@
},
{
"name": "symfony/http-foundation",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6"
+ "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6877c122b3a6cc3695849622720054f6e6fa5fa6",
- "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7475561ec27020196c49bb7c4f178d33d7d3dc00",
+ "reference": "7475561ec27020196c49bb7c4f178d33d7d3dc00",
"shasum": ""
},
"require": {
@@ -11707,7 +11716,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.3.2"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.3.3"
},
"funding": [
{
@@ -11727,20 +11736,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:47:49+00:00"
+ "time": "2025-08-20T08:04:18+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c"
+ "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6ecc895559ec0097e221ed2fd5eb44d5fede083c",
- "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/72c304de37e1a1cec6d5d12b81187ebd4850a17b",
+ "reference": "72c304de37e1a1cec6d5d12b81187ebd4850a17b",
"shasum": ""
},
"require": {
@@ -11825,7 +11834,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/v7.3.2"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.3.3"
},
"funding": [
{
@@ -11845,20 +11854,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-31T10:45:04+00:00"
+ "time": "2025-08-29T08:23:45+00:00"
},
{
"name": "symfony/intl",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/intl.git",
- "reference": "d1197fb6661b05f6178ddb2dc9c6d576f6f67ec8"
+ "reference": "754d5ad02c889e380efc5a74fa3f6cfe56b7454d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/intl/zipball/d1197fb6661b05f6178ddb2dc9c6d576f6f67ec8",
- "reference": "d1197fb6661b05f6178ddb2dc9c6d576f6f67ec8",
+ "url": "https://api.github.com/repos/symfony/intl/zipball/754d5ad02c889e380efc5a74fa3f6cfe56b7454d",
+ "reference": "754d5ad02c889e380efc5a74fa3f6cfe56b7454d",
"shasum": ""
},
"require": {
@@ -11915,7 +11924,7 @@
"localization"
],
"support": {
- "source": "https://github.com/symfony/intl/tree/v7.3.2"
+ "source": "https://github.com/symfony/intl/tree/v7.3.3"
},
"funding": [
{
@@ -11935,20 +11944,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:47:49+00:00"
+ "time": "2025-08-19T14:06:46+00:00"
},
{
"name": "symfony/mailer",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b"
+ "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/d43e84d9522345f96ad6283d5dfccc8c1cfc299b",
- "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575",
+ "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575",
"shasum": ""
},
"require": {
@@ -11999,7 +12008,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v7.3.2"
+ "source": "https://github.com/symfony/mailer/tree/v7.3.3"
},
"funding": [
{
@@ -12019,7 +12028,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T11:36:08+00:00"
+ "time": "2025-08-13T11:49:31+00:00"
},
{
"name": "symfony/mime",
@@ -12111,16 +12120,16 @@
},
{
"name": "symfony/monolog-bridge",
- "version": "v7.3.0",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/monolog-bridge.git",
- "reference": "1b188c8abbbef25b111da878797514b7a8d33990"
+ "reference": "6f3745e887659b46a8b7bb5ade8356a41700f095"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/1b188c8abbbef25b111da878797514b7a8d33990",
- "reference": "1b188c8abbbef25b111da878797514b7a8d33990",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6f3745e887659b46a8b7bb5ade8356a41700f095",
+ "reference": "6f3745e887659b46a8b7bb5ade8356a41700f095",
"shasum": ""
},
"require": {
@@ -12169,7 +12178,7 @@
"description": "Provides integration for Monolog with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.0"
+ "source": "https://github.com/symfony/monolog-bridge/tree/v7.3.3"
},
"funding": [
{
@@ -12180,12 +12189,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-03-21T12:17:46+00:00"
+ "time": "2025-08-13T11:49:31+00:00"
},
{
"name": "symfony/monolog-bundle",
@@ -12270,16 +12283,16 @@
},
{
"name": "symfony/options-resolver",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "119bcf13e67dbd188e5dbc74228b1686f66acd37"
+ "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/119bcf13e67dbd188e5dbc74228b1686f66acd37",
- "reference": "119bcf13e67dbd188e5dbc74228b1686f66acd37",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/0ff2f5c3df08a395232bbc3c2eb7e84912df911d",
+ "reference": "0ff2f5c3df08a395232bbc3c2eb7e84912df911d",
"shasum": ""
},
"require": {
@@ -12317,7 +12330,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v7.3.2"
+ "source": "https://github.com/symfony/options-resolver/tree/v7.3.3"
},
"funding": [
{
@@ -12337,7 +12350,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T11:36:08+00:00"
+ "time": "2025-08-05T10:16:07+00:00"
},
{
"name": "symfony/password-hasher",
@@ -13330,16 +13343,16 @@
},
{
"name": "symfony/process",
- "version": "v7.3.0",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af"
+ "reference": "32241012d521e2e8a9d713adb0812bb773b907f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af",
- "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af",
+ "url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1",
+ "reference": "32241012d521e2e8a9d713adb0812bb773b907f1",
"shasum": ""
},
"require": {
@@ -13371,7 +13384,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.3.0"
+ "source": "https://github.com/symfony/process/tree/v7.3.3"
},
"funding": [
{
@@ -13382,25 +13395,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-17T09:11:12+00:00"
+ "time": "2025-08-18T09:42:54+00:00"
},
{
"name": "symfony/property-access",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "317916e49b2577a1908f321796f2b67984e61eab"
+ "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/317916e49b2577a1908f321796f2b67984e61eab",
- "reference": "317916e49b2577a1908f321796f2b67984e61eab",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7",
+ "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7",
"shasum": ""
},
"require": {
@@ -13447,7 +13464,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v7.3.2"
+ "source": "https://github.com/symfony/property-access/tree/v7.3.3"
},
"funding": [
{
@@ -13467,7 +13484,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T17:58:03+00:00"
+ "time": "2025-08-04T15:15:28+00:00"
},
{
"name": "symfony/property-info",
@@ -13878,16 +13895,16 @@
},
{
"name": "symfony/security-bundle",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-bundle.git",
- "reference": "d8278a973b305c0b79b162f265d8ce1e96703236"
+ "reference": "fbecca9a10af8d886e116f74e860e19b7583689c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-bundle/zipball/d8278a973b305c0b79b162f265d8ce1e96703236",
- "reference": "d8278a973b305c0b79b162f265d8ce1e96703236",
+ "url": "https://api.github.com/repos/symfony/security-bundle/zipball/fbecca9a10af8d886e116f74e860e19b7583689c",
+ "reference": "fbecca9a10af8d886e116f74e860e19b7583689c",
"shasum": ""
},
"require": {
@@ -13964,7 +13981,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/v7.3.2"
+ "source": "https://github.com/symfony/security-bundle/tree/v7.3.3"
},
"funding": [
{
@@ -13984,20 +14001,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-22T08:15:39+00:00"
+ "time": "2025-08-06T08:34:58+00:00"
},
{
"name": "symfony/security-core",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
- "reference": "d8e1bb0de26266e2e4525beda0aed7f774e9c80d"
+ "reference": "4465a3b9cefbaebaeeeb98c2becfdb4b59d22488"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/d8e1bb0de26266e2e4525beda0aed7f774e9c80d",
- "reference": "d8e1bb0de26266e2e4525beda0aed7f774e9c80d",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/4465a3b9cefbaebaeeeb98c2becfdb4b59d22488",
+ "reference": "4465a3b9cefbaebaeeeb98c2becfdb4b59d22488",
"shasum": ""
},
"require": {
@@ -14055,7 +14072,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-core/tree/v7.3.2"
+ "source": "https://github.com/symfony/security-core/tree/v7.3.3"
},
"funding": [
{
@@ -14075,7 +14092,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-23T09:11:24+00:00"
+ "time": "2025-08-25T06:35:40+00:00"
},
{
"name": "symfony/security-csrf",
@@ -14149,16 +14166,16 @@
},
{
"name": "symfony/security-http",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
- "reference": "ca8d92035a5c8d31012458589bdaef30ef3c54d6"
+ "reference": "1bf0dc10f27d4776c47f18f98236c619793a9260"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-http/zipball/ca8d92035a5c8d31012458589bdaef30ef3c54d6",
- "reference": "ca8d92035a5c8d31012458589bdaef30ef3c54d6",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/1bf0dc10f27d4776c47f18f98236c619793a9260",
+ "reference": "1bf0dc10f27d4776c47f18f98236c619793a9260",
"shasum": ""
},
"require": {
@@ -14217,7 +14234,7 @@
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-http/tree/v7.3.2"
+ "source": "https://github.com/symfony/security-http/tree/v7.3.3"
},
"funding": [
{
@@ -14237,26 +14254,27 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:47:49+00:00"
+ "time": "2025-08-25T06:35:40+00:00"
},
{
"name": "symfony/serializer",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "0ed011583fd24899fa003abf77c45d4a901714da"
+ "reference": "5608b04d8daaf29432d76ecc618b0fac169c2dfb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/0ed011583fd24899fa003abf77c45d4a901714da",
- "reference": "0ed011583fd24899fa003abf77c45d4a901714da",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/5608b04d8daaf29432d76ecc618b0fac169c2dfb",
+ "reference": "5608b04d8daaf29432d76ecc618b0fac169c2dfb",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-ctype": "~1.8"
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php84": "^1.30"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
@@ -14319,7 +14337,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/v7.3.2"
+ "source": "https://github.com/symfony/serializer/tree/v7.3.3"
},
"funding": [
{
@@ -14339,7 +14357,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-26T13:07:17+00:00"
+ "time": "2025-08-27T11:34:33+00:00"
},
{
"name": "symfony/service-contracts",
@@ -14561,16 +14579,16 @@
},
{
"name": "symfony/string",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca"
+ "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca",
- "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca",
+ "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
+ "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
"shasum": ""
},
"require": {
@@ -14628,7 +14646,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.3.2"
+ "source": "https://github.com/symfony/string/tree/v7.3.3"
},
"funding": [
{
@@ -14648,20 +14666,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:47:49+00:00"
+ "time": "2025-08-25T06:35:40+00:00"
},
{
"name": "symfony/translation",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90"
+ "reference": "e0837b4cbcef63c754d89a4806575cada743a38d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/81b48f4daa96272efcce9c7a6c4b58e629df3c90",
- "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/e0837b4cbcef63c754d89a4806575cada743a38d",
+ "reference": "e0837b4cbcef63c754d89a4806575cada743a38d",
"shasum": ""
},
"require": {
@@ -14728,7 +14746,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v7.3.2"
+ "source": "https://github.com/symfony/translation/tree/v7.3.3"
},
"funding": [
{
@@ -14748,7 +14766,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-30T17:31:46+00:00"
+ "time": "2025-08-01T21:02:37+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -14830,16 +14848,16 @@
},
{
"name": "symfony/twig-bridge",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "81d1c69769cf913240afdd4c9673304ddca964b0"
+ "reference": "33558f013b7f6ed72805527c8405cae0062e47c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/81d1c69769cf913240afdd4c9673304ddca964b0",
- "reference": "81d1c69769cf913240afdd4c9673304ddca964b0",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/33558f013b7f6ed72805527c8405cae0062e47c5",
+ "reference": "33558f013b7f6ed72805527c8405cae0062e47c5",
"shasum": ""
},
"require": {
@@ -14921,7 +14939,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v7.3.2"
+ "source": "https://github.com/symfony/twig-bridge/tree/v7.3.3"
},
"funding": [
{
@@ -14941,7 +14959,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-26T16:47:03+00:00"
+ "time": "2025-08-18T13:10:53+00:00"
},
{
"name": "symfony/twig-bundle",
@@ -15033,16 +15051,16 @@
},
{
"name": "symfony/type-info",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/type-info.git",
- "reference": "b72d44c7d6638480fce101b7c4cd3abea4c2efba"
+ "reference": "aa64b58ed04517d4d730202dd035895743c23273"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/type-info/zipball/b72d44c7d6638480fce101b7c4cd3abea4c2efba",
- "reference": "b72d44c7d6638480fce101b7c4cd3abea4c2efba",
+ "url": "https://api.github.com/repos/symfony/type-info/zipball/aa64b58ed04517d4d730202dd035895743c23273",
+ "reference": "aa64b58ed04517d4d730202dd035895743c23273",
"shasum": ""
},
"require": {
@@ -15092,7 +15110,7 @@
"type"
],
"support": {
- "source": "https://github.com/symfony/type-info/tree/v7.3.2"
+ "source": "https://github.com/symfony/type-info/tree/v7.3.3"
},
"funding": [
{
@@ -15112,7 +15130,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T05:39:45+00:00"
+ "time": "2025-08-28T09:38:04+00:00"
},
{
"name": "symfony/uid",
@@ -15458,16 +15476,16 @@
},
{
"name": "symfony/validator",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "e5cc60fd44aab8e1d662fc0d954da322c2e08b43"
+ "reference": "a2f26d7c122393db75a2d41435ad8251250f8bc6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/e5cc60fd44aab8e1d662fc0d954da322c2e08b43",
- "reference": "e5cc60fd44aab8e1d662fc0d954da322c2e08b43",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/a2f26d7c122393db75a2d41435ad8251250f8bc6",
+ "reference": "a2f26d7c122393db75a2d41435ad8251250f8bc6",
"shasum": ""
},
"require": {
@@ -15536,7 +15554,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v7.3.2"
+ "source": "https://github.com/symfony/validator/tree/v7.3.3"
},
"funding": [
{
@@ -15556,20 +15574,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-29T20:02:46+00:00"
+ "time": "2025-08-27T11:34:33+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "53205bea27450dc5c65377518b3275e126d45e75"
+ "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/53205bea27450dc5c65377518b3275e126d45e75",
- "reference": "53205bea27450dc5c65377518b3275e126d45e75",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f",
+ "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f",
"shasum": ""
},
"require": {
@@ -15623,7 +15641,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.3.2"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.3.3"
},
"funding": [
{
@@ -15643,20 +15661,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-29T20:02:46+00:00"
+ "time": "2025-08-13T11:49:31+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "05b3e90654c097817325d6abd284f7938b05f467"
+ "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/05b3e90654c097817325d6abd284f7938b05f467",
- "reference": "05b3e90654c097817325d6abd284f7938b05f467",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d4dfcd2a822cbedd7612eb6fbd260e46f87b7137",
+ "reference": "d4dfcd2a822cbedd7612eb6fbd260e46f87b7137",
"shasum": ""
},
"require": {
@@ -15704,7 +15722,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v7.3.2"
+ "source": "https://github.com/symfony/var-exporter/tree/v7.3.3"
},
"funding": [
{
@@ -15724,7 +15742,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:47:49+00:00"
+ "time": "2025-08-18T13:10:53+00:00"
},
{
"name": "symfony/web-link",
@@ -15887,16 +15905,16 @@
},
{
"name": "symfony/yaml",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30"
+ "reference": "d4f4a66866fe2451f61296924767280ab5732d9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/b8d7d868da9eb0919e99c8830431ea087d6aae30",
- "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d",
+ "reference": "d4f4a66866fe2451f61296924767280ab5732d9d",
"shasum": ""
},
"require": {
@@ -15939,7 +15957,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v7.3.2"
+ "source": "https://github.com/symfony/yaml/tree/v7.3.3"
},
"funding": [
{
@@ -15959,7 +15977,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-10T08:47:49+00:00"
+ "time": "2025-08-27T11:34:33+00:00"
},
{
"name": "symplify/easy-coding-standard",
@@ -18572,12 +18590,12 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "1e6dd833087765a9aa80c5c0a6444f4521a63a79"
+ "reference": "e7589e01dc8452bfecb4c8df977346cd3132650f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/1e6dd833087765a9aa80c5c0a6444f4521a63a79",
- "reference": "1e6dd833087765a9aa80c5c0a6444f4521a63a79",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/e7589e01dc8452bfecb4c8df977346cd3132650f",
+ "reference": "e7589e01dc8452bfecb4c8df977346cd3132650f",
"shasum": ""
},
"conflict": {
@@ -18608,8 +18626,8 @@
"aoe/restler": "<1.7.1",
"apache-solr-for-typo3/solr": "<2.8.3",
"apereo/phpcas": "<1.6",
- "api-platform/core": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22",
- "api-platform/graphql": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22",
+ "api-platform/core": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
+ "api-platform/graphql": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
"appwrite/server-ce": "<=1.2.1",
"arc/web": "<3",
"area17/twill": "<1.2.5|>=2,<2.5.3",
@@ -19529,7 +19547,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-28T15:05:43+00:00"
+ "time": "2025-08-29T15:04:47+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -20795,16 +20813,16 @@
},
{
"name": "symfony/phpunit-bridge",
- "version": "v7.3.1",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
- "reference": "71624984d8bcad6acf7a790d4e3ceafe04bc2485"
+ "reference": "7954e563ed14f924593169f6c4645d58d9d9ac77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/71624984d8bcad6acf7a790d4e3ceafe04bc2485",
- "reference": "71624984d8bcad6acf7a790d4e3ceafe04bc2485",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/7954e563ed14f924593169f6c4645d58d9d9ac77",
+ "reference": "7954e563ed14f924593169f6c4645d58d9d9ac77",
"shasum": ""
},
"require": {
@@ -20860,7 +20878,7 @@
"testing"
],
"support": {
- "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.1"
+ "source": "https://github.com/symfony/phpunit-bridge/tree/v7.3.3"
},
"funding": [
{
@@ -20871,25 +20889,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-06-04T10:09:06+00:00"
+ "time": "2025-08-04T15:15:28+00:00"
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v7.3.2",
+ "version": "v7.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "c5e02451fe4e430c5067ddbf0899493522782390"
+ "reference": "6ee224d6e9de787a47622b9ad4880e205ef16ad1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c5e02451fe4e430c5067ddbf0899493522782390",
- "reference": "c5e02451fe4e430c5067ddbf0899493522782390",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/6ee224d6e9de787a47622b9ad4880e205ef16ad1",
+ "reference": "6ee224d6e9de787a47622b9ad4880e205ef16ad1",
"shasum": ""
},
"require": {
@@ -20945,7 +20967,7 @@
"dev"
],
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.2"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.3"
},
"funding": [
{
@@ -20965,7 +20987,7 @@
"type": "tidelift"
}
],
- "time": "2025-07-26T16:47:03+00:00"
+ "time": "2025-08-19T13:44:55+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/docs/assets/getting_started/system_settings.png b/docs/assets/getting_started/system_settings.png
new file mode 100644
index 00000000..5a7d7380
Binary files /dev/null and b/docs/assets/getting_started/system_settings.png differ
diff --git a/docs/configuration.md b/docs/configuration.md
index 9cb5d1b3..d4b21781 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -43,7 +43,8 @@ options listed, see `.env` file for the full list of possible env variables.
Environment variables allow to overwrite settings in the web interface. This is useful, if you want to enforce certain
settings to be unchangable by users, or if you want to configure settings in a central place in a deployed environment.
On the settings page, you can hover over a setting to see, which environment variable can be used to overwrite it, it
-is shown as tooltip.
+is shown as tooltip. API keys or similar sensitve data which is overwritten by env variables, are redacted on the web
+interface, so that even administrators cannot see them (only the last 2 characters and the length).
For technical and security reasons some settings can only be configured via environment variables and not via the web
interface. These settings are marked with "(env only)" in the description below.
diff --git a/docs/usage/getting_started.md b/docs/usage/getting_started.md
index 4bb8afb9..4b9a809a 100644
--- a/docs/usage/getting_started.md
+++ b/docs/usage/getting_started.md
@@ -12,11 +12,19 @@ Before starting, it's useful to read a bit about the [concepts of Part-DB]({% li
1. TOC
{:toc}
-## Customize config files
+## Customize system settings
-Before you start creating data structures, you should configure Part-DB to your needs by changing possible configuration
-options.
-This is done either via changing the `.env.local` file in a direct installation or by changing the env variables in
+Before starting creating datastructures, you should check the system settings to ensure that they fit your needs.
+After login as an administrator, you can find the settings in the sidebar under `Tools -> System -> Settings`.
+
+
+Here you can change various settings, like the name of your Part-DB instance (which is shown in the title bar of the
+browser), the default language (which is used if no user preference is set), the default timezone (which is used to
+display times correctly), the default currency (which is used to display prices correctly), and many more.
+
+Some more fundamental settings like database connection, mail server settings, SSO, etc. are configured via environment variables.
+Environment variables also allow to overwrite various settings from the web interface.
+Environment variables can be changed by editing the `.env.local` file in a direct installation or by changing the env variables in
your `docker-compose.yaml` file.
A list of possible configuration options can be found [here]({% link configuration.md %}).
@@ -44,8 +52,8 @@ used.
## (Optional) Customize homepage banner
-The banner which is shown on the homepage, can be customized/changed by changing the `config/banner.md` file with a text
-editor. You can use markdown and (safe) HTML here, to style and customize the banner.
+The banner which is shown on the homepage, can be customized/changed via the homepage banner setting in system settings.
+You can use markdown and (safe) HTML here, to style and customize the banner.
You can even use LaTeX-style equations by wrapping the expressions into `$` (like `$E=mc^2$`, which is rendered inline:
$E=mc^2$) or `$$` (like `$$E=mc^2$$`) which will be rendered as a block, like so: $$E=mc^2$$
@@ -202,4 +210,4 @@ later.
You can choose from your created datastructures to add manufacturer information, supplier information, etc. to the part.
You can also create new datastructures on the fly, if you want to add additional information to the part, by typing the
name of the new datastructure in the field and select the "New ..." option in the dropdown menu. See [tips]({% link
-usage/tips_tricks.md %}) for more information.
\ No newline at end of file
+usage/tips_tricks.md %}) for more information.
diff --git a/docs/usage/information_provider_system.md b/docs/usage/information_provider_system.md
index 8de83a8e..953db409 100644
--- a/docs/usage/information_provider_system.md
+++ b/docs/usage/information_provider_system.md
@@ -80,6 +80,11 @@ Normally the providers utilize an API of a service, and you need to create an ac
Also, there are limits on how many requests you can do per day or month, depending on the provider and your contract
with them.
+Data providers can be either configured in the system settings (in the info provider tab) or on the settings page which is
+reachable via the cogwheel symbol next to the provider in the provider list. It is also possible to configure them via
+environment variables. See below for the available configuration options. API keys configured via environment variables
+are redacted in the settings interface.
+
The following providers are currently available and shipped with Part-DB:
(All trademarks are property of their respective owners. Part-DB is not affiliated with any of the companies.)
diff --git a/src/Form/Type/APIKeyType.php b/src/Form/Type/APIKeyType.php
index ae72f2a6..57eaea96 100644
--- a/src/Form/Type/APIKeyType.php
+++ b/src/Form/Type/APIKeyType.php
@@ -28,9 +28,14 @@ use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;
+use Symfony\Contracts\Translation\TranslatorInterface;
class APIKeyType extends AbstractType
{
+ public function __construct(private readonly TranslatorInterface $translator)
+ {
+ }
+
public function getParent(): string
{
return PasswordType::class;
@@ -38,8 +43,30 @@ class APIKeyType extends AbstractType
public function buildView(FormView $view, FormInterface $form, array $options): void
{
- //Ensure that the field is never empty
- $view->vars['value'] = $form->getViewData();
+ $viewData = $form->getViewData();
+
+ //If the field is disabled, show the redacted API key
+ if ($options['disabled'] ?? false) {
+ if ($viewData === null || $viewData === '') {
+ $view->vars['value'] = $viewData;
+ } else {
+
+ $view->vars['value'] = self::redact((string)$viewData) . ' (' . $this ->translator->trans("form.apikey.redacted") . ')';
+ }
+ } else { //Otherwise, show the actual value
+ $view->vars['value'] = $viewData;
+ }
+ }
+
+ public static function redact(string $apiKey): string
+ {
+ //Show only the last 2 characters of the API key if it is long enough (more than 16 characters)
+ //Replace all other characters with dots
+ if (strlen($apiKey) > 16) {
+ return str_repeat('*', strlen($apiKey) - 2) . substr($apiKey, -2);
+ }
+
+ return str_repeat('*', strlen($apiKey));
}
public function configureOptions(OptionsResolver $resolver): void
diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf
index d9c4b1fd..481a5083 100644
--- a/translations/messages.en.xlf
+++ b/translations/messages.en.xlf
@@ -13051,5 +13051,11 @@ Please note, that you can not impersonate a disabled user. If you try you will g
Info provider settings
+
+
+ form.apikey.redacted
+ Redacted for security reasons
+
+