Compare commits
79 Commits
72e912facb
...
develop
Author | SHA1 | Date | |
---|---|---|---|
5f2654c3c4 | |||
2e5e1e72ae | |||
746ca35b69 | |||
1f49b3f56f | |||
e0ae569e95 | |||
ab37dfb02e | |||
f5d3a8d83b | |||
646c346537 | |||
a45b9ddaec | |||
64d1c1c7a9 | |||
d7dfdea0e2 | |||
11468596dd | |||
0c0667fb33 | |||
176a6a8e68 | |||
7825f5246f | |||
8589c385d6 | |||
5e849ae6f5 | |||
fe12b4fc69 | |||
642f56dafa | |||
945a558565 | |||
79337efef0 | |||
303b0279f8 | |||
12523398f6 | |||
1cb5ae6bc3 | |||
7239d841d4 | |||
a5d5a18190 | |||
075be9b0df | |||
4e4c5d8e7b | |||
7032787d8c | |||
999e708ff7 | |||
cb8361e7d1 | |||
e3f406a8bb | |||
d6d9e81df6 | |||
8e56433216 | |||
19178bbe3b | |||
14668150cb | |||
0903151f27 | |||
f378751f7a | |||
d707a91694 | |||
f39ab1626e | |||
fe4d683c20 | |||
f36a675d22 | |||
27f957124b | |||
a1049a55a2 | |||
085533b299 | |||
5bfd8991ee | |||
18c0edbe5b | |||
fa77278c55 | |||
daa5eaaa63 | |||
769e7ed59e | |||
abe212c7ad | |||
890c44da0c | |||
4465d0097e | |||
f9d7e94420 | |||
e03312be7d | |||
69f0a607a3 | |||
51c92a0dba | |||
0791727694 | |||
3e45119684 | |||
5aacd981b4 | |||
fc4cecf106 | |||
d26920695f | |||
fc348943c8 | |||
afd5349a7c | |||
562c7cb7b7 | |||
bcc91a17b4 | |||
cd888d2080 | |||
0cdb4c3a36 | |||
fc87b24c4e | |||
d1847289bd | |||
d5718e0a39 | |||
8cde31fc9c | |||
9420354ec0 | |||
e320d288cc | |||
740a7569e4 | |||
6ec21e4677 | |||
3be77eabf5 | |||
b5de7ee873 | |||
341a1ecd87 |
@ -1,14 +1,17 @@
|
||||
.env.local
|
||||
.env.local.php
|
||||
.env.*.local
|
||||
config/secrets/prod/prod.decrypt.private.php
|
||||
public/bundles/
|
||||
var/
|
||||
vendor/
|
||||
supervisord.log
|
||||
supervisord.pid
|
||||
.composer/
|
||||
.vscode
|
||||
composer.phar
|
||||
/tools
|
||||
/.trivy
|
||||
*
|
||||
!/assets
|
||||
!/bin
|
||||
!/config
|
||||
!/public
|
||||
!/src
|
||||
!/templates
|
||||
!/translations
|
||||
!/.env
|
||||
!/composer.json
|
||||
!/composer.lock
|
||||
!/package-lock.json
|
||||
!/package.json
|
||||
!/symfony.lock
|
||||
!/webpack.config.js
|
||||
|
||||
/public/build
|
19
.env
19
.env
@ -14,9 +14,9 @@
|
||||
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
|
||||
|
||||
###> symfony/framework-bundle ###
|
||||
APP_ENV=dev
|
||||
APP_ENV=prod
|
||||
APP_SECRET=406ccaa0c76a451fdcc2307ea146cbef
|
||||
###< symfony/framework-bundle ###
|
||||
URL_LINK="http://localhost"
|
||||
|
||||
# configuration bdd
|
||||
DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql"
|
||||
@ -31,13 +31,16 @@ HYDRA_ADMIN_BASE_URL='http://hydra:4445'
|
||||
APP_LOCALES="fr,en"
|
||||
SECURITY_PATTERN=
|
||||
HASH_ALGO_LEGACY="sha256,ssha"
|
||||
###> symfony/lock ###
|
||||
# Choose one of the stores below
|
||||
# postgresql+advisory://db_user:db_password@localhost/db_name
|
||||
LOCK_DSN=flock
|
||||
###< symfony/lock ###
|
||||
|
||||
###> sentry/sentry-symfony ###
|
||||
SENTRY_DSN=
|
||||
###< sentry/sentry-symfony ###
|
||||
REDIS_DSN=redis://redis:6379
|
||||
|
||||
### Altcha
|
||||
ALTCHA_HOST='http://altcha:3333'
|
||||
ALTCHA_BASE_URL=''
|
||||
ALTCHA_DEBUG=false
|
||||
ALTCHA_WORKERS=8
|
||||
ALTCHA_DELAY=100
|
||||
ALTCHA_MOCK_ERROR=false
|
||||
ALTCHA_ENABLED=true
|
||||
|
23
.gitignore
vendored
23
.gitignore
vendored
@ -20,3 +20,26 @@ composer.phar
|
||||
/.bash_history
|
||||
/tools
|
||||
/.trivy
|
||||
.mktools/
|
||||
.php-cs-fixer.cache
|
||||
|
||||
###> symfony/framework-bundle ###
|
||||
/.env.local
|
||||
/.env.local.php
|
||||
/.env.*.local
|
||||
/config/secrets/prod/prod.decrypt.private.php
|
||||
/public/bundles/
|
||||
/var/
|
||||
/vendor/
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
###> symfony/webpack-encore-bundle ###
|
||||
/node_modules/
|
||||
/public/build/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
###< symfony/webpack-encore-bundle ###
|
||||
|
||||
###> phpstan/phpstan ###
|
||||
phpstan.neon
|
||||
###< phpstan/phpstan ###
|
||||
|
2
Jenkinsfile
vendored
2
Jenkinsfile
vendored
@ -4,7 +4,7 @@
|
||||
// Utilisation du pipeline partagé pour les applications Symfony de Cadoles
|
||||
// Le nom de l'image Docker passée en paramètre vous permet de préciser l'environnement de test
|
||||
// de votre application Symfony
|
||||
symfonyAppPipeline('ubuntu:22.04', [
|
||||
symfonyAppPipeline('ubuntu:25.04', [
|
||||
'hooks': [
|
||||
// Run docker image build, verification and publication stages
|
||||
'postSymfonyAppPipeline': {
|
||||
|
3
Makefile
3
Makefile
@ -5,6 +5,9 @@ IMAGES := $(foreach file, $(wildcard $(IMAGES_DIR)/*), $(basename $(notdir $(fil
|
||||
|
||||
TRIVY_ARGS ?=
|
||||
|
||||
php-cs-fixer:
|
||||
PHP_CS_FIXER_IGNORE_ENV=1 tools/php-cs-fixer/vendor/bin/php-cs-fixer -v fix --config=./tools/php-cs-fixer/.php-cs-fixer.dist.php
|
||||
|
||||
build-image: $(foreach image, $(IMAGES), build-image-$(image))
|
||||
|
||||
build-image-%:
|
||||
|
@ -8,5 +8,4 @@
|
||||
// any CSS you import will output into a single css file (app.css in this case)
|
||||
import './styles/app.scss';
|
||||
|
||||
// start the Stimulus application
|
||||
import './bootstrap';
|
||||
import 'altcha';
|
||||
|
11
assets/bootstrap.js
vendored
11
assets/bootstrap.js
vendored
@ -1,11 +0,0 @@
|
||||
import { startStimulusApp } from '@symfony/stimulus-bridge';
|
||||
|
||||
// Registers Stimulus controllers from controllers.json and in the controllers/ directory
|
||||
export const app = startStimulusApp(require.context(
|
||||
'@symfony/stimulus-bridge/lazy-controller-loader!./controllers',
|
||||
true,
|
||||
/\.[jt]sx?$/
|
||||
));
|
||||
|
||||
// register any custom, 3rd party controllers here
|
||||
// app.register('some_controller_name', SomeImportedController);
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"controllers": [],
|
||||
"entrypoints": []
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
import { Controller } from '@hotwired/stimulus';
|
||||
|
||||
/*
|
||||
* This is an example Stimulus controller!
|
||||
*
|
||||
* Any element with a data-controller="hello" attribute will cause
|
||||
* this controller to be executed. The name "hello" comes from the filename:
|
||||
* hello_controller.js -> "hello"
|
||||
*
|
||||
* Delete this file or adapt it for your use!
|
||||
*/
|
||||
export default class extends Controller {
|
||||
connect() {
|
||||
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
|
||||
}
|
||||
}
|
5
assets/theme-entrypoint.js
Normal file
5
assets/theme-entrypoint.js
Normal file
@ -0,0 +1,5 @@
|
||||
import './styles/theme.css'
|
||||
|
||||
import 'altcha';
|
||||
import 'altcha/i18n/all';
|
||||
import theme from './theme';
|
3
assets/theme.js
Normal file
3
assets/theme.js
Normal file
@ -0,0 +1,3 @@
|
||||
export default function theme() {
|
||||
|
||||
}
|
@ -1,21 +1,18 @@
|
||||
version: "3.8"
|
||||
services:
|
||||
hydra-sql:
|
||||
container_name: hydra-sql
|
||||
build:
|
||||
context: ./misc/hydra-sql
|
||||
context: .
|
||||
dockerfile: ./misc/images/hydra-sql-standalone/Dockerfile
|
||||
args:
|
||||
- BASE_PATH=
|
||||
- APP_ENV=dev
|
||||
- ENCORE_MODE=dev
|
||||
- HTTP_PROXY=${HTTP_PROXY}
|
||||
- HTTPS_PROXY=${HTTPS_PROXY}
|
||||
- http_proxy=${http_proxy}
|
||||
- https_proxy=${https_proxy}
|
||||
user: ${FIXUID:-1000}:${FIXGID:-1000}
|
||||
ports:
|
||||
- 8080:80
|
||||
volumes:
|
||||
- .:/var/www
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- $HOME/.ssh:/root/.host-ssh:ro
|
||||
- 8082:8071
|
||||
tmpfs:
|
||||
- /var/www/var/logs:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
|
||||
- /var/www/var/cache:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
|
||||
@ -23,23 +20,45 @@ services:
|
||||
- /tmp
|
||||
links:
|
||||
- hydra
|
||||
depends_on:
|
||||
- redis
|
||||
extra_hosts:
|
||||
- "localhost:127.0.0.1"
|
||||
- "localhost:host-gateway"
|
||||
- "host.docker.internal:host-gateway"
|
||||
develop:
|
||||
watch:
|
||||
- action: rebuild
|
||||
path: ./misc/images/hydra-sql-standalone
|
||||
- action: rebuild
|
||||
path: ./assets
|
||||
- action: sync
|
||||
path: ./templates
|
||||
target: /app/templates
|
||||
- action: sync
|
||||
path: ./translations
|
||||
target: /app/translations
|
||||
- action: sync
|
||||
path: ./config
|
||||
target: /app/config
|
||||
- action: sync
|
||||
path: ./src
|
||||
target: /app/src
|
||||
environment:
|
||||
- APP_ENV=dev
|
||||
- PHP_FPM_MEMORY_LIMIT=128m
|
||||
- APP_LOCALES=fr,en
|
||||
- HYDRA_ADMIN_BASE_URL=http://hydra:4445
|
||||
- TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost
|
||||
- ISSUER_URL=http://localhost:8000
|
||||
- BASE_URL=http://localhost:8080
|
||||
- BASE_URL=http://localhost:8082
|
||||
- DB_USER=lasql
|
||||
- DB_PASSWORD=lasql
|
||||
- DEFAULT_LOCALE=fr
|
||||
- DSN_REMOTE_DATABASE=pgsql:host='postgres';port=5432;dbname=lasql;
|
||||
- HASH_ALGO_LEGACY=sha256
|
||||
- HASH_ALGO_LEGACY="sha256"
|
||||
- SECURITY_PATTERN=password,salt,pepper
|
||||
|
||||
- CADDY_HTTP_PORT=8071
|
||||
|
||||
oidc-test:
|
||||
image: bornholm/oidc-test:v0.0.0-1-g936a77e
|
||||
@ -65,10 +84,10 @@ services:
|
||||
- LOG_LEAK_SENSITIVE_VALUES=true
|
||||
- HYDRA_ALLOW_INSECURE=yes
|
||||
- HYDRA_URLS_SELF_ISSUER=http://localhost:8081/
|
||||
- HYDRA_URLS_LOGOUT=http://localhost:8080/logout
|
||||
- HYDRA_URLS_LOGIN=http://localhost:8080/
|
||||
- HYDRA_URLS_CONSENT=http://localhost:8080/connect/consent
|
||||
- HYDRA_URLS_ERROR=http://localhost:8080/error
|
||||
- HYDRA_URLS_LOGOUT=http://localhost:8082/logout
|
||||
- HYDRA_URLS_LOGIN=http://localhost:8082/
|
||||
- HYDRA_URLS_CONSENT=http://localhost:8082/connect/consent
|
||||
- HYDRA_URLS_ERROR=http://localhost:8082/error
|
||||
- HYDRA_LEVEL=debug
|
||||
- HYDRA_DSN=postgres://lasql:lasql@postgres:5432/hydra
|
||||
- HYDRA_WAIT4X_DATABASE_DSN=postgres://lasql:lasql@postgres:5432/hydra?sslmode=disable
|
||||
@ -79,7 +98,14 @@ services:
|
||||
links:
|
||||
- postgres
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:4444/.well-known/openid-configuration"]
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"wget",
|
||||
"--spider",
|
||||
"-q",
|
||||
"http://127.0.0.1:4444/.well-known/openid-configuration",
|
||||
]
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 10
|
||||
@ -104,9 +130,9 @@ services:
|
||||
- 8085:80
|
||||
restart: always
|
||||
environment:
|
||||
PGADMIN_DEFAULT_EMAIL: admin@admin.com
|
||||
PGADMIN_DEFAULT_PASSWORD: admin
|
||||
PGADMIN_SERVER_JSON_FILE: /pgadminfile/server.json
|
||||
PGADMIN_DEFAULT_EMAIL: admin@admin.com
|
||||
PGADMIN_DEFAULT_PASSWORD: admin
|
||||
PGADMIN_SERVER_JSON_FILE: /pgadminfile/server.json
|
||||
volumes:
|
||||
- ./misc/compose/pgadmin:/pgadminfile/:ro
|
||||
mariadb:
|
||||
@ -127,6 +153,11 @@ services:
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
altcha:
|
||||
image: reg.cadoles.com/cadoles/altcha:2024.10.29-develop.1213.22e038b
|
||||
environment:
|
||||
ALTCHA_HMAC_KEY: 'change_me'
|
||||
volumes:
|
||||
postgres:
|
||||
mariadb:
|
@ -4,30 +4,30 @@
|
||||
"minimum-stability": "stable",
|
||||
"prefer-stable": true,
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"php": "^8.4",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*",
|
||||
"doctrine/annotations": "^1.13",
|
||||
"predis/predis": "^2.1",
|
||||
"sentry/sentry-symfony": "^4.5",
|
||||
"symfony/apache-pack": "^1.0",
|
||||
"symfony/asset": "5.4.*",
|
||||
"symfony/console": "5.4.*",
|
||||
"symfony/dependency-injection": "5.4.*",
|
||||
"symfony/dotenv": "5.4.*",
|
||||
"symfony/asset": "6.4.*",
|
||||
"symfony/console": "6.4.*",
|
||||
"symfony/dependency-injection": "6.4.*",
|
||||
"symfony/dotenv": "6.4.*",
|
||||
"symfony/expression-language": "6.4.*",
|
||||
"symfony/flex": "^1.17|^2",
|
||||
"symfony/form": "5.4.*",
|
||||
"symfony/framework-bundle": "5.4.*",
|
||||
"symfony/http-client": "5.4.*",
|
||||
"symfony/rate-limiter": "5.4.*",
|
||||
"symfony/runtime": "5.4.*",
|
||||
"symfony/security-bundle": "5.4.*",
|
||||
"symfony/translation": "5.4.*",
|
||||
"symfony/twig-bundle": "5.4.*",
|
||||
"symfony/validator": "5.4.*",
|
||||
"symfony/web-profiler-bundle": "5.4.*",
|
||||
"symfony/form": "6.4.*",
|
||||
"symfony/framework-bundle": "6.4.*",
|
||||
"symfony/http-client": "6.4.*",
|
||||
"symfony/rate-limiter": "6.4.*",
|
||||
"symfony/runtime": "6.4.*",
|
||||
"symfony/security-bundle": "6.4.*",
|
||||
"symfony/translation": "6.4.*",
|
||||
"symfony/twig-bundle": "6.4.*",
|
||||
"symfony/validator": "6.4.*",
|
||||
"symfony/webpack-encore-bundle": "^1.16",
|
||||
"symfony/yaml": "5.4.*"
|
||||
"symfony/yaml": "6.4.*"
|
||||
},
|
||||
"config": {
|
||||
"allow-plugins": {
|
||||
@ -75,7 +75,12 @@
|
||||
"extra": {
|
||||
"symfony": {
|
||||
"allow-contrib": true,
|
||||
"require": "5.4.*"
|
||||
"require": "6.4.*"
|
||||
}
|
||||
},
|
||||
"require-dev": {
|
||||
"rector/rector": "^2.1",
|
||||
"symfony/debug-bundle": "6.4.*",
|
||||
"symfony/web-profiler-bundle": "6.4.*"
|
||||
}
|
||||
}
|
||||
|
3086
composer.lock
generated
3086
composer.lock
generated
@ -4,27 +4,27 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "7dce269ca449b7de7e1bd2e23df94eab",
|
||||
"content-hash": "8b996df8de88651b1cb94dde643d615c",
|
||||
"packages": [
|
||||
{
|
||||
"name": "clue/stream-filter",
|
||||
"version": "v1.6.0",
|
||||
"version": "v1.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/clue/stream-filter.git",
|
||||
"reference": "d6169430c7731d8509da7aecd0af756a5747b78e"
|
||||
"reference": "049509fef80032cb3f051595029ab75b49a3c2f7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/clue/stream-filter/zipball/d6169430c7731d8509da7aecd0af756a5747b78e",
|
||||
"reference": "d6169430c7731d8509da7aecd0af756a5747b78e",
|
||||
"url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7",
|
||||
"reference": "049509fef80032cb3f051595029ab75b49a3c2f7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36"
|
||||
"phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -46,7 +46,7 @@
|
||||
}
|
||||
],
|
||||
"description": "A simple and modern approach to stream filtering in PHP",
|
||||
"homepage": "https://github.com/clue/php-stream-filter",
|
||||
"homepage": "https://github.com/clue/stream-filter",
|
||||
"keywords": [
|
||||
"bucket brigade",
|
||||
"callback",
|
||||
@ -58,7 +58,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/clue/stream-filter/issues",
|
||||
"source": "https://github.com/clue/stream-filter/tree/v1.6.0"
|
||||
"source": "https://github.com/clue/stream-filter/tree/v1.7.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -70,20 +70,20 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2022-02-21T13:15:14+00:00"
|
||||
"time": "2023-12-20T15:40:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/annotations",
|
||||
"version": "1.14.3",
|
||||
"version": "1.14.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/annotations.git",
|
||||
"reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af"
|
||||
"reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
|
||||
"reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af",
|
||||
"url": "https://api.github.com/repos/doctrine/annotations/zipball/253dca476f70808a5aeed3a47cc2cc88c5cab915",
|
||||
"reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -94,11 +94,11 @@
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/cache": "^1.11 || ^2.0",
|
||||
"doctrine/coding-standard": "^9 || ^10",
|
||||
"phpstan/phpstan": "~1.4.10 || ^1.8.0",
|
||||
"doctrine/coding-standard": "^9 || ^12",
|
||||
"phpstan/phpstan": "~1.4.10 || ^1.10.28",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"symfony/cache": "^4.4 || ^5.4 || ^6",
|
||||
"vimeo/psalm": "^4.10"
|
||||
"symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7",
|
||||
"vimeo/psalm": "^4.30 || ^5.14"
|
||||
},
|
||||
"suggest": {
|
||||
"php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations"
|
||||
@ -144,35 +144,36 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/doctrine/annotations/issues",
|
||||
"source": "https://github.com/doctrine/annotations/tree/1.14.3"
|
||||
"source": "https://github.com/doctrine/annotations/tree/1.14.4"
|
||||
},
|
||||
"time": "2023-02-01T09:20:38+00:00"
|
||||
"time": "2024-09-05T10:15:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/deprecations",
|
||||
"version": "v1.1.1",
|
||||
"version": "1.1.5",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/deprecations.git",
|
||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
|
||||
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
||||
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
|
||||
"reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpunit/phpunit": "<=7.5 || >=13"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/coding-standard": "^9",
|
||||
"phpstan/phpstan": "1.4.10 || 1.10.15",
|
||||
"phpstan/phpstan-phpunit": "^1.0",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"psalm/plugin-phpunit": "0.18.4",
|
||||
"psr/log": "^1 || ^2 || ^3",
|
||||
"vimeo/psalm": "4.30.0 || 5.12.0"
|
||||
"doctrine/coding-standard": "^9 || ^12 || ^13",
|
||||
"phpstan/phpstan": "1.4.10 || 2.1.11",
|
||||
"phpstan/phpstan-phpunit": "^1.0 || ^2",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
|
||||
"psr/log": "^1 || ^2 || ^3"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
|
||||
@ -180,7 +181,7 @@
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
|
||||
"Doctrine\\Deprecations\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -191,22 +192,22 @@
|
||||
"homepage": "https://www.doctrine-project.org/",
|
||||
"support": {
|
||||
"issues": "https://github.com/doctrine/deprecations/issues",
|
||||
"source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
|
||||
"source": "https://github.com/doctrine/deprecations/tree/1.1.5"
|
||||
},
|
||||
"time": "2023-06-03T09:27:29+00:00"
|
||||
"time": "2025-04-07T20:06:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/lexer",
|
||||
"version": "2.1.0",
|
||||
"version": "2.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/doctrine/lexer.git",
|
||||
"reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124"
|
||||
"reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
|
||||
"reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
|
||||
"url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6",
|
||||
"reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -214,11 +215,11 @@
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/coding-standard": "^9 || ^10",
|
||||
"doctrine/coding-standard": "^9 || ^12",
|
||||
"phpstan/phpstan": "^1.3",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6",
|
||||
"psalm/plugin-phpunit": "^0.18.3",
|
||||
"vimeo/psalm": "^4.11 || ^5.0"
|
||||
"vimeo/psalm": "^4.11 || ^5.21"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -255,7 +256,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/doctrine/lexer/issues",
|
||||
"source": "https://github.com/doctrine/lexer/tree/2.1.0"
|
||||
"source": "https://github.com/doctrine/lexer/tree/2.1.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -271,28 +272,28 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-12-14T08:49:07+00:00"
|
||||
"time": "2024-02-05T11:35:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/promises",
|
||||
"version": "2.0.0",
|
||||
"version": "2.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/promises.git",
|
||||
"reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6"
|
||||
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/3a494dc7dc1d7d12e511890177ae2d0e6c107da6",
|
||||
"reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
|
||||
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.2.5 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.1",
|
||||
"phpunit/phpunit": "^8.5.29 || ^9.5.23"
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -338,7 +339,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/promises/issues",
|
||||
"source": "https://github.com/guzzle/promises/tree/2.0.0"
|
||||
"source": "https://github.com/guzzle/promises/tree/2.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -354,20 +355,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-21T13:50:22+00:00"
|
||||
"time": "2025-03-27T13:27:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/psr7",
|
||||
"version": "2.5.0",
|
||||
"version": "2.7.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/psr7.git",
|
||||
"reference": "b635f279edd83fc275f822a1188157ffea568ff6"
|
||||
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6",
|
||||
"reference": "b635f279edd83fc275f822a1188157ffea568ff6",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
|
||||
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -381,9 +382,9 @@
|
||||
"psr/http-message-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"bamarni/composer-bin-plugin": "^1.8.1",
|
||||
"http-interop/http-factory-tests": "^0.9",
|
||||
"phpunit/phpunit": "^8.5.29 || ^9.5.23"
|
||||
"bamarni/composer-bin-plugin": "^1.8.2",
|
||||
"http-interop/http-factory-tests": "0.9.0",
|
||||
"phpunit/phpunit": "^8.5.39 || ^9.6.20"
|
||||
},
|
||||
"suggest": {
|
||||
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
|
||||
@ -454,7 +455,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/guzzle/psr7/issues",
|
||||
"source": "https://github.com/guzzle/psr7/tree/2.5.0"
|
||||
"source": "https://github.com/guzzle/psr7/tree/2.7.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -470,7 +471,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-17T16:11:26+00:00"
|
||||
"time": "2025-03-27T12:30:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "http-interop/http-factory-guzzle",
|
||||
@ -532,28 +533,29 @@
|
||||
},
|
||||
{
|
||||
"name": "jean85/pretty-package-versions",
|
||||
"version": "2.0.5",
|
||||
"version": "2.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Jean85/pretty-package-versions.git",
|
||||
"reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
|
||||
"reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
|
||||
"reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
|
||||
"url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a",
|
||||
"reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-runtime-api": "^2.0.0",
|
||||
"php": "^7.1|^8.0"
|
||||
"composer-runtime-api": "^2.1.0",
|
||||
"php": "^7.4|^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.17",
|
||||
"friendsofphp/php-cs-fixer": "^3.2",
|
||||
"jean85/composer-provided-replaced-stub-package": "^1.0",
|
||||
"phpstan/phpstan": "^0.12.66",
|
||||
"phpunit/phpunit": "^7.5|^8.5|^9.4",
|
||||
"vimeo/psalm": "^4.3"
|
||||
"phpstan/phpstan": "^2.0",
|
||||
"phpunit/phpunit": "^7.5|^8.5|^9.6",
|
||||
"rector/rector": "^2.0",
|
||||
"vimeo/psalm": "^4.3 || ^5.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@ -585,22 +587,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Jean85/pretty-package-versions/issues",
|
||||
"source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
|
||||
"source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1"
|
||||
},
|
||||
"time": "2021-10-08T21:21:46+00:00"
|
||||
"time": "2025-03-19T14:43:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-http/client-common",
|
||||
"version": "2.7.0",
|
||||
"version": "2.7.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-http/client-common.git",
|
||||
"reference": "880509727a447474d2a71b7d7fa5d268ddd3db4b"
|
||||
"reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-http/client-common/zipball/880509727a447474d2a71b7d7fa5d268ddd3db4b",
|
||||
"reference": "880509727a447474d2a71b7d7fa5d268ddd3db4b",
|
||||
"url": "https://api.github.com/repos/php-http/client-common/zipball/0cfe9858ab9d3b213041b947c881d5b19ceeca46",
|
||||
"reference": "0cfe9858ab9d3b213041b947c881d5b19ceeca46",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -610,7 +612,7 @@
|
||||
"psr/http-client": "^1.0",
|
||||
"psr/http-factory": "^1.0",
|
||||
"psr/http-message": "^1.0 || ^2.0",
|
||||
"symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0",
|
||||
"symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0 || ^7.0",
|
||||
"symfony/polyfill-php80": "^1.17"
|
||||
},
|
||||
"require-dev": {
|
||||
@ -654,22 +656,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-http/client-common/issues",
|
||||
"source": "https://github.com/php-http/client-common/tree/2.7.0"
|
||||
"source": "https://github.com/php-http/client-common/tree/2.7.2"
|
||||
},
|
||||
"time": "2023-05-17T06:46:59+00:00"
|
||||
"time": "2024-09-24T06:21:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-http/discovery",
|
||||
"version": "1.18.1",
|
||||
"version": "1.20.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-http/discovery.git",
|
||||
"reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237"
|
||||
"reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-http/discovery/zipball/f258b3a1d16acb7b21f3b42d7a2494a733365237",
|
||||
"reference": "f258b3a1d16acb7b21f3b42d7a2494a733365237",
|
||||
"url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d",
|
||||
"reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -693,7 +695,8 @@
|
||||
"php-http/httplug": "^1.0 || ^2.0",
|
||||
"php-http/message-factory": "^1.0",
|
||||
"phpspec/phpspec": "^5.1 || ^6.1 || ^7.3",
|
||||
"symfony/phpunit-bridge": "^6.2"
|
||||
"sebastian/comparator": "^3.0.5 || ^4.0.8",
|
||||
"symfony/phpunit-bridge": "^6.4.4 || ^7.0.1"
|
||||
},
|
||||
"type": "composer-plugin",
|
||||
"extra": {
|
||||
@ -732,22 +735,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-http/discovery/issues",
|
||||
"source": "https://github.com/php-http/discovery/tree/1.18.1"
|
||||
"source": "https://github.com/php-http/discovery/tree/1.20.0"
|
||||
},
|
||||
"time": "2023-05-17T08:53:10+00:00"
|
||||
"time": "2024-10-02T11:20:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-http/httplug",
|
||||
"version": "2.4.0",
|
||||
"version": "2.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-http/httplug.git",
|
||||
"reference": "625ad742c360c8ac580fcc647a1541d29e257f67"
|
||||
"reference": "5cad731844891a4c282f3f3e1b582c46839d22f4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67",
|
||||
"reference": "625ad742c360c8ac580fcc647a1541d29e257f67",
|
||||
"url": "https://api.github.com/repos/php-http/httplug/zipball/5cad731844891a4c282f3f3e1b582c46839d22f4",
|
||||
"reference": "5cad731844891a4c282f3f3e1b582c46839d22f4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -789,22 +792,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-http/httplug/issues",
|
||||
"source": "https://github.com/php-http/httplug/tree/2.4.0"
|
||||
"source": "https://github.com/php-http/httplug/tree/2.4.1"
|
||||
},
|
||||
"time": "2023-04-14T15:10:03+00:00"
|
||||
"time": "2024-09-23T11:39:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-http/message",
|
||||
"version": "1.16.0",
|
||||
"version": "1.16.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-http/message.git",
|
||||
"reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd"
|
||||
"reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-http/message/zipball/47a14338bf4ebd67d317bf1144253d7db4ab55fd",
|
||||
"reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd",
|
||||
"url": "https://api.github.com/repos/php-http/message/zipball/06dd5e8562f84e641bf929bfe699ee0f5ce8080a",
|
||||
"reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -858,9 +861,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-http/message/issues",
|
||||
"source": "https://github.com/php-http/message/tree/1.16.0"
|
||||
"source": "https://github.com/php-http/message/tree/1.16.2"
|
||||
},
|
||||
"time": "2023-05-17T06:43:38+00:00"
|
||||
"time": "2024-10-02T11:34:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-http/message-factory",
|
||||
@ -919,31 +922,26 @@
|
||||
},
|
||||
{
|
||||
"name": "php-http/promise",
|
||||
"version": "1.1.0",
|
||||
"version": "1.3.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-http/promise.git",
|
||||
"reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88"
|
||||
"reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
|
||||
"reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
|
||||
"url": "https://api.github.com/repos/php-http/promise/zipball/fc85b1fba37c169a69a07ef0d5a8075770cc1f83",
|
||||
"reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friends-of-phpspec/phpspec-code-coverage": "^4.3.2",
|
||||
"phpspec/phpspec": "^5.1.2 || ^6.2"
|
||||
"friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3",
|
||||
"phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Http\\Promise\\": "src/"
|
||||
@ -970,22 +968,22 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-http/promise/issues",
|
||||
"source": "https://github.com/php-http/promise/tree/1.1.0"
|
||||
"source": "https://github.com/php-http/promise/tree/1.3.1"
|
||||
},
|
||||
"time": "2020-07-07T09:29:14+00:00"
|
||||
"time": "2024-03-15T13:55:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "predis/predis",
|
||||
"version": "v2.1.2",
|
||||
"version": "v2.4.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/predis/predis.git",
|
||||
"reference": "a77a43913a74f9331f637bb12867eb8e274814e5"
|
||||
"reference": "f49e13ee3a2a825631562aa0223ac922ec5d058b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/predis/predis/zipball/a77a43913a74f9331f637bb12867eb8e274814e5",
|
||||
"reference": "a77a43913a74f9331f637bb12867eb8e274814e5",
|
||||
"url": "https://api.github.com/repos/predis/predis/zipball/f49e13ee3a2a825631562aa0223ac922ec5d058b",
|
||||
"reference": "f49e13ee3a2a825631562aa0223ac922ec5d058b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -994,7 +992,11 @@
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^3.3",
|
||||
"phpstan/phpstan": "^1.9",
|
||||
"phpunit/phpunit": "^8.0 || ~9.4.4"
|
||||
"phpunit/phpcov": "^6.0 || ^8.0",
|
||||
"phpunit/phpunit": "^8.0 || ^9.4"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-relay": "Faster connection with in-memory caching (>=0.6.2)"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -1013,7 +1015,7 @@
|
||||
"role": "Maintainer"
|
||||
}
|
||||
],
|
||||
"description": "A flexible and feature-complete Redis client for PHP.",
|
||||
"description": "A flexible and feature-complete Redis/Valkey client for PHP.",
|
||||
"homepage": "http://github.com/predis/predis",
|
||||
"keywords": [
|
||||
"nosql",
|
||||
@ -1022,7 +1024,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/predis/predis/issues",
|
||||
"source": "https://github.com/predis/predis/tree/v2.1.2"
|
||||
"source": "https://github.com/predis/predis/tree/v2.4.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1030,20 +1032,20 @@
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-02T18:32:04+00:00"
|
||||
"time": "2025-04-30T15:16:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/cache",
|
||||
"version": "2.0.0",
|
||||
"version": "3.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/cache.git",
|
||||
"reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b"
|
||||
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
|
||||
"reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
|
||||
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
|
||||
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1077,28 +1079,81 @@
|
||||
"psr-6"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/cache/tree/2.0.0"
|
||||
"source": "https://github.com/php-fig/cache/tree/3.0.0"
|
||||
},
|
||||
"time": "2021-02-03T23:23:37+00:00"
|
||||
"time": "2021-02-03T23:26:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
"version": "1.1.2",
|
||||
"name": "psr/clock",
|
||||
"version": "1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/container.git",
|
||||
"reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
|
||||
"url": "https://github.com/php-fig/clock.git",
|
||||
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
|
||||
"reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
|
||||
"url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
|
||||
"reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.0 || ^8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Clock\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for reading the clock.",
|
||||
"homepage": "https://github.com/php-fig/clock",
|
||||
"keywords": [
|
||||
"clock",
|
||||
"now",
|
||||
"psr",
|
||||
"psr-20",
|
||||
"time"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-fig/clock/issues",
|
||||
"source": "https://github.com/php-fig/clock/tree/1.0.0"
|
||||
},
|
||||
"time": "2022-11-25T14:36:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/container",
|
||||
"version": "2.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/container.git",
|
||||
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
||||
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Container\\": "src/"
|
||||
@ -1125,9 +1180,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-fig/container/issues",
|
||||
"source": "https://github.com/php-fig/container/tree/1.1.2"
|
||||
"source": "https://github.com/php-fig/container/tree/2.0.2"
|
||||
},
|
||||
"time": "2021-11-05T16:50:12+00:00"
|
||||
"time": "2021-11-05T16:47:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/event-dispatcher",
|
||||
@ -1181,16 +1236,16 @@
|
||||
},
|
||||
{
|
||||
"name": "psr/http-client",
|
||||
"version": "1.0.2",
|
||||
"version": "1.0.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-client.git",
|
||||
"reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31"
|
||||
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31",
|
||||
"reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31",
|
||||
"url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
|
||||
"reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1227,26 +1282,26 @@
|
||||
"psr-18"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-client/tree/1.0.2"
|
||||
"source": "https://github.com/php-fig/http-client"
|
||||
},
|
||||
"time": "2023-04-10T20:12:12+00:00"
|
||||
"time": "2023-09-23T14:17:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-factory",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-factory.git",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35"
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
|
||||
"reference": "e616d01114759c4c489f93b099585439f795fe35",
|
||||
"url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.0.0",
|
||||
"php": ">=7.1",
|
||||
"psr/http-message": "^1.0 || ^2.0"
|
||||
},
|
||||
"type": "library",
|
||||
@ -1270,7 +1325,7 @@
|
||||
"homepage": "https://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interfaces for PSR-7 HTTP message factories",
|
||||
"description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
|
||||
"keywords": [
|
||||
"factory",
|
||||
"http",
|
||||
@ -1282,9 +1337,9 @@
|
||||
"response"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/http-factory/tree/1.0.2"
|
||||
"source": "https://github.com/php-fig/http-factory"
|
||||
},
|
||||
"time": "2023-04-10T20:10:41+00:00"
|
||||
"time": "2024-04-15T12:06:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
@ -1341,16 +1396,16 @@
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "2.0.0",
|
||||
"version": "3.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/log.git",
|
||||
"reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
|
||||
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
|
||||
"reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
|
||||
"url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
|
||||
"reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1359,7 +1414,7 @@
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0.x-dev"
|
||||
"dev-master": "3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -1385,9 +1440,9 @@
|
||||
"psr-3"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/php-fig/log/tree/2.0.0"
|
||||
"source": "https://github.com/php-fig/log/tree/3.0.2"
|
||||
},
|
||||
"time": "2021-07-14T16:41:46+00:00"
|
||||
"time": "2024-09-11T13:17:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
@ -1435,22 +1490,22 @@
|
||||
},
|
||||
{
|
||||
"name": "sentry/sdk",
|
||||
"version": "3.4.0",
|
||||
"version": "3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/getsentry/sentry-php-sdk.git",
|
||||
"reference": "7f1e04a5380a91e41a1a68c363ec19f88619a870"
|
||||
"reference": "24c235ff2027401cbea099bf88689e1a1f197c7a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/7f1e04a5380a91e41a1a68c363ec19f88619a870",
|
||||
"reference": "7f1e04a5380a91e41a1a68c363ec19f88619a870",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/24c235ff2027401cbea099bf88689e1a1f197c7a",
|
||||
"reference": "24c235ff2027401cbea099bf88689e1a1f197c7a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"http-interop/http-factory-guzzle": "^1.0",
|
||||
"sentry/sentry": "^3.18",
|
||||
"symfony/http-client": "^4.3|^5.0|^6.0"
|
||||
"sentry/sentry": "^3.22",
|
||||
"symfony/http-client": "^4.3|^5.0|^6.0|^7.0"
|
||||
},
|
||||
"type": "metapackage",
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -1476,7 +1531,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/getsentry/sentry-php-sdk/issues",
|
||||
"source": "https://github.com/getsentry/sentry-php-sdk/tree/3.4.0"
|
||||
"source": "https://github.com/getsentry/sentry-php-sdk/tree/3.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1488,20 +1543,20 @@
|
||||
"type": "custom"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-22T16:02:39+00:00"
|
||||
"time": "2023-12-04T10:49:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sentry/sentry",
|
||||
"version": "3.19.1",
|
||||
"version": "3.22.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/getsentry/sentry-php.git",
|
||||
"reference": "dd1057fb37d4484ebb2d1bc9b05fa5969c078436"
|
||||
"reference": "8859631ba5ab15bc1af420b0eeed19ecc6c9d81d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/dd1057fb37d4484ebb2d1bc9b05fa5969c078436",
|
||||
"reference": "dd1057fb37d4484ebb2d1bc9b05fa5969c078436",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-php/zipball/8859631ba5ab15bc1af420b0eeed19ecc6c9d81d",
|
||||
"reference": "8859631ba5ab15bc1af420b0eeed19ecc6c9d81d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -1519,7 +1574,7 @@
|
||||
"psr/http-factory": "^1.0",
|
||||
"psr/http-factory-implementation": "^1.0",
|
||||
"psr/log": "^1.0|^2.0|^3.0",
|
||||
"symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0",
|
||||
"symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0|^7.0",
|
||||
"symfony/polyfill-php80": "^1.17"
|
||||
},
|
||||
"conflict": {
|
||||
@ -1545,11 +1600,6 @@
|
||||
"monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler."
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.13.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions.php"
|
||||
@ -1581,7 +1631,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/getsentry/sentry-php/issues",
|
||||
"source": "https://github.com/getsentry/sentry-php/tree/3.19.1"
|
||||
"source": "https://github.com/getsentry/sentry-php/tree/3.22.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1593,63 +1643,61 @@
|
||||
"type": "custom"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-25T06:19:09+00:00"
|
||||
"time": "2023-11-13T11:47:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sentry/sentry-symfony",
|
||||
"version": "4.8.0",
|
||||
"version": "4.14.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/getsentry/sentry-symfony.git",
|
||||
"reference": "bd4b1ed18a40dc7b93f64f4b670a97b0db6bf352"
|
||||
"reference": "001c4cfd8fe93cbb00edaca903ffbfac28259170"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/bd4b1ed18a40dc7b93f64f4b670a97b0db6bf352",
|
||||
"reference": "bd4b1ed18a40dc7b93f64f4b670a97b0db6bf352",
|
||||
"url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/001c4cfd8fe93cbb00edaca903ffbfac28259170",
|
||||
"reference": "001c4cfd8fe93cbb00edaca903ffbfac28259170",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/psr7": "^1.7 || ^2.0",
|
||||
"jean85/pretty-package-versions": "^1.5 || ^2.0",
|
||||
"php": "^7.2||^8.0",
|
||||
"sentry/sdk": "^3.3",
|
||||
"sentry/sentry": "^3.15",
|
||||
"sentry/sdk": "^3.6",
|
||||
"sentry/sentry": "^3.22.1",
|
||||
"symfony/cache-contracts": "^1.1||^2.4||^3.0",
|
||||
"symfony/config": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/console": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/dependency-injection": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/event-dispatcher": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/http-kernel": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/config": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/console": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/dependency-injection": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/event-dispatcher": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/http-kernel": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/polyfill-php80": "^1.22",
|
||||
"symfony/psr-http-message-bridge": "^1.2||^2.0",
|
||||
"symfony/security-core": "^4.4.20||^5.0.11||^6.0"
|
||||
"symfony/psr-http-message-bridge": "^1.2||^2.0||^6.4||^7.0",
|
||||
"symfony/security-core": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/security-http": "^4.4.20||^5.0.11||^6.0||^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/dbal": "^2.13||^3.0",
|
||||
"doctrine/doctrine-bundle": "^1.12||^2.5",
|
||||
"friendsofphp/php-cs-fixer": "^2.19||^3.6",
|
||||
"jangregor/phpstan-prophecy": "^1.0",
|
||||
"monolog/monolog": "^1.3||^2.0",
|
||||
"phpspec/prophecy": "!=1.11.0",
|
||||
"phpspec/prophecy-phpunit": "^1.1||^2.0",
|
||||
"doctrine/dbal": "^2.13||^3.3||^4.0",
|
||||
"doctrine/doctrine-bundle": "^2.6",
|
||||
"friendsofphp/php-cs-fixer": "^2.19||^3.40",
|
||||
"masterminds/html5": "^2.8",
|
||||
"phpstan/extension-installer": "^1.0",
|
||||
"phpstan/phpstan": "^1.3",
|
||||
"phpstan/phpstan-phpunit": "^1.0",
|
||||
"phpstan/phpstan-symfony": "^1.0",
|
||||
"phpunit/phpunit": "^8.5.14||^9.3.9",
|
||||
"symfony/browser-kit": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/cache": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/dom-crawler": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/framework-bundle": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/http-client": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/messenger": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/browser-kit": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/cache": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/dom-crawler": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/framework-bundle": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/http-client": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/messenger": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/monolog-bundle": "^3.4",
|
||||
"symfony/phpunit-bridge": "^5.2.6||^6.0",
|
||||
"symfony/process": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/twig-bundle": "^4.4.20||^5.0.11||^6.0",
|
||||
"symfony/yaml": "^4.4.20||^5.0.11||^6.0",
|
||||
"vimeo/psalm": "^4.3"
|
||||
"symfony/phpunit-bridge": "^5.2.6||^6.0||^7.0",
|
||||
"symfony/process": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/twig-bundle": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"symfony/yaml": "^4.4.20||^5.0.11||^6.0||^7.0",
|
||||
"vimeo/psalm": "^4.3||^5.16.0"
|
||||
},
|
||||
"suggest": {
|
||||
"doctrine/doctrine-bundle": "Allow distributed tracing of database queries using Sentry.",
|
||||
@ -1660,10 +1708,9 @@
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "4.6.x-dev",
|
||||
"releases/3.2.x": "3.2.x-dev",
|
||||
"releases/1.x": "1.x-dev",
|
||||
"releases/2.x": "2.x-dev",
|
||||
"releases/1.x": "1.x-dev"
|
||||
"releases/3.2.x": "3.2.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -1698,7 +1745,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/getsentry/sentry-symfony/issues",
|
||||
"source": "https://github.com/getsentry/sentry-symfony/tree/4.8.0"
|
||||
"source": "https://github.com/getsentry/sentry-symfony/tree/4.14.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1710,7 +1757,7 @@
|
||||
"type": "custom"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-02T09:07:58+00:00"
|
||||
"time": "2024-02-26T09:27:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/apache-pack",
|
||||
@ -1740,33 +1787,28 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/asset",
|
||||
"version": "v5.4.21",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/asset.git",
|
||||
"reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c"
|
||||
"reference": "2466c17d61d14539cddf77e57ebb9cc971185302"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/asset/zipball/1504b6773c6b90118f9871e90a67833b5d1dca3c",
|
||||
"reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c",
|
||||
"url": "https://api.github.com/repos/symfony/asset/zipball/2466c17d61d14539cddf77e57ebb9cc971185302",
|
||||
"reference": "2466c17d61d14539cddf77e57ebb9cc971185302",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/http-foundation": "<5.3"
|
||||
"symfony/http-foundation": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/http-client": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^5.3|^6.0",
|
||||
"symfony/http-kernel": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/http-foundation": ""
|
||||
"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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -1794,7 +1836,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/v5.4.21"
|
||||
"source": "https://github.com/symfony/asset/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1810,62 +1852,61 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-14T08:03:56+00:00"
|
||||
"time": "2024-10-25T15:07:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/cache",
|
||||
"version": "v5.4.23",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/cache.git",
|
||||
"reference": "983c79ff28612cdfd66d8e44e1a06e5afc87e107"
|
||||
"reference": "c88690befb8d4a85dc321fb78d677507f5eb141b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/cache/zipball/983c79ff28612cdfd66d8e44e1a06e5afc87e107",
|
||||
"reference": "983c79ff28612cdfd66d8e44e1a06e5afc87e107",
|
||||
"url": "https://api.github.com/repos/symfony/cache/zipball/c88690befb8d4a85dc321fb78d677507f5eb141b",
|
||||
"reference": "c88690befb8d4a85dc321fb78d677507f5eb141b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/cache": "^1.0|^2.0",
|
||||
"php": ">=8.1",
|
||||
"psr/cache": "^2.0|^3.0",
|
||||
"psr/log": "^1.1|^2|^3",
|
||||
"symfony/cache-contracts": "^1.1.7|^2",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php73": "^1.9",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/service-contracts": "^1.1|^2|^3",
|
||||
"symfony/var-exporter": "^4.4|^5.0|^6.0"
|
||||
"symfony/cache-contracts": "^2.5|^3",
|
||||
"symfony/service-contracts": "^2.5|^3",
|
||||
"symfony/var-exporter": "^6.3.6|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/dbal": "<2.13.1",
|
||||
"symfony/dependency-injection": "<4.4",
|
||||
"symfony/http-kernel": "<4.4",
|
||||
"symfony/var-dumper": "<4.4"
|
||||
"symfony/dependency-injection": "<5.4",
|
||||
"symfony/http-kernel": "<5.4",
|
||||
"symfony/var-dumper": "<5.4"
|
||||
},
|
||||
"provide": {
|
||||
"psr/cache-implementation": "1.0|2.0",
|
||||
"psr/simple-cache-implementation": "1.0|2.0",
|
||||
"symfony/cache-implementation": "1.0|2.0"
|
||||
"psr/cache-implementation": "2.0|3.0",
|
||||
"psr/simple-cache-implementation": "1.0|2.0|3.0",
|
||||
"symfony/cache-implementation": "1.1|2.0|3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"cache/integration-tests": "dev-master",
|
||||
"doctrine/cache": "^1.6|^2.0",
|
||||
"doctrine/dbal": "^2.13.1|^3.0",
|
||||
"predis/predis": "^1.1",
|
||||
"psr/simple-cache": "^1.0|^2.0",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/filesystem": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-kernel": "^4.4|^5.0|^6.0",
|
||||
"symfony/messenger": "^4.4|^5.0|^6.0",
|
||||
"symfony/var-dumper": "^4.4|^5.0|^6.0"
|
||||
"doctrine/dbal": "^2.13.1|^3|^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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Cache\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Traits/ValueWrapper.php"
|
||||
],
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
@ -1891,7 +1932,7 @@
|
||||
"psr6"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/cache/tree/v5.4.23"
|
||||
"source": "https://github.com/symfony/cache/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1907,37 +1948,34 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-21T15:38:51+00:00"
|
||||
"time": "2025-06-27T18:31:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/cache-contracts",
|
||||
"version": "v2.5.2",
|
||||
"version": "v3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/cache-contracts.git",
|
||||
"reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc"
|
||||
"reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
|
||||
"reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
|
||||
"url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868",
|
||||
"reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/cache": "^1.0|^2.0|^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/cache-implementation": ""
|
||||
"php": ">=8.1",
|
||||
"psr/cache": "^3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -1970,7 +2008,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/cache-contracts/tree/v2.5.2"
|
||||
"source": "https://github.com/symfony/cache-contracts/tree/v3.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -1986,42 +2024,112 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-01-02T09:53:40+00:00"
|
||||
"time": "2025-03-13T15:25:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/config",
|
||||
"version": "v5.4.21",
|
||||
"name": "symfony/clock",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/config.git",
|
||||
"reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4"
|
||||
"url": "https://github.com/symfony/clock.git",
|
||||
"reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/config/zipball/2a6b1111d038adfa15d52c0871e540f3b352d1e4",
|
||||
"reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4",
|
||||
"url": "https://api.github.com/repos/symfony/clock/zipball/b2bf55c4dd115003309eafa87ee7df9ed3dde81b",
|
||||
"reference": "b2bf55c4dd115003309eafa87ee7df9ed3dde81b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/filesystem": "^4.4|^5.0|^6.0",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/polyfill-php81": "^1.22"
|
||||
"php": ">=8.1",
|
||||
"psr/clock": "^1.0",
|
||||
"symfony/polyfill-php83": "^1.28"
|
||||
},
|
||||
"provide": {
|
||||
"psr/clock-implementation": "1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"Resources/now.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Clock\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Decouples applications from the system clock",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"clock",
|
||||
"psr20",
|
||||
"time"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/clock/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-25T14:18:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/config",
|
||||
"version": "v6.4.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/config.git",
|
||||
"reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/config/zipball/af5917a3b1571f54689e56677a3f06440d2fe4c7",
|
||||
"reference": "af5917a3b1571f54689e56677a3f06440d2fe4c7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/filesystem": "^5.4|^6.0|^7.0",
|
||||
"symfony/polyfill-ctype": "~1.8"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/finder": "<4.4"
|
||||
"symfony/finder": "<5.4",
|
||||
"symfony/service-contracts": "<2.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
|
||||
"symfony/finder": "^4.4|^5.0|^6.0",
|
||||
"symfony/messenger": "^4.4|^5.0|^6.0",
|
||||
"symfony/service-contracts": "^1.1|^2|^3",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/yaml": "To use the yaml reference dumper"
|
||||
"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/service-contracts": "^2.5|^3",
|
||||
"symfony/yaml": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2049,7 +2157,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/v5.4.21"
|
||||
"source": "https://github.com/symfony/config/tree/v6.4.22"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2065,56 +2173,51 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-14T08:03:56+00:00"
|
||||
"time": "2025-05-14T06:00:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8"
|
||||
"reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8",
|
||||
"reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/9056771b8eca08d026cd3280deeec3cfd99c4d93",
|
||||
"reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php73": "^1.9",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/service-contracts": "^1.1|^2|^3",
|
||||
"symfony/string": "^5.1|^6.0"
|
||||
"symfony/service-contracts": "^2.5|^3",
|
||||
"symfony/string": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"psr/log": ">=3",
|
||||
"symfony/dependency-injection": "<4.4",
|
||||
"symfony/dotenv": "<5.1",
|
||||
"symfony/event-dispatcher": "<4.4",
|
||||
"symfony/lock": "<4.4",
|
||||
"symfony/process": "<4.4"
|
||||
"symfony/dependency-injection": "<5.4",
|
||||
"symfony/dotenv": "<5.4",
|
||||
"symfony/event-dispatcher": "<5.4",
|
||||
"symfony/lock": "<5.4",
|
||||
"symfony/process": "<5.4"
|
||||
},
|
||||
"provide": {
|
||||
"psr/log-implementation": "1.0|2.0"
|
||||
"psr/log-implementation": "1.0|2.0|3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "^1|^2",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
|
||||
"symfony/lock": "^4.4|^5.0|^6.0",
|
||||
"symfony/process": "^4.4|^5.0|^6.0",
|
||||
"symfony/var-dumper": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/log": "For using the console logger",
|
||||
"symfony/event-dispatcher": "",
|
||||
"symfony/lock": "",
|
||||
"symfony/process": ""
|
||||
"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/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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2148,7 +2251,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/console/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2164,52 +2267,44 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-26T05:13:16+00:00"
|
||||
"time": "2025-06-27T19:37:22+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dependency-injection",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/dependency-injection.git",
|
||||
"reference": "4645e032d0963fb614969398ca28e47605b1a7da"
|
||||
"reference": "0d9f24f3de0a83573fce5c9ed025d6306c6e166b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4645e032d0963fb614969398ca28e47605b1a7da",
|
||||
"reference": "4645e032d0963fb614969398ca28e47605b1a7da",
|
||||
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/0d9f24f3de0a83573fce5c9ed025d6306c6e166b",
|
||||
"reference": "0d9f24f3de0a83573fce5c9ed025d6306c6e166b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/container": "^1.1.1",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/polyfill-php81": "^1.22",
|
||||
"symfony/service-contracts": "^1.1.6|^2"
|
||||
"php": ">=8.1",
|
||||
"psr/container": "^1.1|^2.0",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/service-contracts": "^2.5|^3.0",
|
||||
"symfony/var-exporter": "^6.4.20|^7.2.5"
|
||||
},
|
||||
"conflict": {
|
||||
"ext-psr": "<1.1|>=2",
|
||||
"symfony/config": "<5.3",
|
||||
"symfony/finder": "<4.4",
|
||||
"symfony/proxy-manager-bridge": "<4.4",
|
||||
"symfony/yaml": "<4.4.26"
|
||||
"symfony/config": "<6.1",
|
||||
"symfony/finder": "<5.4",
|
||||
"symfony/proxy-manager-bridge": "<6.3",
|
||||
"symfony/yaml": "<5.4"
|
||||
},
|
||||
"provide": {
|
||||
"psr/container-implementation": "1.0",
|
||||
"symfony/service-implementation": "1.0|2.0"
|
||||
"psr/container-implementation": "1.1|2.0",
|
||||
"symfony/service-implementation": "1.1|2.0|3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "^5.3|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/yaml": "^4.4.26|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/config": "",
|
||||
"symfony/expression-language": "For using expressions in service container configuration",
|
||||
"symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
|
||||
"symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
|
||||
"symfony/yaml": ""
|
||||
"symfony/config": "^6.1|^7.0",
|
||||
"symfony/expression-language": "^5.4|^6.0|^7.0",
|
||||
"symfony/yaml": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2237,7 +2332,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/v5.4.24"
|
||||
"source": "https://github.com/symfony/dependency-injection/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2253,20 +2348,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-05T14:42:55+00:00"
|
||||
"time": "2025-06-23T06:49:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
"version": "v3.3.0",
|
||||
"version": "v3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
|
||||
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
|
||||
"reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2274,12 +2369,12 @@
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.4-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -2304,7 +2399,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.3.0"
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2320,29 +2415,32 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-23T14:45:45+00:00"
|
||||
"time": "2024-09-25T14:21:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/dotenv",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.16",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/dotenv.git",
|
||||
"reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3"
|
||||
"reference": "1ac5e7e7e862d4d574258daf08bd569ba926e4a5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/dotenv/zipball/77b7660bfcb85e8f28287d557d7af0046bcd2ca3",
|
||||
"reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3",
|
||||
"url": "https://api.github.com/repos/symfony/dotenv/zipball/1ac5e7e7e862d4d574258daf08bd569ba926e4a5",
|
||||
"reference": "1ac5e7e7e862d4d574258daf08bd569ba926e4a5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3"
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/console": "<5.4",
|
||||
"symfony/process": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/console": "^4.4|^5.0|^6.0",
|
||||
"symfony/process": "^4.4|^5.0|^6.0"
|
||||
"symfony/console": "^5.4|^6.0|^7.0",
|
||||
"symfony/process": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2375,7 +2473,7 @@
|
||||
"environment"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/dotenv/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/dotenv/tree/v6.4.16"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2391,31 +2489,35 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-09T20:36:58+00:00"
|
||||
"time": "2024-11-27T11:08:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/error-handler",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/error-handler.git",
|
||||
"reference": "c1b9be3b8a6f60f720bec28c4ffb6fb5b00a8946"
|
||||
"reference": "b088e0b175c30b4e06d8085200fa465b586f44fa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/error-handler/zipball/c1b9be3b8a6f60f720bec28c4ffb6fb5b00a8946",
|
||||
"reference": "c1b9be3b8a6f60f720bec28c4ffb6fb5b00a8946",
|
||||
"url": "https://api.github.com/repos/symfony/error-handler/zipball/b088e0b175c30b4e06d8085200fa465b586f44fa",
|
||||
"reference": "b088e0b175c30b4e06d8085200fa465b586f44fa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"php": ">=8.1",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/var-dumper": "^4.4|^5.0|^6.0"
|
||||
"symfony/var-dumper": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/deprecation-contracts": "<2.5",
|
||||
"symfony/http-kernel": "<6.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/http-kernel": "^4.4|^5.0|^6.0",
|
||||
"symfony/serializer": "^4.4|^5.0|^6.0"
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/http-kernel": "^6.4|^7.0",
|
||||
"symfony/serializer": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"bin": [
|
||||
"Resources/bin/patch-type-declarations"
|
||||
@ -2446,7 +2548,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/v5.4.24"
|
||||
"source": "https://github.com/symfony/error-handler/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2462,48 +2564,43 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-02T16:13:31+00:00"
|
||||
"time": "2025-06-13T07:39:48+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher.git",
|
||||
"reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f"
|
||||
"reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f",
|
||||
"reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e",
|
||||
"reference": "0ffc48080ab3e9132ea74ef4e09d8dcf26bf897e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/event-dispatcher-contracts": "^2|^3",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"php": ">=8.1",
|
||||
"symfony/event-dispatcher-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/dependency-injection": "<4.4"
|
||||
"symfony/dependency-injection": "<5.4",
|
||||
"symfony/service-contracts": "<2.5"
|
||||
},
|
||||
"provide": {
|
||||
"psr/event-dispatcher-implementation": "1.0",
|
||||
"symfony/event-dispatcher-implementation": "2.0"
|
||||
"symfony/event-dispatcher-implementation": "2.0|3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/error-handler": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^4.4|^5.0|^6.0",
|
||||
"symfony/service-contracts": "^1.1|^2|^3",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/dependency-injection": "",
|
||||
"symfony/http-kernel": ""
|
||||
"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/service-contracts": "^2.5|^3",
|
||||
"symfony/stopwatch": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2531,7 +2628,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/v5.4.22"
|
||||
"source": "https://github.com/symfony/event-dispatcher/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2547,20 +2644,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-17T11:31:58+00:00"
|
||||
"time": "2024-09-25T14:18:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
"version": "v3.3.0",
|
||||
"version": "v3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
|
||||
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
|
||||
"reference": "59eb412e93815df44f05f342958efa9f46b1e586"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
|
||||
"reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586",
|
||||
"reference": "59eb412e93815df44f05f342958efa9f46b1e586",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -2569,12 +2666,12 @@
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "3.4-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -2607,7 +2704,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0"
|
||||
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2623,27 +2720,93 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-23T14:45:45+00:00"
|
||||
"time": "2024-09-25T14:21:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v5.4.23",
|
||||
"name": "symfony/expression-language",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5"
|
||||
"url": "https://github.com/symfony/expression-language.git",
|
||||
"reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5",
|
||||
"reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5",
|
||||
"url": "https://api.github.com/repos/symfony/expression-language/zipball/3524904fb026356a5230cd197f9a4e6a61e0e7df",
|
||||
"reference": "3524904fb026356a5230cd197f9a4e6a61e0e7df",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"php": ">=8.1",
|
||||
"symfony/cache": "^5.4|^6.0|^7.0",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\ExpressionLanguage\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Provides an engine that can compile and evaluate expressions",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/expression-language/tree/v6.4.13"
|
||||
},
|
||||
"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-10-09T08:40:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3",
|
||||
"reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-mbstring": "~1.8",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"symfony/polyfill-mbstring": "~1.8"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/process": "^5.4|^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2671,7 +2834,7 @@
|
||||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v5.4.23"
|
||||
"source": "https://github.com/symfony/filesystem/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2687,26 +2850,27 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-02T11:38:35+00:00"
|
||||
"time": "2024-10-25T15:07:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
"version": "v5.4.21",
|
||||
"version": "v6.4.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/finder.git",
|
||||
"reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19"
|
||||
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19",
|
||||
"reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19",
|
||||
"url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
|
||||
"reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/filesystem": "^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2734,7 +2898,7 @@
|
||||
"description": "Finds files and directories via an intuitive fluent interface",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/finder/tree/v5.4.21"
|
||||
"source": "https://github.com/symfony/finder/tree/v6.4.17"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2750,26 +2914,29 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-16T09:33:00+00:00"
|
||||
"time": "2024-12-29T13:51:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/flex",
|
||||
"version": "v2.3.1",
|
||||
"version": "v2.8.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/flex.git",
|
||||
"reference": "3c9c3424efdafe33e0e3cfb5e87e50b34711fedf"
|
||||
"reference": "423c36e369361003dc31ef11c5f15fb589e52c01"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/flex/zipball/3c9c3424efdafe33e0e3cfb5e87e50b34711fedf",
|
||||
"reference": "3c9c3424efdafe33e0e3cfb5e87e50b34711fedf",
|
||||
"url": "https://api.github.com/repos/symfony/flex/zipball/423c36e369361003dc31ef11c5f15fb589e52c01",
|
||||
"reference": "423c36e369361003dc31ef11c5f15fb589e52c01",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-plugin-api": "^2.1",
|
||||
"php": ">=8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"composer/semver": "<1.7.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "^2.1",
|
||||
"symfony/dotenv": "^5.4|^6.0",
|
||||
@ -2799,7 +2966,7 @@
|
||||
"description": "Composer plugin for Symfony",
|
||||
"support": {
|
||||
"issues": "https://github.com/symfony/flex/issues",
|
||||
"source": "https://github.com/symfony/flex/tree/v2.3.1"
|
||||
"source": "https://github.com/symfony/flex/tree/v2.8.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2815,65 +2982,60 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-27T07:38:25+00:00"
|
||||
"time": "2025-07-05T07:45:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/form",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/form.git",
|
||||
"reference": "813b79a34ab9843b5a01a6f809f1e4a009aaea2e"
|
||||
"reference": "6f60a2a9031c49fe92b8703764defa46481db155"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/form/zipball/813b79a34ab9843b5a01a6f809f1e4a009aaea2e",
|
||||
"reference": "813b79a34ab9843b5a01a6f809f1e4a009aaea2e",
|
||||
"url": "https://api.github.com/repos/symfony/form/zipball/6f60a2a9031c49fe92b8703764defa46481db155",
|
||||
"reference": "6f60a2a9031c49fe92b8703764defa46481db155",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
|
||||
"symfony/options-resolver": "^5.1|^6.0",
|
||||
"php": ">=8.1",
|
||||
"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/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-intl-icu": "^1.21",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/polyfill-php81": "^1.23",
|
||||
"symfony/property-access": "^5.0.8|^6.0",
|
||||
"symfony/service-contracts": "^1.1|^2|^3"
|
||||
"symfony/property-access": "^5.4|^6.0|^7.0",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/console": "<4.4",
|
||||
"symfony/dependency-injection": "<4.4",
|
||||
"symfony/console": "<5.4",
|
||||
"symfony/dependency-injection": "<5.4",
|
||||
"symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7",
|
||||
"symfony/error-handler": "<4.4.5",
|
||||
"symfony/framework-bundle": "<4.4",
|
||||
"symfony/http-kernel": "<4.4",
|
||||
"symfony/translation": "<4.4",
|
||||
"symfony/translation-contracts": "<1.1.7",
|
||||
"symfony/twig-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/translation-contracts": "<2.5",
|
||||
"symfony/twig-bridge": "<6.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/collections": "^1.0|^2.0",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/console": "^5.4|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-kernel": "^4.4|^5.0|^6.0",
|
||||
"symfony/intl": "^4.4|^5.0|^6.0",
|
||||
"symfony/security-csrf": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation": "^4.4|^5.0|^6.0",
|
||||
"symfony/uid": "^5.1|^6.0",
|
||||
"symfony/validator": "^4.4.17|^5.1.9|^6.0",
|
||||
"symfony/var-dumper": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/security-csrf": "For protecting forms against CSRF attacks.",
|
||||
"symfony/twig-bridge": "For templating with Twig.",
|
||||
"symfony/validator": "For form validation."
|
||||
"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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -2901,7 +3063,7 @@
|
||||
"description": "Allows to easily create, process and reuse HTML forms",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/form/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/form/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -2917,113 +3079,112 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-25T13:05:00+00:00"
|
||||
"time": "2025-06-05T16:22:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/framework-bundle",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/framework-bundle.git",
|
||||
"reference": "c06a56a47817d29318aaace1c655cbde16c998e8"
|
||||
"reference": "ff892d3ab4b8aa35921bc2120a4b31d57948fe22"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c06a56a47817d29318aaace1c655cbde16c998e8",
|
||||
"reference": "c06a56a47817d29318aaace1c655cbde16c998e8",
|
||||
"url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ff892d3ab4b8aa35921bc2120a4b31d57948fe22",
|
||||
"reference": "ff892d3ab4b8aa35921bc2120a4b31d57948fe22",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-runtime-api": ">=2.1",
|
||||
"ext-xml": "*",
|
||||
"php": ">=7.2.5",
|
||||
"symfony/cache": "^5.2|^6.0",
|
||||
"symfony/config": "^5.3|^6.0",
|
||||
"symfony/dependency-injection": "^5.4.5|^6.0.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/error-handler": "^4.4.1|^5.0.1|^6.0",
|
||||
"symfony/event-dispatcher": "^5.1|^6.0",
|
||||
"symfony/filesystem": "^4.4|^5.0|^6.0",
|
||||
"symfony/finder": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^5.4.24|^6.2.11",
|
||||
"symfony/http-kernel": "^5.4|^6.0",
|
||||
"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",
|
||||
"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/http-foundation": "^6.4|^7.0",
|
||||
"symfony/http-kernel": "^6.4",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/polyfill-php81": "^1.22",
|
||||
"symfony/routing": "^5.3|^6.0"
|
||||
"symfony/routing": "^6.4|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/annotations": "<1.13.1",
|
||||
"doctrine/cache": "<1.11",
|
||||
"doctrine/persistence": "<1.3",
|
||||
"phpdocumentor/reflection-docblock": "<3.2.2",
|
||||
"phpdocumentor/type-resolver": "<1.4.0",
|
||||
"symfony/asset": "<5.3",
|
||||
"symfony/console": "<5.2.5",
|
||||
"symfony/dom-crawler": "<4.4",
|
||||
"symfony/dotenv": "<5.1",
|
||||
"symfony/form": "<5.2",
|
||||
"symfony/http-client": "<4.4",
|
||||
"symfony/lock": "<4.4",
|
||||
"symfony/mailer": "<5.2",
|
||||
"symfony/messenger": "<5.4",
|
||||
"symfony/mime": "<4.4",
|
||||
"symfony/property-access": "<5.3",
|
||||
"symfony/property-info": "<4.4",
|
||||
"symfony/security-csrf": "<5.3",
|
||||
"symfony/serializer": "<5.2",
|
||||
"symfony/service-contracts": ">=3.0",
|
||||
"symfony/stopwatch": "<4.4",
|
||||
"symfony/translation": "<5.3",
|
||||
"symfony/twig-bridge": "<4.4",
|
||||
"symfony/twig-bundle": "<4.4",
|
||||
"symfony/validator": "<5.2",
|
||||
"symfony/web-profiler-bundle": "<4.4",
|
||||
"symfony/workflow": "<5.2"
|
||||
"symfony/asset": "<5.4",
|
||||
"symfony/asset-mapper": "<6.4",
|
||||
"symfony/clock": "<6.3",
|
||||
"symfony/console": "<5.4|>=7.0",
|
||||
"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/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/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/translation": "<6.4",
|
||||
"symfony/twig-bridge": "<5.4",
|
||||
"symfony/twig-bundle": "<5.4",
|
||||
"symfony/validator": "<6.4",
|
||||
"symfony/web-profiler-bundle": "<6.4",
|
||||
"symfony/workflow": "<6.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.13.1|^2",
|
||||
"doctrine/cache": "^1.11|^2.0",
|
||||
"doctrine/persistence": "^1.3|^2|^3",
|
||||
"dragonmantank/cron-expression": "^3.1",
|
||||
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
|
||||
"symfony/asset": "^5.3|^6.0",
|
||||
"symfony/browser-kit": "^5.4|^6.0",
|
||||
"symfony/console": "^5.4.9|^6.0.9",
|
||||
"symfony/css-selector": "^4.4|^5.0|^6.0",
|
||||
"symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0",
|
||||
"symfony/dotenv": "^5.1|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/form": "^5.2|^6.0",
|
||||
"symfony/http-client": "^4.4|^5.0|^6.0",
|
||||
"symfony/lock": "^4.4|^5.0|^6.0",
|
||||
"symfony/mailer": "^5.2|^6.0",
|
||||
"symfony/messenger": "^5.4|^6.0",
|
||||
"symfony/mime": "^4.4|^5.0|^6.0",
|
||||
"symfony/notifier": "^5.4|^6.0",
|
||||
"seld/jsonlint": "^1.10",
|
||||
"symfony/asset": "^5.4|^6.0|^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/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/mime": "^6.4|^7.0",
|
||||
"symfony/notifier": "^5.4|^6.0|^7.0",
|
||||
"symfony/polyfill-intl-icu": "~1.0",
|
||||
"symfony/process": "^4.4|^5.0|^6.0",
|
||||
"symfony/property-info": "^4.4|^5.0|^6.0",
|
||||
"symfony/rate-limiter": "^5.2|^6.0",
|
||||
"symfony/security-bundle": "^5.4|^6.0",
|
||||
"symfony/serializer": "^5.4|^6.0",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.0",
|
||||
"symfony/string": "^5.0|^6.0",
|
||||
"symfony/translation": "^5.3|^6.0",
|
||||
"symfony/twig-bundle": "^4.4|^5.0|^6.0",
|
||||
"symfony/validator": "^5.2|^6.0",
|
||||
"symfony/web-link": "^4.4|^5.0|^6.0",
|
||||
"symfony/workflow": "^5.2|^6.0",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.0",
|
||||
"twig/twig": "^2.10|^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-apcu": "For best performance of the system caches",
|
||||
"symfony/console": "For using the console commands",
|
||||
"symfony/form": "For using forms",
|
||||
"symfony/property-info": "For using the property_info service",
|
||||
"symfony/serializer": "For using the serializer service",
|
||||
"symfony/validator": "For using validation",
|
||||
"symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering",
|
||||
"symfony/yaml": "For using the debug:config and lint:yaml commands"
|
||||
"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/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/translation": "^6.4|^7.0",
|
||||
"symfony/twig-bundle": "^5.4|^6.0|^7.0",
|
||||
"symfony/uid": "^5.4|^6.0|^7.0",
|
||||
"symfony/validator": "^6.4|^7.0",
|
||||
"symfony/web-link": "^5.4|^6.0|^7.0",
|
||||
"symfony/workflow": "^6.4|^7.0",
|
||||
"symfony/yaml": "^5.4|^6.0|^7.0",
|
||||
"twig/twig": "^2.10|^3.0.4"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"autoload": {
|
||||
@ -3051,7 +3212,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/v5.4.24"
|
||||
"source": "https://github.com/symfony/framework-bundle/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3067,51 +3228,53 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-25T13:05:00+00:00"
|
||||
"time": "2025-06-26T21:24:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-client.git",
|
||||
"reference": "9e89ac4c9dfe29f4ed2b10a36e62720286632ad6"
|
||||
"reference": "19f11e742b94dcfd968a54f5381bb9082a88cb57"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-client/zipball/9e89ac4c9dfe29f4ed2b10a36e62720286632ad6",
|
||||
"reference": "9e89ac4c9dfe29f4ed2b10a36e62720286632ad6",
|
||||
"url": "https://api.github.com/repos/symfony/http-client/zipball/19f11e742b94dcfd968a54f5381bb9082a88cb57",
|
||||
"reference": "19f11e742b94dcfd968a54f5381bb9082a88cb57",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"php": ">=8.1",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/http-client-contracts": "^2.4",
|
||||
"symfony/polyfill-php73": "^1.11",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/service-contracts": "^1.0|^2|^3"
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/http-client-contracts": "~3.4.4|^3.5.2",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"php-http/discovery": "<1.15",
|
||||
"symfony/http-foundation": "<6.3"
|
||||
},
|
||||
"provide": {
|
||||
"php-http/async-client-implementation": "*",
|
||||
"php-http/client-implementation": "*",
|
||||
"psr/http-client-implementation": "1.0",
|
||||
"symfony/http-client-implementation": "2.4"
|
||||
"symfony/http-client-implementation": "3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"amphp/amp": "^2.5",
|
||||
"amphp/http-client": "^4.2.1",
|
||||
"amphp/http-tunnel": "^1.0",
|
||||
"amphp/socket": "^1.1",
|
||||
"guzzlehttp/promises": "^1.4",
|
||||
"guzzlehttp/promises": "^1.4|^2.0",
|
||||
"nyholm/psr7": "^1.0",
|
||||
"php-http/httplug": "^1.0|^2.0",
|
||||
"php-http/message-factory": "^1.0",
|
||||
"psr/http-client": "^1.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-kernel": "^4.4.13|^5.1.5|^6.0",
|
||||
"symfony/process": "^4.4|^5.0|^6.0",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -3142,7 +3305,7 @@
|
||||
"http"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-client/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/http-client/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3158,42 +3321,42 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-07T13:11:28+00:00"
|
||||
"time": "2025-06-27T20:02:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-client-contracts",
|
||||
"version": "v2.5.2",
|
||||
"version": "v3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-client-contracts.git",
|
||||
"reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70"
|
||||
"reference": "75d7043853a42837e68111812f4d964b01e5101c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70",
|
||||
"reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70",
|
||||
"url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c",
|
||||
"reference": "75d7043853a42837e68111812f4d964b01e5101c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/http-client-implementation": ""
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Contracts\\HttpClient\\": ""
|
||||
}
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Test/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
@ -3220,7 +3383,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2"
|
||||
"source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3236,39 +3399,40 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-04-12T15:48:08+00:00"
|
||||
"time": "2025-04-29T11:18:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-foundation.git",
|
||||
"reference": "3c59f97f6249ce552a44f01b93bfcbd786a954f5"
|
||||
"reference": "452d19f945ee41345fd8a50c18b60783546b7bd3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/3c59f97f6249ce552a44f01b93bfcbd786a954f5",
|
||||
"reference": "3c59f97f6249ce552a44f01b93bfcbd786a954f5",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/452d19f945ee41345fd8a50c18b60783546b7bd3",
|
||||
"reference": "452d19f945ee41345fd8a50c18b60783546b7bd3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-mbstring": "~1.1",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"symfony/polyfill-php83": "^1.27"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/cache": "<6.4.12|>=7.0,<7.1.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"predis/predis": "~1.0",
|
||||
"symfony/cache": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^5.4|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
|
||||
"symfony/mime": "^4.4|^5.0|^6.0",
|
||||
"symfony/rate-limiter": "^5.2|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/mime": "To use the file extension guesser"
|
||||
"doctrine/dbal": "^2.13.1|^3|^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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -3296,7 +3460,7 @@
|
||||
"description": "Defines an object-oriented layer for the HTTP specification",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/http-foundation/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3312,76 +3476,78 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-19T07:21:23+00:00"
|
||||
"time": "2025-05-26T09:17:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-kernel.git",
|
||||
"reference": "f38b722e1557eb3f487d351b48f5a1279b50e9d1"
|
||||
"reference": "2bb2cba685aabd859f22cf6946554e8e7f3c329a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/f38b722e1557eb3f487d351b48f5a1279b50e9d1",
|
||||
"reference": "f38b722e1557eb3f487d351b48f5a1279b50e9d1",
|
||||
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/2bb2cba685aabd859f22cf6946554e8e7f3c329a",
|
||||
"reference": "2bb2cba685aabd859f22cf6946554e8e7f3c329a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/log": "^1|^2",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/error-handler": "^4.4|^5.0|^6.0",
|
||||
"symfony/event-dispatcher": "^5.0|^6.0",
|
||||
"symfony/http-foundation": "^5.4.21|^6.2.7",
|
||||
"symfony/polyfill-ctype": "^1.8",
|
||||
"symfony/polyfill-php73": "^1.9",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"php": ">=8.1",
|
||||
"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/http-foundation": "^6.4|^7.0",
|
||||
"symfony/polyfill-ctype": "^1.8"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/browser-kit": "<5.4",
|
||||
"symfony/cache": "<5.0",
|
||||
"symfony/config": "<5.0",
|
||||
"symfony/console": "<4.4",
|
||||
"symfony/dependency-injection": "<5.3",
|
||||
"symfony/doctrine-bridge": "<5.0",
|
||||
"symfony/form": "<5.0",
|
||||
"symfony/http-client": "<5.0",
|
||||
"symfony/mailer": "<5.0",
|
||||
"symfony/messenger": "<5.0",
|
||||
"symfony/translation": "<5.0",
|
||||
"symfony/twig-bridge": "<5.0",
|
||||
"symfony/validator": "<5.0",
|
||||
"symfony/cache": "<5.4",
|
||||
"symfony/config": "<6.1",
|
||||
"symfony/console": "<5.4",
|
||||
"symfony/dependency-injection": "<6.4",
|
||||
"symfony/doctrine-bridge": "<5.4",
|
||||
"symfony/form": "<5.4",
|
||||
"symfony/http-client": "<5.4",
|
||||
"symfony/http-client-contracts": "<2.5",
|
||||
"symfony/mailer": "<5.4",
|
||||
"symfony/messenger": "<5.4",
|
||||
"symfony/translation": "<5.4",
|
||||
"symfony/translation-contracts": "<2.5",
|
||||
"symfony/twig-bridge": "<5.4",
|
||||
"symfony/validator": "<6.4",
|
||||
"symfony/var-dumper": "<6.3",
|
||||
"twig/twig": "<2.13"
|
||||
},
|
||||
"provide": {
|
||||
"psr/log-implementation": "1.0|2.0"
|
||||
"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",
|
||||
"symfony/config": "^5.0|^6.0",
|
||||
"symfony/console": "^4.4|^5.0|^6.0",
|
||||
"symfony/css-selector": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^5.3|^6.0",
|
||||
"symfony/dom-crawler": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/finder": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-client-contracts": "^1.1|^2|^3",
|
||||
"symfony/process": "^4.4|^5.0|^6.0",
|
||||
"symfony/routing": "^4.4|^5.0|^6.0",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation-contracts": "^1.1|^2|^3",
|
||||
"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/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/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/translation-contracts": "^2.5|^3",
|
||||
"symfony/uid": "^5.4|^6.0|^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"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/browser-kit": "",
|
||||
"symfony/config": "",
|
||||
"symfony/console": "",
|
||||
"symfony/dependency-injection": ""
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@ -3408,7 +3574,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/v5.4.24"
|
||||
"source": "https://github.com/symfony/http-kernel/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3424,106 +3590,25 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-27T08:06:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/lock",
|
||||
"version": "v5.4.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/lock.git",
|
||||
"reference": "cc0565235e16ef403097fbd30eba59690bee6b3c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/lock/zipball/cc0565235e16ef403097fbd30eba59690bee6b3c",
|
||||
"reference": "cc0565235e16ef403097fbd30eba59690bee6b3c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/dbal": "<2.13"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/dbal": "^2.13|^3.0",
|
||||
"predis/predis": "~1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Lock\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jérémy Derussé",
|
||||
"email": "jeremy@derusse.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Creates and manages locks, a mechanism to provide exclusive access to a shared resource",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"cas",
|
||||
"flock",
|
||||
"locking",
|
||||
"mutex",
|
||||
"redlock",
|
||||
"semaphore"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/lock/tree/v5.4.22"
|
||||
},
|
||||
"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": "2023-03-10T16:52:09+00:00"
|
||||
"time": "2025-06-28T08:14:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/options-resolver",
|
||||
"version": "v5.4.21",
|
||||
"version": "v6.4.16",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/options-resolver.git",
|
||||
"reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9"
|
||||
"reference": "368128ad168f20e22c32159b9f761e456cec0c78"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
|
||||
"reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
|
||||
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/368128ad168f20e22c32159b9f761e456cec0c78",
|
||||
"reference": "368128ad168f20e22c32159b9f761e456cec0c78",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php73": "~1.0",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -3556,7 +3641,7 @@
|
||||
"options"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/options-resolver/tree/v5.4.21"
|
||||
"source": "https://github.com/symfony/options-resolver/tree/v6.4.16"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3572,32 +3657,31 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-14T08:03:56+00:00"
|
||||
"time": "2024-11-20T10:57:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/password-hasher",
|
||||
"version": "v5.4.21",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/password-hasher.git",
|
||||
"reference": "7ce4529b2b2ea7de3b6f344a1a41f58201999180"
|
||||
"reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/password-hasher/zipball/7ce4529b2b2ea7de3b6f344a1a41f58201999180",
|
||||
"reference": "7ce4529b2b2ea7de3b6f344a1a41f58201999180",
|
||||
"url": "https://api.github.com/repos/symfony/password-hasher/zipball/e97a1b31f60b8bdfc1fdedab4398538da9441d47",
|
||||
"reference": "e97a1b31f60b8bdfc1fdedab4398538da9441d47",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-php80": "^1.15"
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/security-core": "<5.3"
|
||||
"symfony/security-core": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/console": "^5.3|^6.0",
|
||||
"symfony/security-core": "^5.3|^6.0"
|
||||
"symfony/console": "^5.4|^6.0|^7.0",
|
||||
"symfony/security-core": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -3629,7 +3713,7 @@
|
||||
"password"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/password-hasher/tree/v5.4.21"
|
||||
"source": "https://github.com/symfony/password-hasher/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3645,36 +3729,33 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-14T08:03:56+00:00"
|
||||
"time": "2024-09-25T14:18:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-grapheme",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.32.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
||||
"reference": "511a08c03c1960e08a883f4cffcacd219b758354"
|
||||
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
|
||||
"reference": "511a08c03c1960e08a883f4cffcacd219b758354",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
|
||||
"reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -3710,7 +3791,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3726,36 +3807,33 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-icu",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.32.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-icu.git",
|
||||
"reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c"
|
||||
"reference": "763d2a91fea5681509ca01acbc1c5e450d127811"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
|
||||
"reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/763d2a91fea5681509ca01acbc1c5e450d127811",
|
||||
"reference": "763d2a91fea5681509ca01acbc1c5e450d127811",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance and support of other locales than \"en\""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -3797,7 +3875,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.32.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3813,36 +3891,33 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2024-12-21T18:38:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-normalizer",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.32.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
|
||||
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"reference": "3833d7255cc303546435cb650316bff708a1c75c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-intl": "For best performance"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -3881,7 +3956,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3897,24 +3972,25 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.32.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
|
||||
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
|
||||
"reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"ext-iconv": "*",
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"provide": {
|
||||
"ext-mbstring": "*"
|
||||
@ -3924,12 +4000,9 @@
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -3964,7 +4037,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -3980,112 +4053,30 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php73",
|
||||
"version": "v1.27.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php73.git",
|
||||
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
|
||||
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php73\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php73/tree/v1.27.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": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2024-12-23T08:48:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.27.0",
|
||||
"version": "v1.32.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
|
||||
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
|
||||
"reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -4126,7 +4117,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4142,33 +4133,30 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2025-01-02T08:10:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php81",
|
||||
"version": "v1.27.0",
|
||||
"name": "symfony/polyfill-php83",
|
||||
"version": "v1.32.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php81.git",
|
||||
"reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
|
||||
"url": "https://github.com/symfony/polyfill-php83.git",
|
||||
"reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
|
||||
"reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
|
||||
"reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
"url": "https://github.com/symfony/polyfill",
|
||||
"name": "symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -4176,7 +4164,7 @@
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php81\\": ""
|
||||
"Symfony\\Polyfill\\Php83\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
@ -4196,7 +4184,7 @@
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
|
||||
"description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
@ -4205,7 +4193,7 @@
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
|
||||
"source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4221,33 +4209,29 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
"time": "2024-09-09T11:45:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/property-access",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.18",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/property-access.git",
|
||||
"reference": "ffee082889586b5718347b291e04071f4d07b38f"
|
||||
"reference": "80e0378f2f058b60d87dedc3c760caec882e992c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/property-access/zipball/ffee082889586b5718347b291e04071f4d07b38f",
|
||||
"reference": "ffee082889586b5718347b291e04071f4d07b38f",
|
||||
"url": "https://api.github.com/repos/symfony/property-access/zipball/80e0378f2f058b60d87dedc3c760caec882e992c",
|
||||
"reference": "80e0378f2f058b60d87dedc3c760caec882e992c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/property-info": "^5.2|^6.0"
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/property-info": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/cache": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/cache-implementation": "To cache access methods."
|
||||
"symfony/cache": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -4286,7 +4270,7 @@
|
||||
"reflection"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/property-access/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/property-access/tree/v6.4.18"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4302,46 +4286,41 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-14T14:59:20+00:00"
|
||||
"time": "2024-12-16T14:42:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/property-info",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.18",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/property-info.git",
|
||||
"reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1"
|
||||
"reference": "94d18e5cc11a37fd92856d38b61d9cdf72536a1e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1",
|
||||
"reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1",
|
||||
"url": "https://api.github.com/repos/symfony/property-info/zipball/94d18e5cc11a37fd92856d38b61d9cdf72536a1e",
|
||||
"reference": "94d18e5cc11a37fd92856d38b61d9cdf72536a1e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/string": "^5.1|^6.0"
|
||||
"php": ">=8.1",
|
||||
"symfony/string": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpdocumentor/reflection-docblock": "<3.2.2",
|
||||
"phpdocumentor/type-resolver": "<1.4.0",
|
||||
"symfony/dependency-injection": "<4.4"
|
||||
"doctrine/annotations": "<1.12",
|
||||
"phpdocumentor/reflection-docblock": "<5.2",
|
||||
"phpdocumentor/type-resolver": "<1.5.1",
|
||||
"symfony/cache": "<5.4",
|
||||
"symfony/dependency-injection": "<5.4|>=6.0,<6.4",
|
||||
"symfony/serializer": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.10.4|^2",
|
||||
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
|
||||
"phpstan/phpdoc-parser": "^1.0",
|
||||
"symfony/cache": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/serializer": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"phpdocumentor/reflection-docblock": "To use the PHPDoc",
|
||||
"psr/cache-implementation": "To cache results",
|
||||
"symfony/doctrine-bridge": "To use Doctrine metadata",
|
||||
"symfony/serializer": "To use Serializer metadata"
|
||||
"doctrine/annotations": "^1.12|^2",
|
||||
"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/serializer": "^5.4|^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -4377,7 +4356,7 @@
|
||||
"validator"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/property-info/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/property-info/tree/v6.4.18"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4393,46 +4372,42 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-15T20:11:03+00:00"
|
||||
"time": "2025-01-21T10:52:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/psr-http-message-bridge",
|
||||
"version": "v2.2.0",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/psr-http-message-bridge.git",
|
||||
"reference": "28a732c05bbad801304ad5a5c674cf2970508993"
|
||||
"reference": "c9cf83326a1074f83a738fc5320945abf7fb7fec"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/28a732c05bbad801304ad5a5c674cf2970508993",
|
||||
"reference": "28a732c05bbad801304ad5a5c674cf2970508993",
|
||||
"url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/c9cf83326a1074f83a738fc5320945abf7fb7fec",
|
||||
"reference": "c9cf83326a1074f83a738fc5320945abf7fb7fec",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/http-message": "^1.0 || ^2.0",
|
||||
"symfony/http-foundation": "^5.4 || ^6.0"
|
||||
"php": ">=8.1",
|
||||
"psr/http-message": "^1.0|^2.0",
|
||||
"symfony/http-foundation": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"php-http/discovery": "<1.15",
|
||||
"symfony/http-kernel": "<6.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"nyholm/psr7": "^1.1",
|
||||
"psr/log": "^1.1 || ^2 || ^3",
|
||||
"symfony/browser-kit": "^5.4 || ^6.0",
|
||||
"symfony/config": "^5.4 || ^6.0",
|
||||
"symfony/event-dispatcher": "^5.4 || ^6.0",
|
||||
"symfony/framework-bundle": "^5.4 || ^6.0",
|
||||
"symfony/http-kernel": "^5.4 || ^6.0",
|
||||
"symfony/phpunit-bridge": "^6.2"
|
||||
},
|
||||
"suggest": {
|
||||
"nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
|
||||
"php-http/discovery": "^1.15",
|
||||
"psr/log": "^1.1.4|^2|^3",
|
||||
"symfony/browser-kit": "^5.4|^6.0|^7.0",
|
||||
"symfony/config": "^5.4|^6.0|^7.0",
|
||||
"symfony/event-dispatcher": "^5.4|^6.0|^7.0",
|
||||
"symfony/framework-bundle": "^6.2|^7.0",
|
||||
"symfony/http-kernel": "^6.2|^7.0"
|
||||
},
|
||||
"type": "symfony-bridge",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.2-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Bridge\\PsrHttpMessage\\": ""
|
||||
@ -4452,11 +4427,11 @@
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "http://symfony.com/contributors"
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "PSR HTTP message bridge",
|
||||
"homepage": "http://symfony.com",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-message",
|
||||
@ -4464,8 +4439,7 @@
|
||||
"psr-7"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/symfony/psr-http-message-bridge/issues",
|
||||
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.2.0"
|
||||
"source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4481,29 +4455,30 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-21T08:40:19+00:00"
|
||||
"time": "2024-09-25T14:18:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/rate-limiter",
|
||||
"version": "v5.4.21",
|
||||
"version": "v6.4.15",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/rate-limiter.git",
|
||||
"reference": "342acb2d23f6012f6150e7a8b167bf9cd931c0f8"
|
||||
"reference": "e250d82fc17b277b97cbce94efef5414aff29bf9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/rate-limiter/zipball/342acb2d23f6012f6150e7a8b167bf9cd931c0f8",
|
||||
"reference": "342acb2d23f6012f6150e7a8b167bf9cd931c0f8",
|
||||
"url": "https://api.github.com/repos/symfony/rate-limiter/zipball/e250d82fc17b277b97cbce94efef5414aff29bf9",
|
||||
"reference": "e250d82fc17b277b97cbce94efef5414aff29bf9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/lock": "^5.2|^6.0",
|
||||
"symfony/options-resolver": "^5.1|^6.0"
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/options-resolver": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/cache": "^1.0|^2.0|^3.0"
|
||||
"psr/cache": "^1.0|^2.0|^3.0",
|
||||
"symfony/lock": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -4535,7 +4510,7 @@
|
||||
"rate-limiter"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/rate-limiter/tree/v5.4.21"
|
||||
"source": "https://github.com/symfony/rate-limiter/tree/v6.4.15"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4551,47 +4526,40 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-21T19:46:44+00:00"
|
||||
"time": "2024-11-09T07:19:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/routing",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/routing.git",
|
||||
"reference": "c2ac11eb34947999b7c38fb4c835a57306907e6d"
|
||||
"reference": "1f5234e8457164a3a0038a4c0a4ba27876a9c670"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/routing/zipball/c2ac11eb34947999b7c38fb4c835a57306907e6d",
|
||||
"reference": "c2ac11eb34947999b7c38fb4c835a57306907e6d",
|
||||
"url": "https://api.github.com/repos/symfony/routing/zipball/1f5234e8457164a3a0038a4c0a4ba27876a9c670",
|
||||
"reference": "1f5234e8457164a3a0038a4c0a4ba27876a9c670",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/annotations": "<1.12",
|
||||
"symfony/config": "<5.3",
|
||||
"symfony/dependency-injection": "<4.4",
|
||||
"symfony/yaml": "<4.4"
|
||||
"symfony/config": "<6.2",
|
||||
"symfony/dependency-injection": "<5.4",
|
||||
"symfony/yaml": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.12|^2",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/config": "^5.3|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^4.4|^5.0|^6.0",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/config": "For using the all-in-one router or any loader",
|
||||
"symfony/expression-language": "For using expression matching",
|
||||
"symfony/http-foundation": "For using a Symfony Request object",
|
||||
"symfony/yaml": "For using the YAML loader"
|
||||
"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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -4625,7 +4593,7 @@
|
||||
"url"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/routing/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/routing/tree/v6.4.22"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4641,36 +4609,35 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-14T14:59:20+00:00"
|
||||
"time": "2025-04-27T16:08:38+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/runtime",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/runtime.git",
|
||||
"reference": "4a78e519d40a3845437e29dc514959631badfed4"
|
||||
"reference": "ef1f03c2ab1144ac4ef7744b9e026bdb06f2f88f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/runtime/zipball/4a78e519d40a3845437e29dc514959631badfed4",
|
||||
"reference": "4a78e519d40a3845437e29dc514959631badfed4",
|
||||
"url": "https://api.github.com/repos/symfony/runtime/zipball/ef1f03c2ab1144ac4ef7744b9e026bdb06f2f88f",
|
||||
"reference": "ef1f03c2ab1144ac4ef7744b9e026bdb06f2f88f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-plugin-api": "^1.0|^2.0",
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-php80": "^1.15"
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/dotenv": "<5.1"
|
||||
"symfony/dotenv": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"composer/composer": "^1.0.2|^2.0",
|
||||
"symfony/console": "^4.4.30|^5.3.7|^6.0",
|
||||
"symfony/dotenv": "^5.1|^6.0",
|
||||
"symfony/http-foundation": "^4.4.30|^5.3.7|^6.0",
|
||||
"symfony/http-kernel": "^4.4.30|^5.3.7|^6.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"
|
||||
},
|
||||
"type": "composer-plugin",
|
||||
"extra": {
|
||||
@ -4705,7 +4672,7 @@
|
||||
"runtime"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/runtime/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/runtime/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4721,65 +4688,75 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-14T15:48:23+00:00"
|
||||
"time": "2025-06-13T07:44:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/security-bundle",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/security-bundle.git",
|
||||
"reference": "36eddff8266126de032ab528417ad13eb43f6cb5"
|
||||
"reference": "3db1460f539b23e74a119981ea6b3002302250bc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/36eddff8266126de032ab528417ad13eb43f6cb5",
|
||||
"reference": "36eddff8266126de032ab528417ad13eb43f6cb5",
|
||||
"url": "https://api.github.com/repos/symfony/security-bundle/zipball/3db1460f539b23e74a119981ea6b3002302250bc",
|
||||
"reference": "3db1460f539b23e74a119981ea6b3002302250bc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer-runtime-api": ">=2.1",
|
||||
"ext-xml": "*",
|
||||
"php": ">=7.2.5",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^5.3|^6.0",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/event-dispatcher": "^5.1|^6.0",
|
||||
"symfony/http-foundation": "^5.3|^6.0",
|
||||
"symfony/http-kernel": "^5.3|^6.0",
|
||||
"symfony/password-hasher": "^5.3|^6.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/security-core": "^5.4|^6.0",
|
||||
"symfony/security-csrf": "^4.4|^5.0|^6.0",
|
||||
"symfony/security-guard": "^5.3",
|
||||
"symfony/security-http": "^5.4.20|~6.0.20|~6.1.12|^6.2.6"
|
||||
"php": ">=8.1",
|
||||
"symfony/clock": "^6.3|^7.0",
|
||||
"symfony/config": "^6.1|^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/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/browser-kit": "<4.4",
|
||||
"symfony/console": "<4.4",
|
||||
"symfony/framework-bundle": "<4.4",
|
||||
"symfony/ldap": "<5.1",
|
||||
"symfony/twig-bundle": "<4.4"
|
||||
"symfony/browser-kit": "<5.4",
|
||||
"symfony/console": "<5.4",
|
||||
"symfony/framework-bundle": "<6.4",
|
||||
"symfony/http-client": "<5.4",
|
||||
"symfony/ldap": "<5.4",
|
||||
"symfony/serializer": "<6.4",
|
||||
"symfony/twig-bundle": "<5.4",
|
||||
"symfony/validator": "<6.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.10.4|^2",
|
||||
"symfony/asset": "^4.4|^5.0|^6.0",
|
||||
"symfony/browser-kit": "^4.4|^5.0|^6.0",
|
||||
"symfony/console": "^4.4|^5.0|^6.0",
|
||||
"symfony/css-selector": "^4.4|^5.0|^6.0",
|
||||
"symfony/dom-crawler": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/form": "^4.4|^5.0|^6.0",
|
||||
"symfony/framework-bundle": "^5.3|^6.0",
|
||||
"symfony/ldap": "^5.3|^6.0",
|
||||
"symfony/process": "^4.4|^5.0|^6.0",
|
||||
"symfony/rate-limiter": "^5.2|^6.0",
|
||||
"symfony/serializer": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation": "^4.4|^5.0|^6.0",
|
||||
"symfony/twig-bridge": "^4.4|^5.0|^6.0",
|
||||
"symfony/twig-bundle": "^4.4|^5.0|^6.0",
|
||||
"symfony/validator": "^4.4|^5.0|^6.0",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.0",
|
||||
"twig/twig": "^2.13|^3.0.4"
|
||||
"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/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/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/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"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"autoload": {
|
||||
@ -4807,7 +4784,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/v5.4.22"
|
||||
"source": "https://github.com/symfony/security-bundle/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4823,56 +4800,49 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-10T10:02:45+00:00"
|
||||
"time": "2025-06-23T20:18:57+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/security-core",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/security-core.git",
|
||||
"reference": "a801d525c7545332e2ddf7f52c163959354b1650"
|
||||
"reference": "527780a0482e592530174ca90e6189f64cdf6569"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/security-core/zipball/a801d525c7545332e2ddf7f52c163959354b1650",
|
||||
"reference": "a801d525c7545332e2ddf7f52c163959354b1650",
|
||||
"url": "https://api.github.com/repos/symfony/security-core/zipball/527780a0482e592530174ca90e6189f64cdf6569",
|
||||
"reference": "527780a0482e592530174ca90e6189f64cdf6569",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/event-dispatcher-contracts": "^1.1|^2|^3",
|
||||
"symfony/password-hasher": "^5.3|^6.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/service-contracts": "^1.1.6|^2|^3"
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/event-dispatcher-contracts": "^2.5|^3",
|
||||
"symfony/password-hasher": "^5.4|^6.0|^7.0",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/event-dispatcher": "<4.4",
|
||||
"symfony/http-foundation": "<5.3",
|
||||
"symfony/ldap": "<4.4",
|
||||
"symfony/security-guard": "<4.4",
|
||||
"symfony/validator": "<5.2"
|
||||
"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"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/cache": "^1.0|^2.0|^3.0",
|
||||
"psr/container": "^1.0|^2.0",
|
||||
"psr/container": "^1.1|^2.0",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/cache": "^4.4|^5.0|^6.0",
|
||||
"symfony/event-dispatcher": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^5.3|^6.0",
|
||||
"symfony/ldap": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation": "^4.4|^5.0|^6.0",
|
||||
"symfony/validator": "^5.2|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/container-implementation": "To instantiate the Security class",
|
||||
"symfony/event-dispatcher": "",
|
||||
"symfony/expression-language": "For using the expression voter",
|
||||
"symfony/http-foundation": "",
|
||||
"symfony/ldap": "For using LDAP integration",
|
||||
"symfony/validator": "For using the user password constraint"
|
||||
"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/validator": "^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -4900,7 +4870,7 @@
|
||||
"description": "Symfony Security Component - Core Library",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/security-core/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/security-core/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4916,35 +4886,31 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-10T10:02:45+00:00"
|
||||
"time": "2025-05-30T08:33:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/security-csrf",
|
||||
"version": "v5.4.21",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/security-csrf.git",
|
||||
"reference": "776a538e5f20fb560a182f790979c71455694203"
|
||||
"reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/security-csrf/zipball/776a538e5f20fb560a182f790979c71455694203",
|
||||
"reference": "776a538e5f20fb560a182f790979c71455694203",
|
||||
"url": "https://api.github.com/repos/symfony/security-csrf/zipball/c34421b7d34efbaef5d611ab2e646a0ec464ffe3",
|
||||
"reference": "c34421b7d34efbaef5d611ab2e646a0ec464ffe3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/security-core": "^4.4|^5.0|^6.0"
|
||||
"php": ">=8.1",
|
||||
"symfony/security-core": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/http-foundation": "<5.3"
|
||||
"symfony/http-foundation": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/http-foundation": "^5.3|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/http-foundation": "For using the class SessionTokenStorage."
|
||||
"symfony/http-foundation": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -4972,7 +4938,7 @@
|
||||
"description": "Symfony Security Component - CSRF Library",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/security-csrf/tree/v5.4.21"
|
||||
"source": "https://github.com/symfony/security-csrf/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -4988,115 +4954,51 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-16T09:33:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/security-guard",
|
||||
"version": "v5.4.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/security-guard.git",
|
||||
"reference": "62d064b1ee682e4617f4c5ddc0d31f73e1a7ecaa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/security-guard/zipball/62d064b1ee682e4617f4c5ddc0d31f73e1a7ecaa",
|
||||
"reference": "62d064b1ee682e4617f4c5ddc0d31f73e1a7ecaa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-php80": "^1.15",
|
||||
"symfony/security-core": "^5.0",
|
||||
"symfony/security-http": "^5.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "^1|^2|^3"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\Security\\Guard\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony Security Component - Guard",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/security-guard/tree/v5.4.22"
|
||||
},
|
||||
"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": "2023-03-06T21:29:33+00:00"
|
||||
"time": "2024-09-25T14:18:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/security-http",
|
||||
"version": "v5.4.23",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/security-http.git",
|
||||
"reference": "6791856229cc605834d169091981e4eae77dad45"
|
||||
"reference": "815fcda8122a7850bf6d5d842ce03c20445295bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/security-http/zipball/6791856229cc605834d169091981e4eae77dad45",
|
||||
"reference": "6791856229cc605834d169091981e4eae77dad45",
|
||||
"url": "https://api.github.com/repos/symfony/security-http/zipball/815fcda8122a7850bf6d5d842ce03c20445295bb",
|
||||
"reference": "815fcda8122a7850bf6d5d842ce03c20445295bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/http-foundation": "^5.3|^6.0",
|
||||
"symfony/http-kernel": "^5.3|^6.0",
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/http-foundation": "^6.2|^7.0",
|
||||
"symfony/http-kernel": "^6.3|^7.0",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/property-access": "^4.4|^5.0|^6.0",
|
||||
"symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5"
|
||||
"symfony/property-access": "^5.4|^6.0|^7.0",
|
||||
"symfony/security-core": "^6.4|^7.0",
|
||||
"symfony/service-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/event-dispatcher": "<4.3",
|
||||
"symfony/security-bundle": "<5.3",
|
||||
"symfony/security-csrf": "<4.4"
|
||||
"symfony/clock": "<6.3",
|
||||
"symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9",
|
||||
"symfony/http-client-contracts": "<3.0",
|
||||
"symfony/security-bundle": "<5.4",
|
||||
"symfony/security-csrf": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/cache": "^4.4|^5.0|^6.0",
|
||||
"symfony/rate-limiter": "^5.2|^6.0",
|
||||
"symfony/routing": "^4.4|^5.0|^6.0",
|
||||
"symfony/security-csrf": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs",
|
||||
"symfony/security-csrf": "For using tokens to protect authentication/logout attempts"
|
||||
"symfony/cache": "^5.4|^6.0|^7.0",
|
||||
"symfony/clock": "^6.3|^7.0",
|
||||
"symfony/expression-language": "^5.4|^6.0|^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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -5124,7 +5026,7 @@
|
||||
"description": "Symfony Security Component - HTTP Integration",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/security-http/tree/v5.4.23"
|
||||
"source": "https://github.com/symfony/security-http/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5140,47 +5042,47 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-21T11:34:27+00:00"
|
||||
"time": "2025-06-23T20:18:57+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v2.5.2",
|
||||
"version": "v3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/service-contracts.git",
|
||||
"reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
|
||||
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
|
||||
"reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
|
||||
"reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/container": "^1.1",
|
||||
"symfony/deprecation-contracts": "^2.1|^3"
|
||||
"php": ">=8.1",
|
||||
"psr/container": "^1.1|^2.0",
|
||||
"symfony/deprecation-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"ext-psr": "<1.1|>=2"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/service-implementation": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Contracts\\Service\\": ""
|
||||
}
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Test/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
@ -5207,7 +5109,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5223,38 +5125,38 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-05-30T19:17:29+00:00"
|
||||
"time": "2025-04-25T09:37:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.21",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62"
|
||||
"reference": "73e2c6966a5aef1d4892873ed5322245295370c6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62",
|
||||
"reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/73e2c6966a5aef1d4892873ed5322245295370c6",
|
||||
"reference": "73e2c6966a5aef1d4892873ed5322245295370c6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"php": ">=8.1",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-intl-grapheme": "~1.0",
|
||||
"symfony/polyfill-intl-normalizer": "~1.0",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php80": "~1.15"
|
||||
"symfony/polyfill-mbstring": "~1.0"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/translation-contracts": ">=3.0"
|
||||
"symfony/translation-contracts": "<2.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/error-handler": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-client": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation-contracts": "^1.1|^2",
|
||||
"symfony/var-exporter": "^4.4|^5.0|^6.0"
|
||||
"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/translation-contracts": "^2.5|^3.0",
|
||||
"symfony/var-exporter": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -5293,7 +5195,7 @@
|
||||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/string/tree/v6.4.21"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5309,57 +5211,55 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-14T06:11:53+00:00"
|
||||
"time": "2025-04-18T15:23:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation.git",
|
||||
"reference": "de237e59c5833422342be67402d487fbf50334ff"
|
||||
"reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/de237e59c5833422342be67402d487fbf50334ff",
|
||||
"reference": "de237e59c5833422342be67402d487fbf50334ff",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/de8afa521e04a5220e9e58a1dc99971ab7cac643",
|
||||
"reference": "de8afa521e04a5220e9e58a1dc99971ab7cac643",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/translation-contracts": "^2.3"
|
||||
"symfony/translation-contracts": "^2.5|^3.0"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/config": "<4.4",
|
||||
"symfony/console": "<5.3",
|
||||
"symfony/dependency-injection": "<5.0",
|
||||
"symfony/http-kernel": "<5.0",
|
||||
"symfony/twig-bundle": "<5.0",
|
||||
"symfony/yaml": "<4.4"
|
||||
"symfony/config": "<5.4",
|
||||
"symfony/console": "<5.4",
|
||||
"symfony/dependency-injection": "<5.4",
|
||||
"symfony/http-client-contracts": "<2.5",
|
||||
"symfony/http-kernel": "<5.4",
|
||||
"symfony/service-contracts": "<2.5",
|
||||
"symfony/twig-bundle": "<5.4",
|
||||
"symfony/yaml": "<5.4"
|
||||
},
|
||||
"provide": {
|
||||
"symfony/translation-implementation": "2.3"
|
||||
"symfony/translation-implementation": "2.3|3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"nikic/php-parser": "^4.18|^5.0",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/console": "^5.4|^6.0",
|
||||
"symfony/dependency-injection": "^5.0|^6.0",
|
||||
"symfony/finder": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-client-contracts": "^1.1|^2.0|^3.0",
|
||||
"symfony/http-kernel": "^5.0|^6.0",
|
||||
"symfony/intl": "^4.4|^5.0|^6.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/finder": "^5.4|^6.0|^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/polyfill-intl-icu": "^1.21",
|
||||
"symfony/service-contracts": "^1.1.2|^2|^3",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"psr/log-implementation": "To use logging capability in translator",
|
||||
"symfony/config": "",
|
||||
"symfony/yaml": ""
|
||||
"symfony/routing": "^5.4|^6.0|^7.0",
|
||||
"symfony/service-contracts": "^2.5|^3",
|
||||
"symfony/yaml": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -5390,7 +5290,7 @@
|
||||
"description": "Provides tools to internationalize your application",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/translation/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/translation/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5406,42 +5306,42 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-19T12:34:17+00:00"
|
||||
"time": "2025-06-26T21:24:02+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation-contracts",
|
||||
"version": "v2.5.2",
|
||||
"version": "v3.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation-contracts.git",
|
||||
"reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe"
|
||||
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe",
|
||||
"reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe",
|
||||
"url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
|
||||
"reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/translation-implementation": ""
|
||||
"php": ">=8.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
"url": "https://github.com/symfony/contracts",
|
||||
"name": "symfony/contracts"
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Contracts\\Translation\\": ""
|
||||
}
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Test/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
@ -5468,7 +5368,7 @@
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/translation-contracts/tree/v2.5.2"
|
||||
"source": "https://github.com/symfony/translation-contracts/tree/v3.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5484,85 +5384,73 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-06-27T16:58:25+00:00"
|
||||
"time": "2024-09-27T08:32:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/twig-bridge",
|
||||
"version": "v5.4.22",
|
||||
"version": "v6.4.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/twig-bridge.git",
|
||||
"reference": "e5b174464f68be6876046db3ad6e217d9a7dbbac"
|
||||
"reference": "04ab306a2f2c9dbd46f4363383812954f704af9d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e5b174464f68be6876046db3ad6e217d9a7dbbac",
|
||||
"reference": "e5b174464f68be6876046db3ad6e217d9a7dbbac",
|
||||
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/04ab306a2f2c9dbd46f4363383812954f704af9d",
|
||||
"reference": "04ab306a2f2c9dbd46f4363383812954f704af9d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/translation-contracts": "^1.1|^2|^3",
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/translation-contracts": "^2.5|^3",
|
||||
"twig/twig": "^2.13|^3.0.4"
|
||||
},
|
||||
"conflict": {
|
||||
"phpdocumentor/reflection-docblock": "<3.2.2",
|
||||
"phpdocumentor/type-resolver": "<1.4.0",
|
||||
"symfony/console": "<5.3",
|
||||
"symfony/form": "<5.4.21|>=6,<6.2.7",
|
||||
"symfony/http-foundation": "<5.3",
|
||||
"symfony/http-kernel": "<4.4",
|
||||
"symfony/translation": "<5.2",
|
||||
"symfony/workflow": "<5.2"
|
||||
"symfony/console": "<5.4",
|
||||
"symfony/form": "<6.3",
|
||||
"symfony/http-foundation": "<5.4",
|
||||
"symfony/http-kernel": "<6.4",
|
||||
"symfony/mime": "<6.2",
|
||||
"symfony/serializer": "<6.4",
|
||||
"symfony/translation": "<5.4",
|
||||
"symfony/workflow": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.12|^2",
|
||||
"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": "^4.4|^5.0|^6.0",
|
||||
"symfony/console": "^5.3|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/finder": "^4.4|^5.0|^6.0",
|
||||
"symfony/form": "^5.4.21|^6.2.7",
|
||||
"symfony/http-foundation": "^5.3|^6.0",
|
||||
"symfony/http-kernel": "^4.4|^5.0|^6.0",
|
||||
"symfony/intl": "^4.4|^5.0|^6.0",
|
||||
"symfony/mime": "^5.2|^6.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/form": "^6.4.20|^7.2.5",
|
||||
"symfony/html-sanitizer": "^6.1|^7.0",
|
||||
"symfony/http-foundation": "^5.4|^6.0|^7.0",
|
||||
"symfony/http-kernel": "^6.4|^7.0",
|
||||
"symfony/intl": "^5.4|^6.0|^7.0",
|
||||
"symfony/mime": "^6.2|^7.0",
|
||||
"symfony/polyfill-intl-icu": "~1.0",
|
||||
"symfony/property-info": "^4.4|^5.1|^6.0",
|
||||
"symfony/routing": "^4.4|^5.0|^6.0",
|
||||
"symfony/property-info": "^5.4|^6.0|^7.0",
|
||||
"symfony/routing": "^5.4|^6.0|^7.0",
|
||||
"symfony/security-acl": "^2.8|^3.0",
|
||||
"symfony/security-core": "^4.4|^5.0|^6.0",
|
||||
"symfony/security-csrf": "^4.4|^5.0|^6.0",
|
||||
"symfony/security-http": "^4.4|^5.0|^6.0",
|
||||
"symfony/serializer": "^5.2|^6.0",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation": "^5.2|^6.0",
|
||||
"symfony/web-link": "^4.4|^5.0|^6.0",
|
||||
"symfony/workflow": "^5.2|^6.0",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.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/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",
|
||||
"twig/cssinliner-extra": "^2.12|^3",
|
||||
"twig/inky-extra": "^2.12|^3",
|
||||
"twig/markdown-extra": "^2.12|^3"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/asset": "For using the AssetExtension",
|
||||
"symfony/expression-language": "For using the ExpressionExtension",
|
||||
"symfony/finder": "",
|
||||
"symfony/form": "For using the FormExtension",
|
||||
"symfony/http-kernel": "For using the HttpKernelExtension",
|
||||
"symfony/routing": "For using the RoutingExtension",
|
||||
"symfony/security-core": "For using the SecurityExtension",
|
||||
"symfony/security-csrf": "For using the CsrfExtension",
|
||||
"symfony/security-http": "For using the LogoutUrlExtension",
|
||||
"symfony/stopwatch": "For using the StopwatchExtension",
|
||||
"symfony/translation": "For using the TranslationExtension",
|
||||
"symfony/var-dumper": "For using the DumpExtension",
|
||||
"symfony/web-link": "For using the WebLinkExtension",
|
||||
"symfony/yaml": "For using the YamlExtension"
|
||||
},
|
||||
"type": "symfony-bridge",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@ -5589,7 +5477,7 @@
|
||||
"description": "Provides integration for Twig with various Symfony components",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/twig-bridge/tree/v5.4.22"
|
||||
"source": "https://github.com/symfony/twig-bridge/tree/v6.4.22"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5605,52 +5493,47 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-31T08:28:44+00:00"
|
||||
"time": "2025-05-16T08:23:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/twig-bundle",
|
||||
"version": "v5.4.21",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/twig-bundle.git",
|
||||
"reference": "875d0edfc8df7505c1993419882c4071fc28c477"
|
||||
"reference": "ef970ed7eb9e547d21628e4c803de0943759cbcd"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/875d0edfc8df7505c1993419882c4071fc28c477",
|
||||
"reference": "875d0edfc8df7505c1993419882c4071fc28c477",
|
||||
"url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ef970ed7eb9e547d21628e4c803de0943759cbcd",
|
||||
"reference": "ef970ed7eb9e547d21628e4c803de0943759cbcd",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-kernel": "^5.0|^6.0",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/twig-bridge": "^5.3|^6.0",
|
||||
"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"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/dependency-injection": "<5.3",
|
||||
"symfony/framework-bundle": "<5.0",
|
||||
"symfony/service-contracts": ">=3.0",
|
||||
"symfony/translation": "<5.0"
|
||||
"symfony/framework-bundle": "<5.4",
|
||||
"symfony/translation": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.10.4|^2",
|
||||
"doctrine/cache": "^1.0|^2.0",
|
||||
"symfony/asset": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^5.3|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/finder": "^4.4|^5.0|^6.0",
|
||||
"symfony/form": "^4.4|^5.0|^6.0",
|
||||
"symfony/framework-bundle": "^5.0|^6.0",
|
||||
"symfony/routing": "^4.4|^5.0|^6.0",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.0",
|
||||
"symfony/translation": "^5.0|^6.0",
|
||||
"symfony/web-link": "^4.4|^5.0|^6.0",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.0"
|
||||
"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"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"autoload": {
|
||||
@ -5678,7 +5561,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/v5.4.21"
|
||||
"source": "https://github.com/symfony/twig-bundle/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5694,75 +5577,59 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-02-14T08:03:56+00:00"
|
||||
"time": "2025-06-20T20:02:07+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/validator",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/validator.git",
|
||||
"reference": "47794a3cb530e01593ecad9856ba80f5c011e36b"
|
||||
"reference": "6506760ab57e7cda5bde9cdaed736526162284bc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/validator/zipball/47794a3cb530e01593ecad9856ba80f5c011e36b",
|
||||
"reference": "47794a3cb530e01593ecad9856ba80f5c011e36b",
|
||||
"url": "https://api.github.com/repos/symfony/validator/zipball/6506760ab57e7cda5bde9cdaed736526162284bc",
|
||||
"reference": "6506760ab57e7cda5bde9cdaed736526162284bc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "~1.8",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php73": "~1.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/polyfill-php81": "^1.22",
|
||||
"symfony/translation-contracts": "^1.1|^2|^3"
|
||||
"symfony/polyfill-php83": "^1.27",
|
||||
"symfony/translation-contracts": "^2.5|^3"
|
||||
},
|
||||
"conflict": {
|
||||
"doctrine/annotations": "<1.13",
|
||||
"doctrine/cache": "<1.11",
|
||||
"doctrine/lexer": "<1.1",
|
||||
"symfony/dependency-injection": "<4.4",
|
||||
"symfony/expression-language": "<5.1",
|
||||
"symfony/http-kernel": "<4.4",
|
||||
"symfony/intl": "<4.4",
|
||||
"symfony/property-info": "<5.3",
|
||||
"symfony/translation": "<4.4",
|
||||
"symfony/yaml": "<4.4"
|
||||
"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"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/annotations": "^1.13|^2",
|
||||
"doctrine/cache": "^1.11|^2.0",
|
||||
"egulias/email-validator": "^2.1.10|^3|^4",
|
||||
"symfony/cache": "^4.4|^5.0|^6.0",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/console": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^5.1|^6.0",
|
||||
"symfony/finder": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-client": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-kernel": "^4.4|^5.0|^6.0",
|
||||
"symfony/intl": "^4.4|^5.0|^6.0",
|
||||
"symfony/mime": "^4.4|^5.0|^6.0",
|
||||
"symfony/property-access": "^4.4|^5.0|^6.0",
|
||||
"symfony/property-info": "^5.3|^6.0",
|
||||
"symfony/translation": "^4.4|^5.0|^6.0",
|
||||
"symfony/yaml": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"egulias/email-validator": "Strict (RFC compliant) email validation",
|
||||
"psr/cache-implementation": "For using the mapping cache.",
|
||||
"symfony/config": "",
|
||||
"symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints",
|
||||
"symfony/http-foundation": "",
|
||||
"symfony/intl": "",
|
||||
"symfony/property-access": "For accessing properties within comparison constraints",
|
||||
"symfony/property-info": "To automatically add NotNull and Type constraints",
|
||||
"symfony/translation": "For translating validation errors.",
|
||||
"symfony/yaml": ""
|
||||
"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"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -5770,7 +5637,8 @@
|
||||
"Symfony\\Component\\Validator\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
"/Tests/",
|
||||
"/Resources/bin/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
@ -5790,7 +5658,7 @@
|
||||
"description": "Provides tools to validate values",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/validator/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/validator/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5806,42 +5674,39 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-25T13:05:00+00:00"
|
||||
"time": "2025-06-26T07:25:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/var-dumper.git",
|
||||
"reference": "8e12706bf9c68a2da633f23bfdc15b4dce5970b3"
|
||||
"reference": "d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/8e12706bf9c68a2da633f23bfdc15b4dce5970b3",
|
||||
"reference": "8e12706bf9c68a2da633f23bfdc15b4dce5970b3",
|
||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600",
|
||||
"reference": "d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-mbstring": "~1.0"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/console": "<4.4"
|
||||
"symfony/console": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-iconv": "*",
|
||||
"symfony/console": "^4.4|^5.0|^6.0",
|
||||
"symfony/process": "^4.4|^5.0|^6.0",
|
||||
"symfony/uid": "^5.1|^6.0",
|
||||
"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"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
|
||||
"ext-intl": "To show region name in time zone dump",
|
||||
"symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
|
||||
},
|
||||
"bin": [
|
||||
"Resources/bin/var-dump-server"
|
||||
],
|
||||
@ -5878,7 +5743,7 @@
|
||||
"dump"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/var-dumper/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/var-dumper/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5894,27 +5759,30 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-25T13:05:00+00:00"
|
||||
"time": "2025-06-27T15:05:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/var-exporter",
|
||||
"version": "v6.3.0",
|
||||
"version": "v6.4.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/var-exporter.git",
|
||||
"reference": "db5416d04269f2827d8c54331ba4cfa42620d350"
|
||||
"reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/db5416d04269f2827d8c54331ba4cfa42620d350",
|
||||
"reference": "db5416d04269f2827d8c54331ba4cfa42620d350",
|
||||
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/f28cf841f5654955c9f88ceaf4b9dc29571988a9",
|
||||
"reference": "f28cf841f5654955c9f88ceaf4b9dc29571988a9",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.1"
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/var-dumper": "^5.4|^6.0"
|
||||
"symfony/property-access": "^6.4|^7.0",
|
||||
"symfony/serializer": "^6.4|^7.0",
|
||||
"symfony/var-dumper": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
@ -5952,7 +5820,7 @@
|
||||
"serialize"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/var-exporter/tree/v6.3.0"
|
||||
"source": "https://github.com/symfony/var-exporter/tree/v6.4.22"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -5968,43 +5836,42 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-21T08:48:44+00:00"
|
||||
"time": "2025-05-14T13:00:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/web-profiler-bundle",
|
||||
"version": "v5.4.24",
|
||||
"version": "v6.4.19",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/web-profiler-bundle.git",
|
||||
"reference": "42dbb751c0363d75a3697775e662d6f21f3d8b83"
|
||||
"reference": "7d1026a8e950d416cb5148ae88ac23db5d264839"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/42dbb751c0363d75a3697775e662d6f21f3d8b83",
|
||||
"reference": "42dbb751c0363d75a3697775e662d6f21f3d8b83",
|
||||
"url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/7d1026a8e950d416cb5148ae88ac23db5d264839",
|
||||
"reference": "7d1026a8e950d416cb5148ae88ac23db5d264839",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/framework-bundle": "^5.3|^6.0",
|
||||
"symfony/http-kernel": "^5.3|^6.0",
|
||||
"symfony/polyfill-php80": "^1.16",
|
||||
"symfony/routing": "^4.4|^5.0|^6.0",
|
||||
"symfony/twig-bundle": "^4.4|^5.0|^6.0",
|
||||
"php": ">=8.1",
|
||||
"symfony/config": "^5.4|^6.0|^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"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/dependency-injection": "<5.2",
|
||||
"symfony/form": "<4.4",
|
||||
"symfony/form": "<5.4",
|
||||
"symfony/mailer": "<5.4",
|
||||
"symfony/messenger": "<4.4"
|
||||
"symfony/messenger": "<5.4",
|
||||
"symfony/twig-bundle": ">=7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/browser-kit": "^4.4|^5.0|^6.0",
|
||||
"symfony/console": "^4.4|^5.0|^6.0",
|
||||
"symfony/css-selector": "^4.4|^5.0|^6.0",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.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/stopwatch": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"autoload": {
|
||||
@ -6031,8 +5898,11 @@
|
||||
],
|
||||
"description": "Provides a development tool that gives detailed information about the execution of any request",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"dev"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.24"
|
||||
"source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.19"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6048,20 +5918,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-02T16:38:36+00:00"
|
||||
"time": "2025-02-14T12:21:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/webpack-encore-bundle",
|
||||
"version": "v1.17.1",
|
||||
"version": "v1.17.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/webpack-encore-bundle.git",
|
||||
"reference": "7e3b6f69bcfcbb40ecfe83ad7a77e44316d26573"
|
||||
"reference": "471ebbc03072dad6e31840dc317bc634a32785f5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/7e3b6f69bcfcbb40ecfe83ad7a77e44316d26573",
|
||||
"reference": "7e3b6f69bcfcbb40ecfe83ad7a77e44316d26573",
|
||||
"url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/471ebbc03072dad6e31840dc317bc634a32785f5",
|
||||
"reference": "471ebbc03072dad6e31840dc317bc634a32785f5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -6083,8 +5953,8 @@
|
||||
"type": "symfony-bundle",
|
||||
"extra": {
|
||||
"thanks": {
|
||||
"name": "symfony/webpack-encore",
|
||||
"url": "https://github.com/symfony/webpack-encore"
|
||||
"url": "https://github.com/symfony/webpack-encore",
|
||||
"name": "symfony/webpack-encore"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
@ -6105,7 +5975,7 @@
|
||||
"description": "Integration with your Symfony app & Webpack Encore!",
|
||||
"support": {
|
||||
"issues": "https://github.com/symfony/webpack-encore-bundle/issues",
|
||||
"source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.17.1"
|
||||
"source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.17.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6121,35 +5991,32 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-05-29T00:18:01+00:00"
|
||||
"time": "2023-09-26T14:36:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
"version": "v5.4.23",
|
||||
"version": "v6.4.23",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/yaml.git",
|
||||
"reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b"
|
||||
"reference": "93e29e0deb5f1b2e360adfb389a20d25eb81a27b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b",
|
||||
"reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b",
|
||||
"url": "https://api.github.com/repos/symfony/yaml/zipball/93e29e0deb5f1b2e360adfb389a20d25eb81a27b",
|
||||
"reference": "93e29e0deb5f1b2e360adfb389a20d25eb81a27b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"php": ">=8.1",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "^1.8"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/console": "<5.3"
|
||||
"symfony/console": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/console": "^5.3|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/console": "For validating YAML files using the lint command"
|
||||
"symfony/console": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"bin": [
|
||||
"Resources/bin/yaml-lint"
|
||||
@ -6180,7 +6047,7 @@
|
||||
"description": "Loads and dumps YAML files",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/yaml/tree/v5.4.23"
|
||||
"source": "https://github.com/symfony/yaml/tree/v6.4.23"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6196,33 +6063,41 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-04-23T19:33:36+00:00"
|
||||
"time": "2025-06-03T06:46:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v3.6.1",
|
||||
"version": "v3.21.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd"
|
||||
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd",
|
||||
"reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d",
|
||||
"reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"php": ">=8.1.0",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-ctype": "^1.8",
|
||||
"symfony/polyfill-mbstring": "^1.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^2.0",
|
||||
"psr/container": "^1.0|^2.0",
|
||||
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
|
||||
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/Resources/core.php",
|
||||
"src/Resources/debug.php",
|
||||
"src/Resources/escaper.php",
|
||||
"src/Resources/string_loader.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Twig\\": "src/"
|
||||
}
|
||||
@ -6255,7 +6130,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.6.1"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.21.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@ -6267,20 +6142,213 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-06-08T12:52:13+00:00"
|
||||
"time": "2025-05-03T07:21:55+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "2.1.17",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "89b5ef665716fa2a52ecd2633f21007a6a349053"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053",
|
||||
"reference": "89b5ef665716fa2a52ecd2633f21007a6a349053",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4|^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan-shim": "*"
|
||||
},
|
||||
"bin": [
|
||||
"phpstan",
|
||||
"phpstan.phar"
|
||||
],
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "PHPStan - PHP Static Analysis Tool",
|
||||
"keywords": [
|
||||
"dev",
|
||||
"static analysis"
|
||||
],
|
||||
"support": {
|
||||
"docs": "https://phpstan.org/user-guide/getting-started",
|
||||
"forum": "https://github.com/phpstan/phpstan/discussions",
|
||||
"issues": "https://github.com/phpstan/phpstan/issues",
|
||||
"security": "https://github.com/phpstan/phpstan/security/policy",
|
||||
"source": "https://github.com/phpstan/phpstan-src"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/ondrejmirtes",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/phpstan",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2025-05-21T20:55:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "rector/rector",
|
||||
"version": "2.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/rectorphp/rector.git",
|
||||
"reference": "d0917c069bb0d9bb06ed111cf052510f609015a4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/rectorphp/rector/zipball/d0917c069bb0d9bb06ed111cf052510f609015a4",
|
||||
"reference": "d0917c069bb0d9bb06ed111cf052510f609015a4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4|^8.0",
|
||||
"phpstan/phpstan": "^2.1.17"
|
||||
},
|
||||
"conflict": {
|
||||
"rector/rector-doctrine": "*",
|
||||
"rector/rector-downgrade-php": "*",
|
||||
"rector/rector-phpunit": "*",
|
||||
"rector/rector-symfony": "*"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-dom": "To manipulate phpunit.xml via the custom-rule command"
|
||||
},
|
||||
"bin": [
|
||||
"bin/rector"
|
||||
],
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "Instant Upgrade and Automated Refactoring of any PHP code",
|
||||
"homepage": "https://getrector.com/",
|
||||
"keywords": [
|
||||
"automation",
|
||||
"dev",
|
||||
"migration",
|
||||
"refactoring"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/rectorphp/rector/issues",
|
||||
"source": "https://github.com/rectorphp/rector/tree/2.1.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/tomasvotruba",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2025-07-10T11:31:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/debug-bundle",
|
||||
"version": "v6.4.13",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/debug-bundle.git",
|
||||
"reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7bcfaff39e094cc09455201916d016d9b2ae08ff",
|
||||
"reference": "7bcfaff39e094cc09455201916d016d9b2ae08ff",
|
||||
"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"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/config": "<5.4",
|
||||
"symfony/dependency-injection": "<5.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/config": "^5.4|^6.0|^7.0",
|
||||
"symfony/web-profiler-bundle": "^5.4|^6.0|^7.0"
|
||||
},
|
||||
"type": "symfony-bundle",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Bundle\\DebugBundle\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/debug-bundle/tree/v6.4.13"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-25T14:18:03+00:00"
|
||||
}
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [],
|
||||
"stability-flags": {},
|
||||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
"php": ">=7.2.5",
|
||||
"php": "^8.4",
|
||||
"ext-ctype": "*",
|
||||
"ext-iconv": "*"
|
||||
},
|
||||
"platform-dev": [],
|
||||
"plugin-api-version": "2.3.0"
|
||||
"platform-dev": {},
|
||||
"plugin-api-version": "2.6.0"
|
||||
}
|
||||
|
@ -7,4 +7,5 @@ return [
|
||||
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
|
||||
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
|
||||
Sentry\SentryBundle\SentryBundle::class => ['all' => true],
|
||||
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
|
||||
];
|
||||
|
5
config/packages/debug.yaml
Normal file
5
config/packages/debug.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
when@dev:
|
||||
debug:
|
||||
# Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
|
||||
# See the "server:dump" command to start a new server.
|
||||
dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"
|
@ -2,6 +2,9 @@ parameters:
|
||||
base_url: '%env(BASE_URL)%'
|
||||
env(BASE_URL): '//'
|
||||
|
||||
base_path: '%env(BASE_PATH)%'
|
||||
env(BASE_PATH): '/'
|
||||
|
||||
cookie_path: '%env(COOKIE_PATH)%'
|
||||
env(COOKIE_PATH): '/'
|
||||
framework:
|
||||
@ -18,7 +21,7 @@ framework:
|
||||
storage_factory_id: session.storage.factory.native
|
||||
cookie_path: "%cookie_path%"
|
||||
assets:
|
||||
base_urls: '%base_url%'
|
||||
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'
|
||||
router:
|
||||
default_uri: '%base_url%'
|
||||
#esi: true
|
||||
|
10
config/packages/http_discovery.yaml
Normal file
10
config/packages/http_discovery.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
services:
|
||||
Psr\Http\Message\RequestFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\ResponseFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\ServerRequestFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\StreamFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\UploadedFileFactoryInterface: '@http_discovery.psr17_factory'
|
||||
Psr\Http\Message\UriFactoryInterface: '@http_discovery.psr17_factory'
|
||||
|
||||
http_discovery.psr17_factory:
|
||||
class: Http\Discovery\Psr17Factory
|
@ -1,2 +0,0 @@
|
||||
framework:
|
||||
lock: '%env(LOCK_DSN)%'
|
@ -1,9 +1,11 @@
|
||||
twig:
|
||||
globals:
|
||||
locales: "%locales%"
|
||||
default_path: '%kernel.project_dir%/templates'
|
||||
form_themes:
|
||||
- 'bootstrap_5_layout.html.twig'
|
||||
globals:
|
||||
locales: "%app.supported_locales%"
|
||||
url_link: "%env(URL_LINK)%"
|
||||
default_path: "%kernel.project_dir%/templates"
|
||||
form_themes:
|
||||
- "bootstrap_5_layout.html.twig"
|
||||
- "altcha.html.twig"
|
||||
when@test:
|
||||
twig:
|
||||
strict_variables: true
|
||||
twig:
|
||||
strict_variables: true
|
||||
|
@ -2,53 +2,10 @@ webpack_encore:
|
||||
# The path where Encore is building the assets - i.e. Encore.setOutputPath()
|
||||
# If multiple builds are defined (as shown below), you can disable the default build:
|
||||
# output_path: false
|
||||
output_path: false
|
||||
builds:
|
||||
appConfig: '%kernel.project_dir%/public/build/app'
|
||||
themeConfig: '%kernel.project_dir%/public/build/theme'
|
||||
output_path: "%kernel.project_dir%/public/build"
|
||||
# Set attributes that will be rendered on all script and link tags
|
||||
script_attributes:
|
||||
defer: true
|
||||
# Uncomment (also under link_attributes) if using Turbo Drive
|
||||
# https://turbo.hotwired.dev/handbook/drive#reloading-when-assets-change
|
||||
# 'data-turbo-track': reload
|
||||
# link_attributes:
|
||||
# Uncomment if using Turbo Drive
|
||||
# 'data-turbo-track': reload
|
||||
|
||||
# If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials')
|
||||
# crossorigin: 'anonymous'
|
||||
|
||||
# Preload all rendered script and link tags automatically via the HTTP/2 Link header
|
||||
# preload: true
|
||||
|
||||
# Throw an exception if the entrypoints.json file is missing or an entry is missing from the data
|
||||
# strict_mode: false
|
||||
|
||||
# If you have multiple builds:
|
||||
# builds:
|
||||
# frontend: '%kernel.project_dir%/public/frontend/build'
|
||||
|
||||
# pass the build name as the 3rd argument to the Twig functions
|
||||
# {{ encore_entry_script_tags('entry1', null, 'frontend') }}
|
||||
|
||||
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
|
||||
# Put in config/packages/prod/webpack_encore.yaml
|
||||
# cache: true
|
||||
|
||||
framework:
|
||||
assets:
|
||||
packages:
|
||||
app:
|
||||
json_manifest_path: '%kernel.project_dir%/public/build/app/manifest.json'
|
||||
theme:
|
||||
json_manifest_path: '%kernel.project_dir%/public/build/theme/manifest.json'
|
||||
#when@prod:
|
||||
# webpack_encore:
|
||||
# # Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes)
|
||||
# # Available in version 1.2
|
||||
# cache: true
|
||||
|
||||
#when@test:
|
||||
# webpack_encore:
|
||||
# strict_mode: false
|
||||
|
@ -27,7 +27,7 @@ parameters:
|
||||
locales: '%env(APP_LOCALES)%'
|
||||
app.supported_locales: ~
|
||||
|
||||
env(PEPPER): ""
|
||||
env(PEPPER): ~
|
||||
pepper: '%env(resolve:PEPPER)%'
|
||||
services:
|
||||
# default configuration for services in *this* file
|
||||
@ -75,3 +75,23 @@ services:
|
||||
$securityPattern: '%security_pattern%'
|
||||
# add more service definitions when explicit configuration is needed
|
||||
# please note that last definitions always *replace* previous ones
|
||||
|
||||
App\Altcha\Form\AltchaType:
|
||||
arguments:
|
||||
$altchaHost: "%env(ALTCHA_HOST)%"
|
||||
$altchaBaseUrl: "%env(ALTCHA_BASE_URL)%"
|
||||
$altchaDebug: "%env(bool:ALTCHA_DEBUG)%"
|
||||
$altchaWorkers: "%env(ALTCHA_WORKERS)%"
|
||||
$altchaDelay: "%env(ALTCHA_DELAY)%"
|
||||
$altchaMockError: "%env(bool:ALTCHA_MOCK_ERROR)%"
|
||||
tags:
|
||||
- { name: form.type, alias: altcha}
|
||||
|
||||
App\Form\LoginType:
|
||||
arguments:
|
||||
$altchaEnabled: "%env(bool:ALTCHA_ENABLED)%"
|
||||
|
||||
App\Altcha\AltchaValidator:
|
||||
arguments:
|
||||
$altchaHost: "%env(ALTCHA_HOST)%"
|
||||
$altchaBaseUrl: "%env(ALTCHA_BASE_URL)%"
|
||||
|
@ -8,7 +8,7 @@
|
||||
# Using SetHandler avoids issues with using ProxyPassMatch in combination
|
||||
# with mod_rewrite or mod_autoindex
|
||||
<FilesMatch \.php$>
|
||||
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://127.0.0.1:9000"
|
||||
SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://127.0.0.1:9000"
|
||||
# for Unix sockets, Apache 2.4.10 or higher
|
||||
# SetHandler proxy:unix:/path/to/fpm.sock|fcgi://dummy
|
||||
</FilesMatch>
|
||||
|
@ -7,7 +7,7 @@ ARG https_proxy=
|
||||
|
||||
ENV WAITFORIT_VERSION="v2.4.1"
|
||||
|
||||
ARG PHP_VERSION="8.1"
|
||||
ARG PHP_VERSION="8.4"
|
||||
ENV PHP_VERSION $PHP_VERSION
|
||||
|
||||
RUN export DEBIAN_FRONTEND=noninteractive && \
|
||||
@ -68,14 +68,14 @@ RUN chmod +x /var/www/install-composer.sh &&\
|
||||
# On active les mods d'apache nécessaires
|
||||
RUN a2enmod rewrite
|
||||
RUN a2enmod proxy_fcgi setenvif
|
||||
RUN a2enconf php8.1-fpm
|
||||
RUN a2enconf php8.4-fpm
|
||||
RUN a2enmod proxy
|
||||
RUN a2enmod expires
|
||||
RUN a2enmod headers
|
||||
|
||||
# On injecte les bonnes configs apache et php-fpm
|
||||
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
|
||||
COPY www.conf /etc/php/8.1/fpm/pool.d/www.conf
|
||||
COPY www.conf /etc/php/8.4/fpm/pool.d/www.conf
|
||||
|
||||
EXPOSE 5000
|
||||
EXPOSE 80
|
||||
@ -83,8 +83,8 @@ EXPOSE 80
|
||||
WORKDIR /var/www
|
||||
|
||||
# On démarre php-fpm une fois pour créer les sockets
|
||||
RUN service php8.1-fpm start
|
||||
RUN service php8.1-fpm stop
|
||||
RUN service php8.4-fpm start
|
||||
RUN service php8.4-fpm stop
|
||||
|
||||
|
||||
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||
@ -99,7 +99,7 @@ RUN sed -i '/imklog/s/^/#/' /etc/rsyslog.conf
|
||||
|
||||
COPY rsyslog.conf /etc/rsyslog.d/var/www.conf
|
||||
COPY supervisor.ini /etc/supervisor/supervisor.ini
|
||||
COPY php.ini /etc/php/8.1/fpm/php.ini
|
||||
COPY php.ini /etc/php/8.4/fpm/php.ini
|
||||
|
||||
VOLUME /container-lifecycle
|
||||
|
||||
|
@ -26,7 +26,7 @@ stderr_logfile_maxbytes=0
|
||||
|
||||
[program:php-fpm]
|
||||
environment=HOSTNAME="%(ENV_HOSTNAME)s"
|
||||
command = /usr/sbin/php-fpm8.1 -F
|
||||
command = /usr/sbin/php-fpm8.4 -F
|
||||
autostart = true
|
||||
autorestart = true
|
||||
directory = /var/www
|
||||
|
@ -6,7 +6,7 @@ error_log=/dev/stderr
|
||||
user = www-data
|
||||
group = www-data
|
||||
|
||||
listen = /run/php/php8.1-fpm.sock
|
||||
listen = /run/php/php8.4-fpm.sock
|
||||
|
||||
listen.owner = www-data
|
||||
listen.group = www-data
|
||||
|
@ -1,12 +1,15 @@
|
||||
CREATE TABLE IF NOT EXISTS usager (
|
||||
email VARCHAR ( 100 ) UNIQUE NOT NULL,
|
||||
password VARCHAR ( 255 ) NOT NULL,
|
||||
salt VARCHAR (255),
|
||||
lastname VARCHAR ( 255 ) NOT NULL,
|
||||
firstname VARCHAR ( 255 ) NOT NULL
|
||||
);
|
||||
INSERT INTO usager (email, password, lastname, firstname) VALUES
|
||||
('test1@test.com', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', 'Sassot', 'Charles'),
|
||||
('test2@test.com', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', 'Dubois', 'Angela'),
|
||||
('test3@test.com', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', 'Dupont', 'Henri'),
|
||||
('test4@test.com', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', 'Durand', 'Isabelle');
|
||||
INSERT INTO usager (email, password, salt, lastname, firstname) VALUES
|
||||
/* Bcrypt */
|
||||
('test1@test.com', '$2y$10$cpgbS9OkiH9tQTh0QOyAgeWhyg1GSTIzjAlb8DXNW5VGM.2TTPMgK', '','Locke', 'John'),
|
||||
/* SHA256 */
|
||||
('test2@test.com', '34631c8f2a3e00900c463a00d5eab046e9060ac6ff752fc88a0ce549e7a500d2', 'cesaltestunexemple', 'Durand', 'Isabelle'),
|
||||
/* SSHA */
|
||||
('test3@test.com', '{SSHA}xip81P5Ga8dx07WZJ0Y9lJ2RGapjZXNhbHRlc3R1bmF1dHJlZXhlbXBsZQ==', '', 'Dupont', 'Henri');
|
||||
GRANT ALL PRIVILEGES ON lasql.* TO lasql@localhost identified by 'lasql';
|
@ -6,10 +6,10 @@ CREATE TABLE IF NOT EXISTS usager (
|
||||
firstname VARCHAR ( 255 ) NOT NULL
|
||||
);
|
||||
INSERT INTO usager (email, password, salt, lastname, firstname) VALUES
|
||||
('test1@test.com', '8ad4025044b77ae6a5e3fcf99e53e44b15db9a4ecf468be21cbc6b9fbdae6d9f', 'cesaltestunexemple', 'Locke', 'John'),
|
||||
('test3@test.com', '504ae1c3e2f5fdaf41f868164dabcef21e17059f5f388b452718a1ce92692c67', 'cesaltestunautreexemple', 'Dupont', 'Henri');
|
||||
|
||||
INSERT INTO usager (email, password, lastname, firstname) VALUES
|
||||
('test4@test.com', '$2a$12$91AHN7WFXieeadvUfZ88mO.9N7oS5adeXbdERnRno9oLAbqqDW4IG', 'Durand', 'Isabelle'),
|
||||
('test2@test.com', '50626fa21f45a275cea0efff13ff78fd02234cade322da08b7191c7e9150141d', 'Dubois', 'Angela');
|
||||
/* Bcrypt */
|
||||
('test1@test.com', '$2y$10$cpgbS9OkiH9tQTh0QOyAgeWhyg1GSTIzjAlb8DXNW5VGM.2TTPMgK', '','Locke', 'John'),
|
||||
/* SHA256 */
|
||||
('test2@test.com', '34631c8f2a3e00900c463a00d5eab046e9060ac6ff752fc88a0ce549e7a500d2', 'cesaltestunexemple', 'Durand', 'Isabelle'),
|
||||
/* SSHA */
|
||||
('test3@test.com', '{SSHA}xip81P5Ga8dx07WZJ0Y9lJ2RGapjZXNhbHRlc3R1bmF1dHJlZXhlbXBsZQ==', '', 'Dupont', 'Henri');
|
||||
GRANT ALL PRIVILEGES ON DATABASE usager TO lasql
|
||||
|
@ -1,16 +1,23 @@
|
||||
ARG NODE_OPTIONS="--openssl-legacy-provider"
|
||||
ARG PHP_PKG_VERSION="8.1.22-r0"
|
||||
ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
|
||||
build-base=0.5-r3 \
|
||||
php81-gd=${PHP_PKG_VERSION} \
|
||||
php81-xsl=${PHP_PKG_VERSION} \
|
||||
php81-pdo=${PHP_PKG_VERSION} \
|
||||
php81-pgsql=${PHP_PKG_VERSION} \
|
||||
php81-pdo_pgsql=${PHP_PKG_VERSION} \
|
||||
php81-soap=${PHP_PKG_VERSION} \
|
||||
php81-ldap=${PHP_PKG_VERSION} \
|
||||
php81-pdo_mysql=${PHP_PKG_VERSION} \
|
||||
php81-bcmath=${PHP_PKG_VERSION}"
|
||||
|
||||
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2023.11.16-stable.1541.eec311d
|
||||
ARG NODE_OPTIONS="--openssl-legacy-provider" \
|
||||
PHP_PKG_VERSION="8.4.5-r0" \
|
||||
ENCORE_MODE="production" \
|
||||
APP_ENV="prod" \
|
||||
BASE_PATH="" \
|
||||
APP_LOCALES="fr,en" \
|
||||
ADDITIONAL_PACKAGES=" \
|
||||
php84-gd=${PHP_PKG_VERSION} \
|
||||
php84-xsl=${PHP_PKG_VERSION} \
|
||||
php84-pgsql=${PHP_PKG_VERSION} \
|
||||
php84-pdo_pgsql=${PHP_PKG_VERSION} \
|
||||
php84-soap=${PHP_PKG_VERSION} \
|
||||
php84-ldap=${PHP_PKG_VERSION} \
|
||||
php84-pdo_mysql=${PHP_PKG_VERSION} \
|
||||
php84-bcmath=${PHP_PKG_VERSION} \
|
||||
php84-xdebug" \
|
||||
ADDITIONAL_ENV=" \
|
||||
ENCORE_MODE=${ENCORE_MODE} \
|
||||
APP_ENV=${APP_ENV} \
|
||||
BASE_PATH=${BASE_PATH} \
|
||||
APP_LOCALES=${APP_LOCALES}"
|
||||
|
||||
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.4-base-2025.6.12-stable.1038.48ea3b9
|
||||
|
@ -1,16 +1,24 @@
|
||||
ARG NODE_OPTIONS="--openssl-legacy-provider"
|
||||
ARG PHP_PKG_VERSION="8.1.22-r0"
|
||||
ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
|
||||
build-base=0.5-r3 \
|
||||
php81-gd=${PHP_PKG_VERSION} \
|
||||
php81-xsl=${PHP_PKG_VERSION} \
|
||||
php81-pdo=${PHP_PKG_VERSION} \
|
||||
php81-pgsql=${PHP_PKG_VERSION} \
|
||||
php81-pdo_pgsql=${PHP_PKG_VERSION} \
|
||||
php81-soap=${PHP_PKG_VERSION} \
|
||||
php81-ldap=${PHP_PKG_VERSION} \
|
||||
php81-pdo_mysql=${PHP_PKG_VERSION} \
|
||||
php81-bcmath=${PHP_PKG_VERSION}"
|
||||
|
||||
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2023.11.16-stable.1541.eec311d
|
||||
ARG NODE_OPTIONS="--openssl-legacy-provider" \
|
||||
PHP_PKG_VERSION="8.4.5-r0" \
|
||||
ENCORE_MODE="production" \
|
||||
APP_ENV="prod" \
|
||||
BASE_PATH="" \
|
||||
APP_LOCALES="fr,en" \
|
||||
ADDITIONAL_PACKAGES=" \
|
||||
php84-gd=${PHP_PKG_VERSION} \
|
||||
php84-xsl=${PHP_PKG_VERSION} \
|
||||
php84-pgsql=${PHP_PKG_VERSION} \
|
||||
php84-pdo_pgsql=${PHP_PKG_VERSION} \
|
||||
php84-soap=${PHP_PKG_VERSION} \
|
||||
php84-ldap=${PHP_PKG_VERSION} \
|
||||
php84-pdo_mysql=${PHP_PKG_VERSION} \
|
||||
php84-bcmath=${PHP_PKG_VERSION} \
|
||||
php84-xdebug" \
|
||||
ADDITIONAL_ENV=" \
|
||||
ENCORE_MODE=${ENCORE_MODE} \
|
||||
APP_ENV=${APP_ENV} \
|
||||
BASE_PATH=${BASE_PATH} \
|
||||
APP_LOCALES=${APP_LOCALES}"
|
||||
|
||||
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.4-standalone-2025.6.12-stable.1038.48ea3b9
|
||||
USER www-data
|
||||
|
10649
package-lock.json
generated
10649
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -2,13 +2,12 @@
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.17.0",
|
||||
"@babel/preset-env": "^7.16.0",
|
||||
"@hotwired/stimulus": "^3.0.0",
|
||||
"@symfony/stimulus-bridge": "^3.2.0",
|
||||
"@symfony/webpack-encore": "^4.1.2",
|
||||
"core-js": "^3.23.0",
|
||||
"regenerator-runtime": "^0.13.9",
|
||||
"webpack": "^5.74.0",
|
||||
"webpack": "^5.94.0",
|
||||
"webpack-cli": "^4.10.0",
|
||||
"file-loader": "^6.2.0",
|
||||
"webpack-notifier": "^1.15.0"
|
||||
},
|
||||
"license": "UNLICENSED",
|
||||
@ -26,6 +25,7 @@
|
||||
"jquery": "^3.6.1",
|
||||
"postcss-loader": "^7.0.2",
|
||||
"sass": "^1.56.2",
|
||||
"sass-loader": "^13.2.0"
|
||||
"sass-loader": "^13.2.0",
|
||||
"altcha": "^2.0.0"
|
||||
}
|
||||
}
|
||||
|
8
phpstan.dist.neon
Normal file
8
phpstan.dist.neon
Normal file
@ -0,0 +1,8 @@
|
||||
parameters:
|
||||
level: 6
|
||||
paths:
|
||||
- bin/
|
||||
- config/
|
||||
- public/
|
||||
- src/
|
||||
- tests/
|
File diff suppressed because one or more lines are too long
@ -1,30 +0,0 @@
|
||||
/*!
|
||||
* Bootstrap v5.2.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Sizzle CSS Selector Engine v2.3.9
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright JS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://js.foundation/
|
||||
*
|
||||
* Date: 2022-12-19
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.6.3
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Includes Sizzle.js
|
||||
* https://sizzlejs.com/
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2022-12-20T21:28Z
|
||||
*/
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
body{min-height:50vh}.wrapper,body{align-items:center;display:flex;justify-content:center}.wrapper{height:100%}form{border:1px solid grey;border-radius:5px;display:flex;flex-direction:column;padding:15px}.form-error{color:red}.lang{align-items:center;display:flex;justify-content:center}.lang .flag{height:auto;margin:5px;width:200px}
|
@ -1 +0,0 @@
|
||||
(self.webpackChunk=self.webpackChunk||[]).push([[143],{4180:(t,e,r)=>{var n={"./hello_controller.js":4695};function o(t){var e=i(t);return r(e)}function i(t){if(!r.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}o.keys=function(){return Object.keys(n)},o.resolve=i,t.exports=o,o.id=4180},8205:(t,e,r)=>{"use strict";r.d(e,{Z:()=>n});const n={}},4695:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>s});r(8304),r(4812),r(489),r(1539),r(2419),r(8011),r(9070),r(6649),r(6078),r(2526),r(1817),r(9653),r(2165),r(6992),r(8783),r(3948);function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,(i=o.key,u=void 0,u=function(t,e){if("object"!==n(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var o=r.call(t,e||"default");if("object"!==n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(i,"string"),"symbol"===n(u)?u:String(u)),o)}var i,u}function u(t,e){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},u(t,e)}function c(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=l(t);if(e){var o=l(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return f(this,r)}}function f(t,e){if(e&&("object"===n(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}var s=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&u(t,e)}(l,t);var e,r,n,f=c(l);function l(){return o(this,l),f.apply(this,arguments)}return e=l,(r=[{key:"connect",value:function(){this.element.textContent="Hello Stimulus! Edit me in assets/controllers/hello_controller.js"}}])&&i(e.prototype,r),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),l}(r(6599).Qr)},9437:(t,e,r)=>{"use strict";(0,r(2192).x)(r(4180))}},t=>{t.O(0,[3],(()=>{return e=9437,t(t.s=e);var e}));t.O()}]);
|
7
public/build/app/bootstrap-css.css
vendored
7
public/build/app/bootstrap-css.css
vendored
File diff suppressed because one or more lines are too long
1
public/build/app/bootstrap-css.js
vendored
1
public/build/app/bootstrap-css.js
vendored
@ -1 +0,0 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[113],{9218:()=>{}},s=>{var e;e=9218,s(s.s=e)}]);
|
1
public/build/app/bootstrap-js.js
vendored
1
public/build/app/bootstrap-js.js
vendored
@ -1 +0,0 @@
|
||||
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[144],{2576:(e,s,u)=>{u(3138)}},e=>{e.O(0,[138],(()=>{return s=2576,e(e.s=s);var s}));e.O()}]);
|
@ -1,30 +0,0 @@
|
||||
{
|
||||
"entrypoints": {
|
||||
"app": {
|
||||
"js": [
|
||||
"/build/app/runtime.js",
|
||||
"/build/app/3.js",
|
||||
"/build/app/app.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/app/app.css"
|
||||
]
|
||||
},
|
||||
"bootstrap-css": {
|
||||
"js": [
|
||||
"/build/app/runtime.js",
|
||||
"/build/app/bootstrap-css.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/app/bootstrap-css.css"
|
||||
]
|
||||
},
|
||||
"bootstrap-js": {
|
||||
"js": [
|
||||
"/build/app/runtime.js",
|
||||
"/build/app/138.js",
|
||||
"/build/app/bootstrap-js.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"build/app/app.css": "/build/app/app.css",
|
||||
"build/app/app.js": "/build/app/app.js",
|
||||
"build/app/bootstrap-css.css": "/build/app/bootstrap-css.css",
|
||||
"build/app/bootstrap-css.js": "/build/app/bootstrap-css.js",
|
||||
"build/app/bootstrap-js.js": "/build/app/bootstrap-js.js",
|
||||
"build/app/runtime.js": "/build/app/runtime.js",
|
||||
"build/app/3.js": "/build/app/3.js",
|
||||
"build/app/138.js": "/build/app/138.js"
|
||||
}
|
@ -1 +0,0 @@
|
||||
(()=>{"use strict";var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return r[e].call(i.exports,i,i.exports,o),i.exports}o.m=r,e=[],o.O=(r,t,n,i)=>{if(!t){var l=1/0;for(s=0;s<e.length;s++){for(var[t,n,i]=e[s],a=!0,u=0;u<t.length;u++)(!1&i||l>=i)&&Object.keys(o.O).every((e=>o.O[e](t[u])))?t.splice(u--,1):(a=!1,i<l&&(l=i));if(a){e.splice(s--,1);var f=n();void 0!==f&&(r=f)}}return r}i=i||0;for(var s=e.length;s>0&&e[s-1][2]>i;s--)e[s]=e[s-1];e[s]=[t,n,i]},o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};o.O.j=r=>0===e[r];var r=(r,t)=>{var n,i,[l,a,u]=t,f=0;if(l.some((r=>0!==e[r]))){for(n in a)o.o(a,n)&&(o.m[n]=a[n]);if(u)var s=u(o)}for(r&&r(t);f<l.length;f++)i=l[f],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(s)},t=self.webpackChunk=self.webpackChunk||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})()})();
|
@ -1,13 +0,0 @@
|
||||
{
|
||||
"entrypoints": {
|
||||
"theme": {
|
||||
"js": [
|
||||
"/build/theme/runtime.js",
|
||||
"/build/theme/theme.js"
|
||||
],
|
||||
"css": [
|
||||
"/build/theme/theme.css"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"build/theme/theme.css": "/build/theme/theme.css",
|
||||
"build/theme/theme.js": "/build/theme/theme.js",
|
||||
"build/theme/runtime.js": "/build/theme/runtime.js"
|
||||
}
|
@ -1 +0,0 @@
|
||||
(()=>{"use strict";var e,r={},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var l=o[e]={exports:{}};return r[e](l,l.exports,t),l.exports}t.m=r,e=[],t.O=(r,o,n,l)=>{if(!o){var a=1/0;for(p=0;p<e.length;p++){for(var[o,n,l]=e[p],i=!0,f=0;f<o.length;f++)(!1&l||a>=l)&&Object.keys(t.O).every((e=>t.O[e](o[f])))?o.splice(f--,1):(i=!1,l<a&&(a=l));if(i){e.splice(p--,1);var u=n();void 0!==u&&(r=u)}}return r}l=l||0;for(var p=e.length;p>0&&e[p-1][2]>l;p--)e[p]=e[p-1];e[p]=[o,n,l]},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={666:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,l,[a,i,f]=o,u=0;if(a.some((r=>0!==e[r]))){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(f)var p=f(t)}for(r&&r(o);u<a.length;u++)l=a[u],t.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return t.O(p)},o=self.webpackChunk=self.webpackChunk||[];o.forEach(r.bind(null,0)),o.push=r.bind(null,o.push.bind(o))})()})();
|
@ -1 +0,0 @@
|
||||
input[type=radio]:checked~.app-item{--tw-shadow:0 10px 15px -3px rgba(22,78,99,.3),0 4px 6px -4px rgba(22,78,99,.3);background-color:rgba(76,233,14,.15)}
|
@ -1 +0,0 @@
|
||||
(self.webpackChunk=self.webpackChunk||[]).push([[505],{755:(s,e,k)=>{k(634),k(681)},634:()=>{},681:(s,e,k)=>{"use strict";k.r(e)}},s=>{var e;e=755,s(s.s=e)}]);
|
@ -1,2 +0,0 @@
|
||||
require('./theme.js')
|
||||
require('./theme.css')
|
@ -1,4 +0,0 @@
|
||||
input[type="radio"]:checked ~ .app-item {
|
||||
--tw-shadow: 0 10px 15px -3px rgb(22 78 99 / 0.3), 0 4px 6px -4px rgb(22 78 99 / 0.3);
|
||||
background-color: rgb(76 233 14 / 0.15);
|
||||
}
|
198
readme.md
198
readme.md
@ -3,117 +3,66 @@
|
||||
Une [LoginApp](https://www.ory.sh/docs/hydra/concepts/login) pour le serveur OpenID Connect [Ory/Hydra](https://github.com/ory/hydra).
|
||||
Elle permet de se connecter à une base de donnée et de vérifier un mot de passe donné sur une mire locale puis d'aller chercher des données demandées
|
||||
|
||||
## Usage
|
||||
## Image
|
||||
|
||||
Dans le cas d'utilsation du thème pour personaliser la page de login
|
||||
- L'image standalone est construite en utilisant l'utilisateur `www-data` pour lancer supervisor (qui va lancer le process php-fpm et caddy, avec ce même user)
|
||||
- C'est pour cela qu'on fini par "USER www-data" à la fin de `misc/images/hydra-oidc-standalone/Dockerfile`, sinon le conteneur `hydra-sql` ne tournera pas
|
||||
|
||||
### Développement
|
||||
## Configuration
|
||||
|
||||
Un environnement Docker Compose est proposé comme support de développement.
|
||||
### Variables d'environnement
|
||||
|
||||
Afin de démarrer celui-ci:
|
||||
| Variable | Description | Valeur par défaut | Utilisation |
|
||||
| ----------------------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------- |
|
||||
| `APP_ENV` | Environnement symfony | prod | dev:prod |
|
||||
| `APP_DEBUG` | Console de debug symofny | false | true:false |
|
||||
| `HYDRA_ADMIN_BASE_URL` | Url d'admin Hydra ou dispatcher | http://hydra:4445 | obligatoire |
|
||||
| `BASE_URL` | Url d'accès | http://localhost:8080 | obligatoire |
|
||||
| `DSN_REMOTE_DATABASE` | DSN de la BDD | postgresql://lasql:lasql@postgres:5432/lasql?serverVersion=15&chartset=utf8 | |
|
||||
| `DB_USER` | User de connection à la BDD | lasql | obligatoire |
|
||||
| `DB_PASSWORD` | PAssword de l'utilisateur de la BDD | lasql | obligatoire |
|
||||
| `APP_LOCALES` | Langues disponibles dans l'application | fr,en | obligatoire |
|
||||
| `HASH_ALGO_LEGACY` | ALgorythme de Hashage par défaut | sha256 | |
|
||||
| `SECURITY_PATTERN` | Séquence à employer pour le hashage du mot de passe | password,salt,pepper | obligatoire |
|
||||
| `PEPPER` | Pepper utilisé pour le Hashage | | |
|
||||
| `REDIS_DSN` | DSN du serveur Redis | redis://redis:6379 | obligatoire |
|
||||
| `URL_LINK` | Url pouvant être utilisée dans les liens des templates | | |
|
||||
| `CADDY_HTTP_PORT` | Port d'écoute de l'application | 8080 | |
|
||||
| `CADDY_HTTPS_PORT` | Port d'écoute de l'application | 8443 | |
|
||||
| `CADDY_DATA_FS` | Chemin vers le répertoire utilisé pour le stockage de caddy | /tmp/caddy | |
|
||||
| `CADDY_APP_ROOT_PUBLIC` | Chemin vers le répertoire utilisé pour servire les fichiers | /app/public | |
|
||||
| `CADDY_PHP_INDEX` | Nom du fichier a utiliser pour servir l'application | index.php | |
|
||||
| `CADDY_APP_UPSTREAM_BACKEND_SERVER` | Adresse du serveur backend FastCGI PHP vers lequel doit être diriger les requêtes PHP. | unix//tmp/php-fpm.sock | |
|
||||
| `CADDY_TRUSTED_PROXIES` | Spécification des adresses IP /plage IP étant sur pour transmettre les requetes HTTP | private_ranges | |
|
||||
| `CADDY_LOG_FORMAT` | Spécification du format des logs | console | |
|
||||
| `CADDY_LOG_LEVEL` | Spécification du niveau de verbosité des logs | INFO | |
|
||||
| `PHP_FPM_MEMORY_LIMIT` | Spécification de la mémoire limite maximale alloué au processus PHP-FPM | 128M | |
|
||||
| `PHP_FPM_DISPLAY_ERRORS` | Afficahge des erreurs dans la sortie du serveur web. | off | |
|
||||
| `PHP_FPM_LISTEN` | Spécification du serveur sur lequel PHP FPM écoute les connexion. | /tmp/php-fpm.sock | |
|
||||
| `PHP_FPM_LOG_LEVEL` | Spécification du niveau de verbosité des logs PHP-FPM | notice | |
|
||||
| `PHP_FPM_PM` | Définition du mode de gestion des processus PHP-FPM | dynamic | |
|
||||
| `PHP_FPM_PM_MAX_CHILDREN` | Définition du nombre maximum de processus enfants que PHP-FPM peut générer | 5 | |
|
||||
| `PHP_FPM_PM_START_SERVERS` | Définition du nombre de processus enfants que PHP-FPM va démarrer au lancement de PHP-FPM | 2 | |
|
||||
| `PHP_FPM_PM_MIN_SPARE_SERVERS` | Définition du nombre minimum de processus enfants inactifs que PHP-FPM doit conserver en réserve. | 1 | |
|
||||
| `PHP_FPM_PM_MAX_SPARE_SERVERS` | Définition du nombre maximum de processus enfants inactifs que PHP-FPM peut conserver en réserve. | 3 | |
|
||||
| `XDG_DATA_HOME` | Définition du répertoire de base pour le stockage des données spécifiques à l'utilisateur. | /tmp/data | |
|
||||
| `ALTCHA_ENABLED` | Désactivation d'altcha lors de la connexion | true | |
|
||||
|
||||
```bash
|
||||
### Algorithmes de hashage compatibles
|
||||
|
||||
# Démarrer l'environnement docker-compose
|
||||
make up
|
||||
La login app est compatible par défaut avec toutes les méthodes de hashage de PHP et avec SSHA. Aucune configuration supplémentaire n'est nécessaire.
|
||||
|
||||
# fermer l'environnement
|
||||
make down
|
||||
### Pattern de hashage
|
||||
|
||||
```
|
||||
Définir dans la variable `SECURITY_PATTERN` le pattern utilisé avec les mots clés: password | salt | pepper séparé par des virgules pour représenter la séquence à employer pour le hashage du mot de passe.
|
||||
Exemple : `SECURITY_PATTERN="salt,password,pepper"`
|
||||
|
||||
## Variables d'environnement
|
||||
```
|
||||
DB_USER="lasql"
|
||||
DB_PASSWORD="lasql"
|
||||
### Schéma de base de donnée
|
||||
|
||||
ISSUER_URL="http://localhost:8000"
|
||||
BASE_URL='http://localhost:8080'
|
||||
# connexion hydra
|
||||
HYDRA_ADMIN_BASE_URL='http://hydra:4445'
|
||||
DSN_REMOTE_DATABASE="pgsql:host='postgres';port=5432;dbname=lasql"
|
||||
APP_LOCALES="fr,en"
|
||||
HASH_ALGO_LEGACY="sha256, bcrypt"
|
||||
SECURITY_PATTERN="password,salt,pepper"
|
||||
REDIS_DSN="redis://redis:6379
|
||||
PEPPER=
|
||||
```
|
||||
## Tests password
|
||||
|
||||
Dans le cas où plusieurs méthodes de hashage cohabitent (migration de méthode par exemple dans l'application principale), toutes les méthodes indiquées dans `HASH_ALGO_LEGACY` seront testées pour comparer les hashs jusqu'à un succès
|
||||
|
||||
## Pattern de hashage
|
||||
|
||||
```
|
||||
Définir le pattern utilisé avec les mots clés autorisé: password | salt | pepper dans un string, séparé par des virgules pour représenter la séquence à employer pour le hashage du mot de passe.
|
||||
```
|
||||
### Postgres
|
||||
Pour choisir la base de donnée à utiliser, modifier la variable d'environnement `DSN_REMOTE_DATABASE`
|
||||
|
||||
```
|
||||
Les mot de passe inscrits en bdd sont hachés en tenant compte du salt si non vide (cf données de la bdd plus bas) et du pepper inscrit en variable d'environnement (généré avec : bin2hex(random_bytes(32)) pour l'exemple), le pepper peut être vide
|
||||
Indiquer le nom de la colonne contenant le salt:
|
||||
Il faut inscrire dans slq_login_configuration salt_column_name: salt
|
||||
Indiquer le pepper utilisé:
|
||||
et conserver le pepper dans service.yaml
|
||||
env(PEPPER): "257d62c24cd352c21b51c26dba678c8ff05011a89022aec106185bf67c69aa8b"
|
||||
|
||||
```
|
||||
|
||||
### Redis
|
||||
|
||||
La variable `REDIS_DSN` est obligatoire. Hydra-sql utilise dorénavant Redis pour le stockage du cache et des session. Compatible Redis Sentinel
|
||||
ex : `'redis:?host[redis1:26379]&host[redis2:26379]&host[redis3:26379]&redis_sentinel=mymaster'`
|
||||
|
||||
### mariadb
|
||||
```
|
||||
En plus de tester la connexion à une différente base de donnée, on teste le hashage de password sans salt ni pepper
|
||||
Il faut mettre dans sql_login_configuration salt_column_name: ~
|
||||
et dans service.yaml
|
||||
env(PEPPER): ~
|
||||
|
||||
```
|
||||
### test connexion mariadb
|
||||
```
|
||||
Modifier la variable d'environnement avec cette valeur
|
||||
DSN_REMOTE_DATABASE="mysql:host=mariadb;port=3306;dbname=lasql;"
|
||||
|
||||
```
|
||||
|
||||
## Données de test
|
||||
|
||||
Des données de test sont chargées au lancement de l'environnement.
|
||||
Le mot de passe est `123456` dans tous les cas, mais il est hashé différemment.
|
||||
|
||||
Pour utiliser ces données de test avec postgres, vérifier la configuration de salt et de pepper
|
||||
pepper doit être configuré avec l'exemple mis ci-dessus env(PEPPER)
|
||||
il faut aussi indique la sql_login.yaml à salt la valeur salt (qui correspond au nom de colonne contenant le salt dans la bdd postgres)
|
||||
### postgres
|
||||
```
|
||||
|email|password|salt|lastname|firstname
|
||||
|test1@test.com| 8ad4025044b77ae6a5e3fcf99e53e44b15db9a4ecf468be21cbc6b9fbdae6d9f| cesaltestunexemple| Locke|John|
|
||||
|test2@test.com| 50626fa21f45a275cea0efff13ff78fd02234cade322da08b7191c7e9150141d| NULL| Dubois| Angela|
|
||||
|test3@test.com| 504ae1c3e2f5fdaf41f868164dabcef21e17059f5f388b452718a1ce92692c67| cesaltestunautreexemple| Dupont| Henri|
|
||||
|test4@test.com| $2a$12$91AHN7WFXieeadvUfZ88mO.9N7oS5adeXbdERnRno9oLAbqqDW4IG| NULL| Durand|Isabelle|
|
||||
|
||||
A noter que le hash de test4 est hashé avec l'algo bcrypt
|
||||
```
|
||||
|
||||
### mariadb (sans salt)
|
||||
```
|
||||
|email|password|lastname|firstname
|
||||
|test1@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Sassot|Charles|
|
||||
|test2@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Dubois| Angela|
|
||||
|test3@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Dupont| Henri|
|
||||
|test4@test.com| 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92| Durand|Isabelle|
|
||||
```
|
||||
|
||||
## configuration
|
||||
Permet d'adapter les requetes SQL à la base de donnée utilisée en indiquant les noms de colonnes de celle-ci.
|
||||
|
||||
pdo_configuration/pdo.yaml
|
||||
```
|
||||
```yaml
|
||||
# config/sql_login_configuration/sql_login.yaml
|
||||
sql_login:
|
||||
login_column_name: email
|
||||
password_column_name: password
|
||||
@ -123,15 +72,48 @@ sql_login:
|
||||
- email
|
||||
- lastname
|
||||
- firstname
|
||||
subject_rewrite_expression: 'firstname~"."~lastname~"@exemple.com"'
|
||||
```
|
||||
|
||||
#### Conteneurs
|
||||
## Environnement de développement
|
||||
|
||||
|Nom|Description|Port(s) hôte utilisé(s)|
|
||||
|---|-----------|------------------|
|
||||
|`oidc-test`|Application factice permettant de tester l'authentification OpenID Connect|`8080`|
|
||||
|`hydra`|Serveur Ory/Hydra|`8081`|
|
||||
|`hydra-sql`|Login/Consent/Logout App (ce projet)|`8082`|
|
||||
|`postgres`| Base de donnée postgres support du test et pour hydra|`5432`
|
||||
|`mariadb`| Base de donnée mariadb support du test|`3306`
|
||||
|`pgadmin`| pour administrer la base de donnée |`8085`
|
||||
### Tester
|
||||
|
||||
Se rendre sur [http://localhost:8000/](http://localhost:8000/) et cliquer `Login` pour commencer une nouvelle connexion.
|
||||
3 utilisateurs d'exemple sont disponible pour les tests:
|
||||
| Login | Mot de passe | Algorithme |
|
||||
|-------|--------------|------------|
|
||||
| test1@test.com | 123456 | Bcrypt |
|
||||
| test2@test.com | 123456 | SHA256 |
|
||||
| test3@test.com | 123456 | SSHA |
|
||||
|
||||
### Base de donnée
|
||||
|
||||
2 bases de données différentes sont disponible pour les tests.
|
||||
Pour choisir la base de donnée à utiliser, modifier les d'environnement relatives à la base de donnée.
|
||||
|
||||
- **URL Postgres**: `postgresql://lasql:lasql@mariadb:3306/lasql?serverVersion=15&chartset=utf8`
|
||||
- **URL Mariadb**: `mysql://lasql:lasql@postgres:5432/lasql`
|
||||
|
||||
### Redis
|
||||
|
||||
La variable `REDIS_DSN` est obligatoire. Hydra-sql utilise dorénavant Redis pour le stockage du cache et des session. Compatible Redis Sentinel
|
||||
ex : `'redis:?host[redis1:26379]&host[redis2:26379]&host[redis3:26379]&redis_sentinel=mymaster'`
|
||||
|
||||
### Liste des ports
|
||||
|
||||
| Nom | Description | Port(s) hôte utilisé(s) |
|
||||
| ----------- | -------------------------------------------------------------------------- | ----------------------- |
|
||||
| `oidc-test` | Application factice permettant de tester l'authentification OpenID Connect | `8080` |
|
||||
| `hydra` | Serveur Ory/Hydra | `8081` |
|
||||
| `hydra-sql` | Login/Consent/Logout App (ce projet) | `8082` |
|
||||
| `postgres` | Base de donnée postgres support du test et pour hydra | `5432` |
|
||||
| `mariadb` | Base de donnée mariadb support du test | `3306` |
|
||||
| `pgadmin` | pour administrer la base de donnée | `8085` |
|
||||
|
||||
### build du sql theme
|
||||
|
||||
copier les images et les fonts dans les dossier ./assets
|
||||
modifier si besoin le fichier theme-entrypoints.js
|
||||
|
||||
lancer un `npm run build`
|
28
rector.php
Normal file
28
rector.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Rector\Config\RectorConfig;
|
||||
use Rector\Renaming\Rector\Class_\RenameAttributeRector;
|
||||
use Rector\Symfony\Set\SymfonySetList;
|
||||
|
||||
return static function (RectorConfig $rectorConfig): void {
|
||||
$rectorConfig->paths([
|
||||
__DIR__ . '/src',
|
||||
]);
|
||||
|
||||
$rectorConfig->sets([
|
||||
SymfonySetList::SYMFONY_60,
|
||||
SymfonySetList::SYMFONY_61,
|
||||
SymfonySetList::SYMFONY_62,
|
||||
SymfonySetList::SYMFONY_63,
|
||||
SymfonySetList::SYMFONY_64,
|
||||
SymfonySetList::SYMFONY_CODE_QUALITY,
|
||||
SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION,
|
||||
]);
|
||||
|
||||
$rectorConfig->importShortClasses(false);
|
||||
$rectorConfig->skip([
|
||||
RenameAttributeRector::class
|
||||
]);
|
||||
};
|
48
src/Altcha/AltchaTransformer.php
Normal file
48
src/Altcha/AltchaTransformer.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Altcha;
|
||||
|
||||
use App\Altcha\Form\AltchaModel;
|
||||
use Symfony\Component\Form\DataTransformerInterface;
|
||||
|
||||
class AltchaTransformer implements DataTransformerInterface
|
||||
{
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function reverseTransform($value): AltchaModel
|
||||
{
|
||||
if (empty($value)) {
|
||||
return new AltchaModel();
|
||||
}
|
||||
|
||||
$decodedValue = base64_decode($value);
|
||||
$data = json_decode($decodedValue);
|
||||
|
||||
$model = new AltchaModel();
|
||||
|
||||
foreach ($data as $property => $value) {
|
||||
$model->{$property} = $value;
|
||||
}
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function transform($value): string
|
||||
{
|
||||
if (empty($value)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$json = json_encode($value);
|
||||
|
||||
if (false === $json) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return base64_encode($json);
|
||||
}
|
||||
}
|
52
src/Altcha/AltchaValidator.php
Normal file
52
src/Altcha/AltchaValidator.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Altcha;
|
||||
|
||||
use Symfony\Component\Form\FormError;
|
||||
use Symfony\Component\Form\FormEvent;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
class AltchaValidator
|
||||
{
|
||||
public function __construct(
|
||||
private readonly string $altchaHost,
|
||||
private readonly string $altchaBaseUrl,
|
||||
private readonly HttpClientInterface $httpClient,
|
||||
private readonly TranslatorInterface $translator
|
||||
) {
|
||||
}
|
||||
|
||||
public function validate(FormEvent $formEvent): void
|
||||
{
|
||||
$form = $formEvent->getForm();
|
||||
$data = $form->getData();
|
||||
|
||||
$response = $this->httpClient->request(
|
||||
'POST',
|
||||
$this->altchaHost.$this->altchaBaseUrl.'/verify',
|
||||
[
|
||||
'body' => json_encode($data),
|
||||
'headers' => [
|
||||
'Content-Type' => 'application/json',
|
||||
],
|
||||
],
|
||||
);
|
||||
|
||||
if (Response::HTTP_OK !== $response->getStatusCode()) {
|
||||
$form->addError(new FormError($this->translator->trans('altcha.validator.server_validation_error', [], 'form')));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$content = $response->getContent();
|
||||
$parsedResponse = json_decode($content);
|
||||
|
||||
if (true !== $parsedResponse->success) {
|
||||
$form->addError(new FormError($this->translator->trans('altcha.validator.server_validation_error', [], 'form')));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
39
src/Altcha/Form/AltchaModel.php
Normal file
39
src/Altcha/Form/AltchaModel.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Altcha\Form;
|
||||
|
||||
use Symfony\Component\Validator\Constraints as Assert;
|
||||
|
||||
class AltchaModel
|
||||
{
|
||||
/**
|
||||
* @Assert\NotBlank()
|
||||
* @Assert\Regex("/^(SHA-1|SHA-256|SHA-512)$/")
|
||||
*/
|
||||
public string $algorithm;
|
||||
|
||||
/**
|
||||
* @Assert\NotBlank()
|
||||
*/
|
||||
public string $challenge;
|
||||
|
||||
/**
|
||||
* @Assert\NotBlank()
|
||||
*/
|
||||
public string $salt;
|
||||
|
||||
/**
|
||||
* @Assert\NotBlank()
|
||||
*/
|
||||
public int $number;
|
||||
|
||||
/**
|
||||
* @Assert\NotBlank()
|
||||
*/
|
||||
public string $signature;
|
||||
|
||||
/**
|
||||
* @Assert\NotBlank()
|
||||
*/
|
||||
public int $took;
|
||||
}
|
81
src/Altcha/Form/AltchaType.php
Normal file
81
src/Altcha/Form/AltchaType.php
Normal file
@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
namespace App\Altcha\Form;
|
||||
|
||||
use App\Altcha\AltchaTransformer;
|
||||
use App\Altcha\AltchaValidator;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\Form\FormEvents;
|
||||
use Symfony\Component\Form\FormInterface;
|
||||
use Symfony\Component\Form\FormView;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
|
||||
class AltchaType extends AbstractType
|
||||
{
|
||||
public function __construct(
|
||||
private readonly string $altchaHost,
|
||||
private readonly string $altchaBaseUrl,
|
||||
private readonly string $altchaDebug,
|
||||
private readonly string $altchaWorkers,
|
||||
private readonly string $altchaDelay,
|
||||
private readonly string $altchaMockError,
|
||||
private readonly AltchaValidator $altchaValidator,
|
||||
private readonly HttpClientInterface $httpClient,
|
||||
private readonly TranslatorInterface $translator
|
||||
) {
|
||||
}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$builder->addModelTransformer(new AltchaTransformer());
|
||||
|
||||
$builder->addEventListener(FormEvents::POST_SUBMIT, [$this->altchaValidator, 'validate']);
|
||||
}
|
||||
|
||||
public function buildView(FormView $view, FormInterface $form, array $options)
|
||||
{
|
||||
$translations = [
|
||||
'label' => $this->translator->trans('altcha.widget.label', [], 'form'),
|
||||
'verified' => $this->translator->trans('altcha.widget.verified', [], 'form'),
|
||||
'verifying' => $this->translator->trans('altcha.widget.verifying', [], 'form'),
|
||||
'waitAlert' => $this->translator->trans('altcha.widget.waitalert', [], 'form'),
|
||||
'error' => $this->translator->trans('altcha.widget.error', [], 'form'),
|
||||
'expired' => $this->translator->trans('altcha.widget.expired', [], 'form'),
|
||||
];
|
||||
$view->vars['translations'] = json_encode($translations);
|
||||
$view->vars['challengeJson'] = $this->requestChallenge();
|
||||
$view->vars['debug'] = $this->altchaDebug;
|
||||
$view->vars['workers'] = $this->altchaWorkers;
|
||||
$view->vars['delay'] = $this->altchaDelay;
|
||||
$view->vars['mockError'] = $this->altchaMockError;
|
||||
}
|
||||
|
||||
private function requestChallenge(): string
|
||||
{
|
||||
$resp = $this->httpClient->request('GET', $this->altchaHost.$this->altchaBaseUrl.'/request');
|
||||
if (Response::HTTP_OK === $resp->getStatusCode()) {
|
||||
return $resp->getContent();
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
public function getParent(): string
|
||||
{
|
||||
return TextType::class;
|
||||
}
|
||||
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->getBlockPrefix();
|
||||
}
|
||||
|
||||
public function getBlockPrefix(): string
|
||||
{
|
||||
return 'altcha';
|
||||
}
|
||||
}
|
@ -4,12 +4,13 @@ namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\ErrorHandler\Exception\FlattenException;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
class CustomErrorController extends AbstractController
|
||||
{
|
||||
#[Route(path: '/error', name: 'custom_error_controller')]
|
||||
public function show(FlattenException $exception)
|
||||
public function show(FlattenException $exception): Response
|
||||
{
|
||||
$statusCode = $exception->getStatusCode();
|
||||
$message = $exception->getMessage();
|
||||
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
@ -17,7 +18,7 @@ class LocaleController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route(path: 'locale/{locale?}', name: 'locale_change')]
|
||||
public function changeLocal(?string $locale, Request $request)
|
||||
public function changeLocal(?string $locale, Request $request): RedirectResponse
|
||||
{
|
||||
if (empty($locale)) {
|
||||
$locale = $this->params->get('default_locale');
|
||||
|
@ -5,55 +5,72 @@ namespace App\Controller;
|
||||
use App\Entity\User;
|
||||
use App\Hydra\Client;
|
||||
use App\Hydra\HydraService;
|
||||
use App\SQLLogin\SQLLoginRequest;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
|
||||
use Symfony\Component\Finder\Exception\AccessDeniedException;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
||||
use Symfony\Component\Routing\Annotation\Route;
|
||||
|
||||
class MainController extends AbstractController
|
||||
{
|
||||
public HydraService $hydra;
|
||||
public Client $client;
|
||||
public SessionInterface $session;
|
||||
|
||||
public function __construct(SessionInterface $session, HydraService $hydra, Client $client)
|
||||
{
|
||||
$this->session = $session;
|
||||
$this->client = $client;
|
||||
$this->hydra = $hydra;
|
||||
public function __construct(
|
||||
private readonly RequestStack $requestStack,
|
||||
private readonly HydraService $hydra,
|
||||
private readonly Client $client
|
||||
){
|
||||
}
|
||||
|
||||
#[Route('/', name: 'app_home')]
|
||||
public function home(Request $request)
|
||||
public function home(Request $request): RedirectResponse
|
||||
{
|
||||
return $this->hydra->handleLoginRequest($request);
|
||||
}
|
||||
|
||||
/*
|
||||
* Route de Healthcheck (notament pour kubernetes)
|
||||
*/
|
||||
#[Route('/health', name: 'health')]
|
||||
public function health(Request $request)
|
||||
public function health(): Response
|
||||
{
|
||||
return new Response('healthy', 200);
|
||||
return new Response('healthy', Response::HTTP_OK);
|
||||
}
|
||||
|
||||
#[Route('/connect/login-accept', name: 'app_login_accept')]
|
||||
public function loginAccept(Request $request)
|
||||
#[Route('/connect/login-accept', name: 'app_login_accept', methods: ['GET'])]
|
||||
public function loginAccept(SQLLoginRequest $sqlLoginRequest): RedirectResponse
|
||||
{
|
||||
/** @var User */
|
||||
$user = $this->getUser();
|
||||
$loginAcceptRes = $this->client->acceptLoginRequest($this->session->get('challenge'), [
|
||||
'subject' => $user->getLogin(),
|
||||
'remember' => true,
|
||||
])->toArray();
|
||||
|
||||
if (!$user instanceof User) {
|
||||
throw new AccessDeniedException();
|
||||
}
|
||||
$challenge = $this->requestStack->getSession()->get('challenge');
|
||||
if (!$challenge) {
|
||||
return new RedirectResponse($this->getParameter('issuer_url'));
|
||||
}
|
||||
|
||||
$subject = $user->getLogin();
|
||||
|
||||
$subjectRewriteExpression = $sqlLoginRequest->getSubjectRewriteExpression();
|
||||
if (null != $subjectRewriteExpression) {
|
||||
$expressionLanguage = new ExpressionLanguage();
|
||||
|
||||
$subject = $expressionLanguage->evaluate($subjectRewriteExpression, $user->getAttributes());
|
||||
}
|
||||
|
||||
$loginAcceptRes = $this->client->acceptLoginRequest($challenge, [
|
||||
'subject' => $subject,
|
||||
'remember' => true,
|
||||
])->toArray();
|
||||
|
||||
return new RedirectResponse($loginAcceptRes['redirect_to']);
|
||||
}
|
||||
|
||||
#[Route('/connect/consent', name: 'app_consent')]
|
||||
public function consent(Request $request)
|
||||
public function consent(Request $request): RedirectResponse
|
||||
{
|
||||
return $this->hydra->handleConsentRequest($request);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ use Symfony\Contracts\Translation\TranslatorInterface;
|
||||
class SecurityController extends AbstractController
|
||||
{
|
||||
#[Route('/login', name: 'app_login')]
|
||||
public function login(ParameterBagInterface $params, AuthenticationUtils $authenticationUtils, Request $request, TranslatorInterface $trans): Response
|
||||
public function login(ParameterBagInterface $params, AuthenticationUtils $authenticationUtils, Request $request, TranslatorInterface $trans): Response|RedirectResponse
|
||||
{
|
||||
// Si l'utilisateur est déjà connecté on le renvoie sur la page du site demandeur
|
||||
if ($this->getUser()) {
|
||||
@ -29,26 +29,22 @@ class SecurityController extends AbstractController
|
||||
$error = $authenticationUtils->getLastAuthenticationError();
|
||||
if ($error) {
|
||||
if ($request->getSession()->has(SQLLoginUserAuthenticator::ERROR_LOGIN)) {
|
||||
$loginForm->get('login')->addError(new FormError($trans->trans('error.login', [], 'messages')));
|
||||
$loginForm->addError(new FormError($trans->trans('error.login', [], 'messages')));
|
||||
$request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_LOGIN);
|
||||
}
|
||||
if ($request->getSession()->has(SQLLoginUserAuthenticator::ERROR_PASSWORD)) {
|
||||
$loginForm->get('password')->addError(new FormError($trans->trans('error.password', [], 'messages')));
|
||||
$request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_PASSWORD);
|
||||
}
|
||||
if ($request->getSession()->has(SQLLoginUserAuthenticator::ERROR_SQL_LOGIN)) {
|
||||
$loginForm->addError(new FormError($trans->trans('error.sql_login', [], 'messages')));
|
||||
$request->getSession()->remove(SQLLoginUserAuthenticator::ERROR_SQL_LOGIN);
|
||||
if ($request->getSession()->has(SQLLoginUserAuthenticator::TECHNICAL_ERROR)) {
|
||||
$loginForm->addError(new FormError($trans->trans('error.technical', [], 'messages')));
|
||||
$request->getSession()->remove(SQLLoginUserAuthenticator::TECHNICAL_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render('login.html.twig', [
|
||||
'loginForm' => $loginForm->createView(),
|
||||
'loginForm' => $loginForm,
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/logout', name: 'logout')]
|
||||
public function logout(Request $request)
|
||||
public function logout(): void
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,7 @@ use Symfony\Component\Config\Definition\ConfigurationInterface;
|
||||
|
||||
class SQLLoginConfiguration implements ConfigurationInterface
|
||||
{
|
||||
public function getConfigTreeBuilder()
|
||||
public function getConfigTreeBuilder(): TreeBuilder
|
||||
{
|
||||
$treeBuilder = new TreeBuilder('sql_login');
|
||||
$treeBuilder->getRootNode()->children()
|
||||
@ -19,6 +19,7 @@ class SQLLoginConfiguration implements ConfigurationInterface
|
||||
->arrayNode(SQLLoginRequest::DATA_TO_FETCH)
|
||||
->scalarPrototype()->end()
|
||||
->end()
|
||||
->scalarNode(SQLLoginRequest::SUBJECT_REWRITE_EXPRESSION)->defaultNull()->end()
|
||||
->end();
|
||||
|
||||
return $treeBuilder;
|
||||
|
@ -6,17 +6,15 @@ use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
class User implements UserInterface
|
||||
{
|
||||
protected array $attributes = [];
|
||||
private array $attributes = [];
|
||||
private string $login;
|
||||
private string $password;
|
||||
private bool $rememberMe;
|
||||
|
||||
public function __construct($login, $password, $attributes, $rememberMe = false)
|
||||
public function __construct($login, $password, $attributes)
|
||||
{
|
||||
$this->password = $password;
|
||||
$this->login = $login;
|
||||
$this->attributes = $attributes;
|
||||
$this->rememberMe = $rememberMe;
|
||||
}
|
||||
|
||||
public function getLogin(): ?string
|
||||
@ -34,11 +32,6 @@ class User implements UserInterface
|
||||
return $this->attributes;
|
||||
}
|
||||
|
||||
public function getRememberMe(): bool
|
||||
{
|
||||
return $this->rememberMe;
|
||||
}
|
||||
|
||||
public function getRoles(): array
|
||||
{
|
||||
return ['ROLE_USER'];
|
||||
|
@ -16,7 +16,7 @@ class LocaleSubscriber implements EventSubscriberInterface
|
||||
$this->defaultLocale = $defaultLocale;
|
||||
}
|
||||
|
||||
public function onKernelRequest(RequestEvent $event)
|
||||
public function onKernelRequest(RequestEvent $event): void
|
||||
{
|
||||
$request = $event->getRequest();
|
||||
if (!$request->hasPreviousSession()) {
|
||||
@ -32,7 +32,7 @@ class LocaleSubscriber implements EventSubscriberInterface
|
||||
}
|
||||
}
|
||||
|
||||
public static function getSubscribedEvents()
|
||||
public static function getSubscribedEvents(): array
|
||||
{
|
||||
return [
|
||||
KernelEvents::REQUEST => [['onKernelRequest', 20]],
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
namespace App\Form;
|
||||
|
||||
use App\Altcha\Form\AltchaType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
@ -11,6 +11,11 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class LoginType extends AbstractType
|
||||
{
|
||||
public function __construct(
|
||||
private readonly bool $altchaEnabled
|
||||
) {
|
||||
}
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$builder
|
||||
@ -22,12 +27,15 @@ class LoginType extends AbstractType
|
||||
'translation_domain' => 'form',
|
||||
'label' => 'form.label.password',
|
||||
])
|
||||
->add('_remember_me', CheckboxType::class, [
|
||||
'required' => false,
|
||||
'translation_domain' => 'form',
|
||||
'label' => 'form.label.remember_me',
|
||||
])
|
||||
;
|
||||
|
||||
if ($this->altchaEnabled) {
|
||||
$builder->add('altcha', AltchaType::class, [
|
||||
'translation_domain' => 'form',
|
||||
'label' => 'altcha.widget.title',
|
||||
'required' => true,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
|
@ -8,25 +8,28 @@ use Symfony\Contracts\HttpClient\ResponseInterface;
|
||||
|
||||
class Client
|
||||
{
|
||||
protected $client;
|
||||
private const int MAX_RETRY = 3;
|
||||
private const array SLEEP_TIME = [
|
||||
5,
|
||||
500,
|
||||
5000,
|
||||
];
|
||||
|
||||
protected $hydraAdminBaseUrl;
|
||||
|
||||
public function __construct(HttpClientInterface $client, string $hydraAdminBaseUrl)
|
||||
{
|
||||
$this->client = $client;
|
||||
$this->hydraAdminBaseUrl = $hydraAdminBaseUrl;
|
||||
public function __construct(
|
||||
private readonly HttpClientInterface $client,
|
||||
private readonly string $hydraAdminBaseUrl
|
||||
) {
|
||||
}
|
||||
|
||||
public function fetchLoginRequestInfo(string $loginChallenge): ResponseInterface
|
||||
{
|
||||
$response = $this->client->request(
|
||||
'GET',
|
||||
$this->hydraAdminBaseUrl . '/oauth2/auth/requests/login',
|
||||
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/login',
|
||||
[
|
||||
'query' => [
|
||||
'login_challenge' => $loginChallenge,
|
||||
]
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
@ -35,7 +38,6 @@ class Client
|
||||
throw new InvalidChallengeException();
|
||||
}
|
||||
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
@ -43,11 +45,11 @@ class Client
|
||||
{
|
||||
$response = $this->client->request(
|
||||
'GET',
|
||||
$this->hydraAdminBaseUrl . '/oauth2/auth/requests/logout',
|
||||
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/logout',
|
||||
[
|
||||
'query' => [
|
||||
'logout_challenge' => $logoutChallenge,
|
||||
]
|
||||
],
|
||||
]
|
||||
);
|
||||
|
||||
@ -56,27 +58,38 @@ class Client
|
||||
throw new InvalidChallengeException();
|
||||
}
|
||||
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function fetchConsentRequestInfo(string $consentChallenge): ResponseInterface
|
||||
{
|
||||
$response = $this->client->request(
|
||||
'GET',
|
||||
$this->hydraAdminBaseUrl . '/oauth2/auth/requests/consent',
|
||||
[
|
||||
'query' => [
|
||||
'consent_challenge' => $consentChallenge,
|
||||
$attempt = 0;
|
||||
while ($attempt < self::MAX_RETRY) {
|
||||
$response = $this->client->request(
|
||||
'GET',
|
||||
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/consent',
|
||||
[
|
||||
'query' => [
|
||||
'consent_challenge' => $consentChallenge,
|
||||
],
|
||||
]
|
||||
]
|
||||
);
|
||||
);
|
||||
|
||||
switch ($response->getStatusCode()) {
|
||||
case 404:
|
||||
throw new InvalidChallengeException();
|
||||
$status = $response->getStatusCode();
|
||||
if (503 === $status) {
|
||||
++$attempt;
|
||||
usleep(1000 * self::SLEEP_TIME[$attempt] + random_int(1, 5) * 1000);
|
||||
continue;
|
||||
}
|
||||
switch ($status) {
|
||||
case 404:
|
||||
throw new InvalidChallengeException();
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (self::MAX_RETRY === $attempt) {
|
||||
throw new \Exception(sprintf('Fetch consent a rencontré une erreur %s après %s tentatives', $response->getStatusCode(), self::MAX_RETRY));
|
||||
}
|
||||
|
||||
|
||||
return $response;
|
||||
}
|
||||
@ -85,18 +98,18 @@ class Client
|
||||
{
|
||||
$response = $this->client->request(
|
||||
'PUT',
|
||||
$this->hydraAdminBaseUrl . '/oauth2/auth/requests/login/accept',
|
||||
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/login/accept',
|
||||
[
|
||||
'query' => [
|
||||
'login_challenge' => $loginChallenge,
|
||||
],
|
||||
'headers' => [
|
||||
'Content-Type' => 'application/json'
|
||||
'Content-Type' => 'application/json',
|
||||
],
|
||||
'body' => json_encode($payload),
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
@ -104,13 +117,13 @@ class Client
|
||||
{
|
||||
$response = $this->client->request(
|
||||
'PUT',
|
||||
$this->hydraAdminBaseUrl . '/oauth2/auth/requests/consent/accept',
|
||||
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/consent/accept',
|
||||
[
|
||||
'query' => [
|
||||
'consent_challenge' => $consentChallenge,
|
||||
],
|
||||
'headers' => [
|
||||
'Content-Type' => 'application/json'
|
||||
'Content-Type' => 'application/json',
|
||||
],
|
||||
'body' => json_encode($payload),
|
||||
]
|
||||
@ -123,13 +136,13 @@ class Client
|
||||
{
|
||||
$response = $this->client->request(
|
||||
'PUT',
|
||||
$this->hydraAdminBaseUrl . '/oauth2/auth/requests/logout/accept',
|
||||
$this->hydraAdminBaseUrl.'/oauth2/auth/requests/logout/accept',
|
||||
[
|
||||
'query' => [
|
||||
'logout_challenge' => $logoutChallenge,
|
||||
],
|
||||
'headers' => [
|
||||
'Content-Type' => 'application/json'
|
||||
'Content-Type' => 'application/json',
|
||||
],
|
||||
]
|
||||
);
|
||||
|
@ -6,4 +6,4 @@ use Symfony\Component\HttpFoundation\Exception\BadRequestException;
|
||||
|
||||
class InvalidIssuerException extends BadRequestException
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -2,30 +2,27 @@
|
||||
|
||||
namespace App\Hydra;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Hydra\Exception\InvalidChallengeException;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
|
||||
|
||||
class HydraService extends AbstractController
|
||||
{
|
||||
public SessionInterface $session;
|
||||
public Client $client;
|
||||
public TokenStorageInterface $tokenStorage;
|
||||
public string $baseUrl;
|
||||
|
||||
public function __construct(Client $client, SessionInterface $session, TokenStorageInterface $tokenStorage, string $baseUrl)
|
||||
{
|
||||
$this->session = $session;
|
||||
$this->client = $client;
|
||||
$this->tokenStorage = $tokenStorage;
|
||||
$this->baseUrl = $baseUrl;
|
||||
public function __construct(
|
||||
private readonly Client $client,
|
||||
private readonly RequestStack $requestStack,
|
||||
private readonly TokenStorageInterface $tokenStorage,
|
||||
private readonly string $baseUrl
|
||||
){
|
||||
}
|
||||
|
||||
public function handleLoginRequest(Request $request)
|
||||
public function handleLoginRequest(Request $request): RedirectResponse
|
||||
{
|
||||
$challenge = $request->query->get('login_challenge');
|
||||
// S'il n'y a pas de challenge, on déclenche une bad request
|
||||
@ -36,16 +33,16 @@ class HydraService extends AbstractController
|
||||
$res = $this->client->fetchLoginRequestInfo($challenge);
|
||||
$loginRequestInfo = $res->toArray();
|
||||
if (200 !== $res->getStatusCode()) {
|
||||
$this->session->clear();
|
||||
throw new BadRequestException('pas de code 200');
|
||||
$this->requestStack->getSession()->clear();
|
||||
throw new BadRequestException();
|
||||
}
|
||||
// si le challenge est validé par hydra, on le stocke en session pour l'utiliser par la suite et on redirige vers une route interne protégée qui va déclencher l'identification FranceConnect
|
||||
$this->session->set('challenge', $loginRequestInfo['challenge']);
|
||||
$this->requestStack->getSession()->set('challenge', $loginRequestInfo['challenge']);
|
||||
|
||||
return new RedirectResponse($this->baseUrl.'/connect/login-accept');
|
||||
}
|
||||
|
||||
public function handleConsentRequest(Request $request)
|
||||
public function handleConsentRequest(Request $request): RedirectResponse
|
||||
{
|
||||
$challenge = $request->query->get('consent_challenge');
|
||||
if (!$challenge) {
|
||||
@ -53,8 +50,10 @@ class HydraService extends AbstractController
|
||||
}
|
||||
|
||||
$consentRequestInfo = $this->client->fetchConsentRequestInfo($challenge)->toArray();
|
||||
/** @var User */
|
||||
$user = $this->getUser();
|
||||
if (!$user instanceof User) {
|
||||
throw new AccessDeniedException('Utilisateur non autorisé.');
|
||||
}
|
||||
$consentAcceptResponse = $this->client->acceptConsentRequest($consentRequestInfo['challenge'], [
|
||||
'grant_scope' => $consentRequestInfo['requested_scope'],
|
||||
'session' => [
|
||||
@ -65,7 +64,7 @@ class HydraService extends AbstractController
|
||||
return new RedirectResponse($consentAcceptResponse['redirect_to']);
|
||||
}
|
||||
|
||||
public function handleLogoutRequest(Request $request)
|
||||
public function handleLogoutRequest(Request $request): RedirectResponse
|
||||
{
|
||||
$logoutChallenge = $request->get('logout_challenge');
|
||||
if (empty($logoutChallenge)) {
|
||||
@ -73,7 +72,7 @@ class HydraService extends AbstractController
|
||||
}
|
||||
$logoutRequestInfo = $this->client->fetchLogoutRequestInfo($logoutChallenge)->toArray();
|
||||
$logoutAcceptRes = $this->client->acceptLogoutRequest($logoutRequestInfo['challenge'])->toArray();
|
||||
$this->session->clear();
|
||||
$this->requestStack->getSession()->clear();
|
||||
$this->tokenStorage->setToken(null);
|
||||
|
||||
return new RedirectResponse($logoutAcceptRes['redirect_to']);
|
||||
|
@ -4,6 +4,6 @@ namespace App\SQLLogin\Exception;
|
||||
|
||||
use Exception;
|
||||
|
||||
class InvalidSQLLoginConfigurationException extends Exception
|
||||
class DataToFetchConfigurationException extends Exception
|
||||
{
|
||||
}
|
@ -4,6 +4,6 @@ namespace App\SQLLogin\Exception;
|
||||
|
||||
use Exception;
|
||||
|
||||
class InvalidSQLLoginException extends Exception
|
||||
class EmptyResultException extends Exception
|
||||
{
|
||||
}
|
@ -4,6 +4,6 @@ namespace App\SQLLogin\Exception;
|
||||
|
||||
use Exception;
|
||||
|
||||
class InvalidSQLLoginAlgoException extends Exception
|
||||
class NullDataToFetchException extends Exception
|
||||
{
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace App\SQLLogin\Exception;
|
||||
|
||||
use Exception;
|
||||
|
||||
class SecurityPatternConfigurationException extends Exception
|
||||
{
|
||||
}
|
@ -12,10 +12,8 @@ class SQLLoginConnect extends AbstractController
|
||||
/**
|
||||
* Méthode qui crée l'unique instance de la classe
|
||||
* si elle n'existe pas encore puis la retourne.
|
||||
*
|
||||
* @return SQLLoginConnect
|
||||
*/
|
||||
public static function getInstance()
|
||||
public static function getInstance(): SQLLoginConnect
|
||||
{
|
||||
if (is_null(self::$_instance)) {
|
||||
self::$_instance = new SQLLoginConnect();
|
||||
@ -24,7 +22,7 @@ class SQLLoginConnect extends AbstractController
|
||||
return self::$_instance;
|
||||
}
|
||||
|
||||
public function connect($urlDatabase, $dbUser, $dbPassword)
|
||||
public function connect($urlDatabase, $dbUser, $dbPassword): PDO
|
||||
{
|
||||
return new PDO($urlDatabase, $dbUser, $dbPassword);
|
||||
}
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\SQLLogin;
|
||||
|
||||
use App\SQLLogin\Exception\NullDataToFetchException;
|
||||
|
||||
class SQLLoginRequest
|
||||
{
|
||||
public const DATA_TO_FETCH = 'data_to_fetch';
|
||||
@ -10,11 +12,12 @@ class SQLLoginRequest
|
||||
public const PASSWORD_COLUMN_NAME = 'password_column_name';
|
||||
public const PASSWORD_NEED_UPGRADE = 'password_need_upgrade';
|
||||
public const TABLE_NAME = 'table_name';
|
||||
public const SUBJECT_REWRITE_EXPRESSION = 'subject_rewrite_expression';
|
||||
|
||||
protected array $config;
|
||||
protected string $dsn;
|
||||
protected string $user;
|
||||
protected string $password;
|
||||
private array $config;
|
||||
private string $dsn;
|
||||
private string $user;
|
||||
private string $password;
|
||||
|
||||
public function __construct(string $dsn, string $user, string $password, array $config = [])
|
||||
{
|
||||
@ -64,28 +67,42 @@ class SQLLoginRequest
|
||||
return $this->config[self::DATA_TO_FETCH];
|
||||
}
|
||||
|
||||
public function getRequestScope()
|
||||
public function getSubjectRewriteExpression(): ?string
|
||||
{
|
||||
$scope = '';
|
||||
foreach ($this->config[self::DATA_TO_FETCH] as $data) {
|
||||
$scope .= $data.',';
|
||||
}
|
||||
$scope = substr($scope, 0, -1);
|
||||
return $this->config[self::SUBJECT_REWRITE_EXPRESSION];
|
||||
}
|
||||
|
||||
return 'SELECT '.$scope.' FROM '.$this->getTableName().' WHERE '.$this->getLoginColumnName().' = :'.$this->getLoginColumnName().';';
|
||||
private function getDataFields(): array
|
||||
{
|
||||
if (!$this->config[self::DATA_TO_FETCH]) {
|
||||
throw new NullDataToFetchException();
|
||||
}
|
||||
|
||||
return $this->config[self::DATA_TO_FETCH];
|
||||
}
|
||||
|
||||
/**
|
||||
* Construction de la string pour la requête préparée selon la configuration yaml
|
||||
* intègre la récupération du mot de passe hashé, du salt et de besoin d'upgrade de la méthode de hashage
|
||||
*/
|
||||
public function getRequestPassword()
|
||||
private function getPasswordFields(): array
|
||||
{
|
||||
$fields = $this->getPasswordColumnName();
|
||||
$fields[] = $this->getPasswordColumnName();
|
||||
if (!empty($this->getSaltColumnName())) {
|
||||
$fields .= ', '.$this->getSaltColumnName();
|
||||
$fields[] = $this->getSaltColumnName();
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construction de la string pour la requête préparée selon la configuration yaml
|
||||
* intègre la récupération du mot de passe hashé, du salt et de besoin d'upgrade de la méthode de hashage
|
||||
*/
|
||||
public function getDatasRequest(): string
|
||||
{
|
||||
$fields = join(',', array_merge($this->getPasswordFields(), $this->getDataFields()));
|
||||
|
||||
return 'SELECT '.$fields.' FROM '.$this->getTableName().' WHERE '.$this->getLoginColumnName().' = :'.$this->getLoginColumnName().';';
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,9 @@
|
||||
|
||||
namespace App\Security\Hasher;
|
||||
|
||||
use App\SQLLogin\Exception\InvalidSQLLoginConfigurationException;
|
||||
use App\SQLLogin\Exception\InvalidSQLPasswordException;
|
||||
use App\SQLLogin\Exception\SecurityPatternConfigurationException;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\PasswordHasher\Exception\InvalidPasswordException;
|
||||
use Symfony\Component\PasswordHasher\Hasher\CheckPasswordLengthTrait;
|
||||
use Symfony\Component\PasswordHasher\LegacyPasswordHasherInterface;
|
||||
@ -19,7 +20,7 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||
protected array $hashAlgoLegacy;
|
||||
protected array $securityPattern;
|
||||
|
||||
public function __construct(?string $pepper, string $hashAlgoLegacy, string $securityPattern)
|
||||
public function __construct(?string $pepper, string $hashAlgoLegacy, string $securityPattern, private LoggerInterface $loggerInterface)
|
||||
{
|
||||
$this->pepper = $pepper;
|
||||
$this->hashAlgoLegacy = explode(',', $hashAlgoLegacy);
|
||||
@ -29,7 +30,7 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||
/**
|
||||
* Pas utilisé, mais on doit le garder pour le implements
|
||||
*/
|
||||
public function hash(string $plainPassword, string $salt = null): string
|
||||
public function hash(string $plainPassword, ?string $salt = null): string
|
||||
{
|
||||
if ($this->isPasswordTooLong($plainPassword)) {
|
||||
throw new InvalidPasswordException();
|
||||
@ -38,7 +39,7 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||
return hash($plainPassword.$salt, $this->hashAlgoLegacy[0]);
|
||||
}
|
||||
|
||||
public function verify(string $hashedPassword, string $plainPassword, string $salt = null): bool
|
||||
public function verify(string $hashedPassword, string $plainPassword, ?string $salt = null): bool
|
||||
{
|
||||
if ('' === $plainPassword || $this->isPasswordTooLong($plainPassword)) {
|
||||
return false;
|
||||
@ -46,20 +47,20 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||
|
||||
$completedPassword = $this->getPasswordToHash($plainPassword, $salt);
|
||||
|
||||
foreach ($this->hashAlgoLegacy as $algo) {
|
||||
if ('ssha' === $algo && $this->compareSsha($hashedPassword, $completedPassword)) {
|
||||
if (str_starts_with($hashedPassword, '{SSHA}') && $this->compareSsha($hashedPassword, $plainPassword)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (password_verify($completedPassword, $hashedPassword)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
foreach (hash_algos() as $algo) {
|
||||
if (hash_equals($hashedPassword, hash($algo, $completedPassword))) {
|
||||
return true;
|
||||
}
|
||||
if ($this->isObsoleteAlgo($algo)) {
|
||||
if (hash_equals(hash($algo, $completedPassword), $hashedPassword)) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (password_verify($completedPassword, $hashedPassword)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new InvalidSQLPasswordException();
|
||||
}
|
||||
|
||||
@ -75,13 +76,8 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||
|
||||
/**
|
||||
* Retourne la string à hasher en fonction du pattern indiqué
|
||||
*
|
||||
* @param mixed $plainTextPassword
|
||||
* @param mixed $salt
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getPasswordToHash($plainTextPassword, $salt)
|
||||
protected function getPasswordToHash(string $plainTextPassword, ?string $salt = null): string
|
||||
{
|
||||
$arrayRef = [
|
||||
self::PASSWORD_PATTERN => $plainTextPassword,
|
||||
@ -91,7 +87,8 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||
|
||||
foreach ($this->securityPattern as $term) {
|
||||
if (self::PEPPER_PATTERN !== $term && self::PASSWORD_PATTERN !== $term && self::SALT_PATTERN !== $term) {
|
||||
throw new InvalidSQLLoginConfigurationException();
|
||||
$this->loggerInterface->critical('La configuration du security pattern est invalide, les termes autorisés sont : '.self::PASSWORD_PATTERN.', '.self::SALT_PATTERN.' et '.self::PEPPER_PATTERN);
|
||||
throw new SecurityPatternConfigurationException('La configuration du security pattern est invalide, les termes autorisés sont : '.self::PASSWORD_PATTERN.', '.self::SALT_PATTERN.' et '.self::PEPPER_PATTERN);
|
||||
}
|
||||
}
|
||||
$completedPlainPassword = '';
|
||||
@ -102,7 +99,7 @@ class PasswordEncoder implements LegacyPasswordHasherInterface
|
||||
return $completedPlainPassword;
|
||||
}
|
||||
|
||||
protected function compareSsha($hashPassword, $plainPassword)
|
||||
protected function compareSsha(string $hashPassword, string $plainPassword): bool
|
||||
{
|
||||
$base_64_hash_with_salt = substr($hashPassword, 6);
|
||||
$hash_with_salt = base64_decode($base_64_hash_with_salt);
|
||||
|
@ -5,36 +5,34 @@ namespace App\Security;
|
||||
use App\Entity\User;
|
||||
use App\Security\Hasher\PasswordEncoder;
|
||||
use App\Service\SQLLoginService;
|
||||
use App\SQLLogin\Exception\DataToFetchConfigurationException;
|
||||
use App\SQLLogin\Exception\EmptyResultException;
|
||||
use App\SQLLogin\Exception\InvalidSQLPasswordException;
|
||||
use PDOException;
|
||||
use App\SQLLogin\Exception\SecurityPatternConfigurationException;
|
||||
use App\SQLLogin\SQLLoginRequest;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Exception\AuthenticationException;
|
||||
use Symfony\Component\Security\Core\Security;
|
||||
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
use Symfony\Component\Security\Http\Authenticator\AbstractLoginFormAuthenticator;
|
||||
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;
|
||||
use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
|
||||
use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
|
||||
use Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport;
|
||||
use Symfony\Component\Security\Http\SecurityRequestAttributes;
|
||||
|
||||
class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
|
||||
{
|
||||
public const LOGIN_ROUTE = 'app_login';
|
||||
public const ERROR_LOGIN = 'error_login';
|
||||
public const ERROR_PASSWORD = 'error_password';
|
||||
public const ERROR_SQL_LOGIN = 'error_sql_login';
|
||||
public const TECHNICAL_ERROR = 'technical_error';
|
||||
|
||||
protected string $baseUrl;
|
||||
private SQLLoginService $sqlLoginService;
|
||||
private PasswordEncoder $passwordHasher;
|
||||
|
||||
public function __construct(string $baseUrl, SQLLoginService $sqlLoginService, PasswordEncoder $passwordHasher)
|
||||
{
|
||||
$this->baseUrl = $baseUrl;
|
||||
$this->sqlLoginService = $sqlLoginService;
|
||||
$this->passwordHasher = $passwordHasher;
|
||||
public function __construct(
|
||||
private readonly string $baseUrl,
|
||||
private readonly SQLLoginService $sqlLoginService,
|
||||
private readonly PasswordEncoder $passwordHasher,
|
||||
private readonly SQLLoginRequest $sqlLoginRequest
|
||||
){
|
||||
}
|
||||
|
||||
/**
|
||||
@ -47,58 +45,70 @@ class SQLLoginUserAuthenticator extends AbstractLoginFormAuthenticator
|
||||
return self::LOGIN_ROUTE === $request->attributes->get('_route') && $request->isMethod('POST');
|
||||
}
|
||||
|
||||
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey): ?Response
|
||||
public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey): RedirectResponse
|
||||
{
|
||||
return new RedirectResponse($this->baseUrl.'/connect/login-accept');
|
||||
}
|
||||
|
||||
public function onAuthenticationFailure(Request $request, AuthenticationException $exception): Response
|
||||
public function onAuthenticationFailure(Request $request, AuthenticationException $exception): RedirectResponse
|
||||
{
|
||||
$request->getSession()->set(Security::AUTHENTICATION_ERROR, $exception);
|
||||
$request->getSession()->set(SecurityRequestAttributes::AUTHENTICATION_ERROR, $exception);
|
||||
|
||||
return new RedirectResponse($this->baseUrl.'/login');
|
||||
}
|
||||
|
||||
public function authenticate(Request $request): Passport
|
||||
public function authenticate(Request $request): SelfValidatingPassport
|
||||
{
|
||||
$form = $request->request->get('login');
|
||||
$form = $request->request->all(key: 'login');
|
||||
$login = $form['login'];
|
||||
$plaintextPassword = $form['password'];
|
||||
$rememberMe = isset($form['_remember_me']) ? true : false;
|
||||
$session = $request->getSession();
|
||||
try {
|
||||
// requête préparée
|
||||
list($remoteHashedPassword, $remoteSalt) = $this->sqlLoginService->fetchPassword($login);
|
||||
} catch (PDOException $e) {
|
||||
$request->getSession()->set(self::ERROR_SQL_LOGIN, true);
|
||||
$datas = $this->sqlLoginService->fetchPasswordAndDatas($login);
|
||||
} catch (EmptyResultException $e) {
|
||||
$session->set(self::ERROR_LOGIN, true);
|
||||
throw new AuthenticationException();
|
||||
} catch (DataToFetchConfigurationException|\PDOException $e) {
|
||||
\Sentry\captureException($e);
|
||||
$session->set(self::TECHNICAL_ERROR, true);
|
||||
throw new AuthenticationException();
|
||||
}
|
||||
if ($remoteHashedPassword) {
|
||||
try {
|
||||
// Comparaison remote hash et hash du input password + salt
|
||||
$this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt);
|
||||
$attributes = $this->sqlLoginService->fetchDatas($login);
|
||||
$user = new User($login, $remoteHashedPassword, $attributes, $rememberMe);
|
||||
|
||||
$loader = function (string $userIdentifier) use ($user) {
|
||||
return $user->getLogin() == $userIdentifier ? $user : null;
|
||||
};
|
||||
$passport = new SelfValidatingPassport(new UserBadge($login, $loader));
|
||||
if ($rememberMe) {
|
||||
$passport->addBadge(new RememberMeBadge());
|
||||
}
|
||||
$passport->setAttribute('attributes', $user->getAttributes());
|
||||
|
||||
return $passport;
|
||||
} catch (InvalidSQLPasswordException $e) {
|
||||
$request->getSession()->set(self::ERROR_PASSWORD, true);
|
||||
throw new AuthenticationException();
|
||||
} catch (PDOException $e) {
|
||||
$request->getSession()->set(self::ERROR_SQL_LOGIN, true);
|
||||
throw new AuthenticationException();
|
||||
}
|
||||
$remoteHashedPassword = $datas[$this->sqlLoginRequest->getPasswordColumnName()];
|
||||
unset($datas[$this->sqlLoginRequest->getPasswordColumnName()]);
|
||||
$remoteSalt = null;
|
||||
if ($this->sqlLoginRequest->getSaltColumnName() && isset($datas[$this->sqlLoginRequest->getSaltColumnName()])) {
|
||||
$remoteSalt = $datas[$this->sqlLoginRequest->getSaltColumnName()];
|
||||
unset($datas[$this->sqlLoginRequest->getSaltColumnName()]);
|
||||
}
|
||||
$request->getSession()->set(self::ERROR_LOGIN, true);
|
||||
throw new AuthenticationException();
|
||||
if (null === $remoteHashedPassword) {
|
||||
$remoteHashedPassword = '';
|
||||
}
|
||||
try {
|
||||
// Comparaison remote hash et hash du input password + salt
|
||||
$this->passwordHasher->verify($remoteHashedPassword, $plaintextPassword, $remoteSalt);
|
||||
} catch (InvalidSQLPasswordException $e) {
|
||||
$session->set(self::ERROR_LOGIN, true);
|
||||
throw new AuthenticationException();
|
||||
} catch (SecurityPatternConfigurationException $e) {
|
||||
\Sentry\captureException($e);
|
||||
$session->set(self::TECHNICAL_ERROR, true);
|
||||
throw new AuthenticationException();
|
||||
}
|
||||
|
||||
$user = new User($login, $remoteHashedPassword, $datas);
|
||||
|
||||
$loader = function (string $userIdentifier) use ($user): UserInterface {
|
||||
if ($user->getLogin() !== $userIdentifier) {
|
||||
throw new UserNotFoundException(sprintf('User "%s" not found.', $userIdentifier));
|
||||
}
|
||||
|
||||
return $user;
|
||||
};
|
||||
|
||||
$passport = new SelfValidatingPassport(new UserBadge($login, $loader));
|
||||
$passport->setAttribute('attributes', $user->getAttributes());
|
||||
|
||||
return $passport;
|
||||
}
|
||||
|
||||
protected function getLoginUrl(Request $request): string
|
||||
|
@ -3,45 +3,48 @@
|
||||
namespace App\Security;
|
||||
|
||||
use App\Entity\User;
|
||||
use App\Service\SQLLoginService;
|
||||
use App\SQLLogin\SQLLoginRequest;
|
||||
use Symfony\Component\HttpFoundation\RequestStack;
|
||||
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
|
||||
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
use Symfony\Component\Security\Core\User\UserProviderInterface;
|
||||
|
||||
class SQLLoginUserProvider implements UserProviderInterface
|
||||
{
|
||||
protected RequestStack $requestStack;
|
||||
|
||||
public function __construct(RequestStack $requestStack)
|
||||
{
|
||||
$this->requestStack = $requestStack;
|
||||
public function __construct(
|
||||
private readonly RequestStack $requestStack,
|
||||
private readonly SQLLoginService $sqlLoginService,
|
||||
private readonly SQLLoginRequest $sqlLoginRequest
|
||||
){
|
||||
}
|
||||
|
||||
public function loadUserByIdentifier(string $identifier, ?User $user): ?UserInterface
|
||||
public function loadUserByIdentifier(string $identifier): UserInterface
|
||||
{
|
||||
if ($user->getUserIdentifier() === $identifier) {
|
||||
return $user;
|
||||
$user = $this->sqlLoginService->fetchPasswordAndDatas($identifier);
|
||||
|
||||
$attributes = $user;
|
||||
unset($attributes[$this->sqlLoginRequest->getPasswordColumnName()]);
|
||||
|
||||
if (empty($user[$this->sqlLoginRequest->getLoginColumnName()]) || empty($user[$this->sqlLoginRequest->getPasswordColumnName()])) {
|
||||
throw new UserNotFoundException('email or password not found');
|
||||
}
|
||||
|
||||
return null;
|
||||
return new User($user[$this->sqlLoginRequest->getLoginColumnName()], $user[$this->sqlLoginRequest->getPasswordColumnName()], $attributes);
|
||||
}
|
||||
|
||||
public function loadUserByUsername(string $username): ?UserInterface
|
||||
{
|
||||
return $this->loadUserByIdentifier($username, null);
|
||||
}
|
||||
|
||||
public function refreshUser(UserInterface $user)
|
||||
public function refreshUser(UserInterface $user): UserInterface
|
||||
{
|
||||
if (!$user instanceof User) {
|
||||
throw new UnsupportedUserException(sprintf('Invalid user class "%s".', get_class($user)));
|
||||
}
|
||||
|
||||
return $this->loadUserByIdentifier($user->getUserIdentifier(), $user);
|
||||
return $this->loadUserByIdentifier($user->getUserIdentifier());
|
||||
}
|
||||
|
||||
public function supportsClass(string $class)
|
||||
public function supportsClass(string $class): bool
|
||||
{
|
||||
return User::class === $class || is_subclass_of($class, User::class);
|
||||
return User::class === $class || \is_subclass_of($class, User::class);
|
||||
}
|
||||
}
|
||||
|
@ -2,72 +2,70 @@
|
||||
|
||||
namespace App\Service;
|
||||
|
||||
use App\SQLLogin\Exception\EmptyResultException;
|
||||
use App\SQLLogin\SQLLoginConnect;
|
||||
use App\SQLLogin\SQLLoginRequest;
|
||||
use PDO;
|
||||
use PDOException;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
class SQLLoginService extends AbstractController
|
||||
{
|
||||
public SQLLoginRequest $sqlLoginRequest;
|
||||
public const MAX_RETRY = 3;
|
||||
|
||||
public function __construct(SQLLoginRequest $sqlLoginRequest)
|
||||
{
|
||||
public function __construct(
|
||||
private SQLLoginRequest $sqlLoginRequest,
|
||||
private LoggerInterface $loggerInterface
|
||||
) {
|
||||
$this->sqlLoginRequest = $sqlLoginRequest;
|
||||
$this->loggerInterface = $loggerInterface;
|
||||
}
|
||||
|
||||
public function fetchDatas($login)
|
||||
/**
|
||||
* @return array<string,string>
|
||||
*/
|
||||
public function fetchPasswordAndDatas(string $login): array
|
||||
{
|
||||
try {
|
||||
$dbh = $this->getConnection();
|
||||
// forge de la requête
|
||||
$request = $this->sqlLoginRequest->getRequestScope();
|
||||
// Préparation de la requête
|
||||
$query = $dbh->prepare($request);
|
||||
$query->execute([$this->sqlLoginRequest->getLoginColumnName() => $login]);
|
||||
$datas = $query->fetch(PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
\Sentry\captureException($e);
|
||||
|
||||
throw new PDOException();
|
||||
}
|
||||
$dataRequest = $this->sqlLoginRequest->getDatasRequest();
|
||||
$login = \strtolower($login);
|
||||
$datas = $this->executeRequestWithLogin($dataRequest, $login);
|
||||
|
||||
return $datas;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $login
|
||||
*
|
||||
* @return bool
|
||||
* @return array<string,string>
|
||||
*/
|
||||
public function fetchPassword($login)
|
||||
private function executeRequestWithLogin(string $request, string $login): array
|
||||
{
|
||||
try {
|
||||
$dbh = $this->getConnection();
|
||||
$request = $this->sqlLoginRequest->getRequestPassword();
|
||||
$query = $dbh->prepare($request);
|
||||
$attempt = 0;
|
||||
while ($attempt < self::MAX_RETRY) {
|
||||
$pdo = $this->getConnection();
|
||||
$query = $pdo->prepare($request);
|
||||
$query->execute([$this->sqlLoginRequest->getLoginColumnName() => $login]);
|
||||
$password = $query->fetch(PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
\Sentry\captureException($e);
|
||||
throw new PDOException();
|
||||
$datas = $query->fetch(PDO::FETCH_ASSOC);
|
||||
$query->closeCursor();
|
||||
if (false === $datas) {
|
||||
usleep(3000);
|
||||
++$attempt;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($password) {
|
||||
return [
|
||||
$password[$this->sqlLoginRequest->getPasswordColumnName()],
|
||||
isset($password[$this->sqlLoginRequest->getSaltColumnName()]) ? $password[$this->sqlLoginRequest->getSaltColumnName()] : null,
|
||||
];
|
||||
if (self::MAX_RETRY === $attempt) {
|
||||
throw new EmptyResultException();
|
||||
}
|
||||
|
||||
return false;
|
||||
return $datas;
|
||||
}
|
||||
|
||||
public function getConnection()
|
||||
private function getConnection(): PDO
|
||||
{
|
||||
// Appel du singleton
|
||||
$sqlLogin = SQLLoginConnect::getInstance();
|
||||
// Connection bdd
|
||||
return $sqlLogin->connect($this->sqlLoginRequest->getDatabaseDsn(), $this->sqlLoginRequest->getDbUser(), $this->sqlLoginRequest->getDbPassword());
|
||||
$pdo = $sqlLogin->connect($this->sqlLoginRequest->getDatabaseDsn(), $this->sqlLoginRequest->getDbUser(), $this->sqlLoginRequest->getDbPassword());
|
||||
|
||||
return $pdo;
|
||||
}
|
||||
}
|
||||
|
221
symfony.lock
Normal file
221
symfony.lock
Normal file
@ -0,0 +1,221 @@
|
||||
{
|
||||
"doctrine/annotations": {
|
||||
"version": "1.14",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "1.0",
|
||||
"ref": "a2759dd6123694c8d901d0ec80006e044c2e6457"
|
||||
},
|
||||
"files": [
|
||||
"config/routes/annotations.yaml"
|
||||
]
|
||||
},
|
||||
"doctrine/deprecations": {
|
||||
"version": "1.1",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "1.0",
|
||||
"ref": "87424683adc81d7dc305eefec1fced883084aab9"
|
||||
}
|
||||
},
|
||||
"php-http/discovery": {
|
||||
"version": "1.19",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "1.18",
|
||||
"ref": "f45b5dd173a27873ab19f5e3180b2f661c21de02"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/http_discovery.yaml"
|
||||
]
|
||||
},
|
||||
"phpstan/phpstan": {
|
||||
"version": "2.1",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes-contrib",
|
||||
"branch": "main",
|
||||
"version": "1.0",
|
||||
"ref": "5e490cc197fb6bb1ae22e5abbc531ddc633b6767"
|
||||
},
|
||||
"files": [
|
||||
"phpstan.dist.neon"
|
||||
]
|
||||
},
|
||||
"sentry/sentry-symfony": {
|
||||
"version": "4.14",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes-contrib",
|
||||
"branch": "main",
|
||||
"version": "4.6",
|
||||
"ref": "153de5f041f7e8a9c19f3674b800b76be0e6fd90"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/sentry.yaml"
|
||||
]
|
||||
},
|
||||
"symfony/apache-pack": {
|
||||
"version": "1.0",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes-contrib",
|
||||
"branch": "main",
|
||||
"version": "1.0",
|
||||
"ref": "0f18b4decdf5695d692c1d0dfd65516a07a6adf1"
|
||||
},
|
||||
"files": [
|
||||
"public/.htaccess"
|
||||
]
|
||||
},
|
||||
"symfony/console": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.3",
|
||||
"ref": "1781ff40d8a17d87cf53f8d4cf0c8346ed2bb461"
|
||||
},
|
||||
"files": [
|
||||
"bin/console"
|
||||
]
|
||||
},
|
||||
"symfony/debug-bundle": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.3",
|
||||
"ref": "5aa8aa48234c8eb6dbdd7b3cd5d791485d2cec4b"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/debug.yaml"
|
||||
]
|
||||
},
|
||||
"symfony/flex": {
|
||||
"version": "1.21",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "1.0",
|
||||
"ref": "146251ae39e06a95be0fe3d13c807bcf3938b172"
|
||||
},
|
||||
"files": [
|
||||
".env"
|
||||
]
|
||||
},
|
||||
"symfony/framework-bundle": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.4",
|
||||
"ref": "3cd216a4d007b78d8554d44a5b1c0a446dab24fb"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/cache.yaml",
|
||||
"config/packages/framework.yaml",
|
||||
"config/preload.php",
|
||||
"config/routes/framework.yaml",
|
||||
"config/services.yaml",
|
||||
"public/index.php",
|
||||
"src/Controller/.gitignore",
|
||||
"src/Kernel.php"
|
||||
]
|
||||
},
|
||||
"symfony/routing": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.3",
|
||||
"ref": "85de1d8ae45b284c3c84b668171d2615049e698f"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/routing.yaml",
|
||||
"config/routes.yaml"
|
||||
]
|
||||
},
|
||||
"symfony/security-bundle": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.3",
|
||||
"ref": "98f1f2b0d635908c2b40f3675da2d23b1a069d30"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/security.yaml"
|
||||
]
|
||||
},
|
||||
"symfony/translation": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.3",
|
||||
"ref": "e28e27f53663cc34f0be2837aba18e3a1bef8e7b"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/translation.yaml",
|
||||
"translations/.gitignore"
|
||||
]
|
||||
},
|
||||
"symfony/twig-bundle": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.4",
|
||||
"ref": "bb2178c57eee79e6be0b297aa96fc0c0def81387"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/twig.yaml",
|
||||
"templates/base.html.twig"
|
||||
]
|
||||
},
|
||||
"symfony/validator": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.3",
|
||||
"ref": "c32cfd98f714894c4f128bb99aa2530c1227603c"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/validator.yaml"
|
||||
]
|
||||
},
|
||||
"symfony/web-profiler-bundle": {
|
||||
"version": "5.4",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "5.3",
|
||||
"ref": "24bbc3d84ef2f427f82104f766014e799eefcc3e"
|
||||
},
|
||||
"files": [
|
||||
"config/packages/web_profiler.yaml",
|
||||
"config/routes/web_profiler.yaml"
|
||||
]
|
||||
},
|
||||
"symfony/webpack-encore-bundle": {
|
||||
"version": "1.17",
|
||||
"recipe": {
|
||||
"repo": "github.com/symfony/recipes",
|
||||
"branch": "main",
|
||||
"version": "1.10",
|
||||
"ref": "eff2e505d4557c967b6710fe06bd947ba555cae5"
|
||||
},
|
||||
"files": [
|
||||
"assets/app.js",
|
||||
"assets/bootstrap.js",
|
||||
"assets/controllers.json",
|
||||
"assets/controllers/hello_controller.js",
|
||||
"assets/styles/app.css",
|
||||
"config/packages/webpack_encore.yaml",
|
||||
"package.json",
|
||||
"webpack.config.js"
|
||||
]
|
||||
}
|
||||
}
|
13
templates/altcha.html.twig
Normal file
13
templates/altcha.html.twig
Normal file
@ -0,0 +1,13 @@
|
||||
{% block altcha_widget %}
|
||||
<altcha-widget
|
||||
challengejson={{challengeJson}}
|
||||
name='altcha'
|
||||
strings="{{translations}}"
|
||||
hidelogo
|
||||
hidefooter
|
||||
workers= {{ workers }}
|
||||
delay={{ delay }}
|
||||
{{ debug ? 'debug' : ''}}
|
||||
{{ mockError ? 'mockerror' : ''}}
|
||||
></altcha-widget>
|
||||
{% endblock %}
|
@ -1,21 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="{{app.request.session.get('_locale') is not null ? app.request.session.get('_locale') : 'fr'}}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{% block title %}Welcome!{% endblock %}</title>
|
||||
{% block stylesheets %}
|
||||
{{ encore_entry_link_tags('app', null, 'appConfig') }}
|
||||
{{ encore_entry_link_tags('bootstrap-css', null, 'appConfig') }}
|
||||
{{ encore_entry_link_tags('theme', null, 'themeConfig') }}
|
||||
{{ encore_entry_link_tags('app') }}
|
||||
{{ encore_entry_link_tags('bootstrap-css') }}
|
||||
{% endblock %}
|
||||
|
||||
</head>
|
||||
<body>
|
||||
{% block body %}{% endblock %}
|
||||
{% block javascripts %}
|
||||
{{ encore_entry_script_tags('app', null, 'appConfig') }}
|
||||
{{ encore_entry_script_tags('bootstrap-js', null, 'appConfig') }}
|
||||
{{ encore_entry_script_tags('theme', null, 'themeConfig') }}
|
||||
{{ encore_entry_script_tags('app') }}
|
||||
{{ encore_entry_script_tags('bootstrap-js') }}
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
|
@ -6,23 +6,23 @@
|
||||
{% block body %}
|
||||
<div class="login-wrapper">
|
||||
<div class="login">
|
||||
{% if app.user %}
|
||||
<div class="mb-3">
|
||||
You are logged in as {{ app.user.login }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="lang">
|
||||
{% for locale in locales|split(',') %}
|
||||
<a href="{{ path('locale_change', {'locale':locale }) }}" title="{{locale}}" aria-label="{{locale}}" class="flag"><img class="w-10" src="{{ asset('flags/'~ locale ~'.svg') }}"/></a>
|
||||
{% endfor %}
|
||||
{% if app.user %}
|
||||
<div class="mb-3">
|
||||
You are logged in as {{ app.user.login }}
|
||||
</div>
|
||||
<h1 class="h3 mb-3 font-weight-normal">{% trans from 'view' %} sign_in {% endtrans %}</h1>
|
||||
{{form_start(loginForm)}}
|
||||
{{form_widget(loginForm)}}
|
||||
{% endif %}
|
||||
<div class="lang">
|
||||
{% for locale in locales %}
|
||||
<a href="{{ path('locale_change', {'locale':locale }) }}" title="{{locale}}" aria-label="{{locale}}" class="flag"><img class="w-10" src="{{ asset('flags/'~ locale ~'.svg') }}"/></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<h1 class="h3 mb-3 font-weight-normal">{% trans from 'view' %} sign_in {% endtrans %}</h1>
|
||||
{{form_start(loginForm)}}
|
||||
{{form_widget(loginForm)}}
|
||||
<button class="btn btn-lg btn-primary" type="submit">
|
||||
{% trans from 'view' %} submit {% endtrans %}
|
||||
</button>
|
||||
{{form_end(loginForm)}}
|
||||
{{form_end(loginForm)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
3
tools/php-cs-fixer/.php-cs-fixer.dist.php
Normal file → Executable file
3
tools/php-cs-fixer/.php-cs-fixer.dist.php
Normal file → Executable file
@ -5,8 +5,6 @@ $finder = PhpCsFixer\Finder::create()
|
||||
->name('*.php')
|
||||
;
|
||||
|
||||
// TODO: Définir les règles de style communes
|
||||
// spécifiques au projet
|
||||
return (new PhpCsFixer\Config())
|
||||
->setRules([
|
||||
'@Symfony' => true,
|
||||
@ -22,6 +20,7 @@ return (new PhpCsFixer\Config())
|
||||
'ternary_operator_spaces' => true,
|
||||
'class_definition' => ['single_line' => true],
|
||||
'whitespace_after_comma_in_array' => true,
|
||||
'trailing_comma_in_multiline' => true,
|
||||
|
||||
// phpdoc
|
||||
'phpdoc_add_missing_param_annotation' => ['only_untyped' => true],
|
||||
|
@ -7,15 +7,47 @@
|
||||
<body>
|
||||
<trans-unit id="4Lw8Y4y" resname="form.label.login">
|
||||
<source>form.label.login</source>
|
||||
<target>login</target>
|
||||
<target>Email address *</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="RmsDr53" resname="form.label.password">
|
||||
<source>form.label.password</source>
|
||||
<target>Password</target>
|
||||
<target>Password *</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="t17Vcvs" resname="form.label.remember_me">
|
||||
<source>form.label.remember_me</source>
|
||||
<target>Remember me</target>
|
||||
<trans-unit id="4kfMq14" resname="altcha.validator.server_validation_error">
|
||||
<source>altcha.validator.server_validation_error</source>
|
||||
<target>Verification failed. Try again later.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7mZdXx_" resname="altcha.widget.error">
|
||||
<source>altcha.widget.error</source>
|
||||
<target>Verification failed. Try again later.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Yg33QZt" resname="altcha.widget.expired">
|
||||
<source>altcha.widget.expired</source>
|
||||
<target>Verification expired. Try again.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3y0.Bhb" resname="altcha.widget.label">
|
||||
<source>altcha.widget.label</source>
|
||||
<target>I'm not a robot</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="QFBWtGD" resname="altcha.widget.verified">
|
||||
<source>altcha.widget.verified</source>
|
||||
<target>Verified</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SfOrgtj" resname="altcha.widget.verifying">
|
||||
<source>altcha.widget.verifying</source>
|
||||
<target>Verifying...</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9dhbPuz" resname="altcha.widget.waitalert">
|
||||
<source>altcha.widget.waitalert</source>
|
||||
<target>Verifying... please wait.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9k5hI.D" resname="altcha.widget.title">
|
||||
<source>altcha.widget.title</source>
|
||||
<target>Verification *</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vGcy2C3" resname="altcha.widget.info">
|
||||
<source>altcha.widget.info</source>
|
||||
<target>Please check the box above to validate that you are not a robot. If you encounter any problem while doing this, please update your browser.</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
@ -1,5 +0,0 @@
|
||||
form:
|
||||
label:
|
||||
login: login
|
||||
password: Password
|
||||
remember_me: Remember me
|
@ -7,15 +7,47 @@
|
||||
<body>
|
||||
<trans-unit id="4Lw8Y4y" resname="form.label.login">
|
||||
<source>form.label.login</source>
|
||||
<target>login</target>
|
||||
<target>Adresse courriel *</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="RmsDr53" resname="form.label.password">
|
||||
<source>form.label.password</source>
|
||||
<target>Mot de passe</target>
|
||||
<target>Mot de passe *</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="t17Vcvs" resname="form.label.remember_me">
|
||||
<source>form.label.remember_me</source>
|
||||
<target>Se souvenir de moi</target>
|
||||
<trans-unit id="4kfMq14" resname="altcha.validator.server_validation_error">
|
||||
<source>altcha.validator.server_validation_error</source>
|
||||
<target>Échec de la vérification. Réessayez plus tard.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7mZdXx_" resname="altcha.widget.error">
|
||||
<source>altcha.widget.error</source>
|
||||
<target>Échec de la vérification. Réesayez plus tard.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="Yg33QZt" resname="altcha.widget.expired">
|
||||
<source>altcha.widget.expired</source>
|
||||
<target>Vérification expirée. Réessayez.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3y0.Bhb" resname="altcha.widget.label">
|
||||
<source>altcha.widget.label</source>
|
||||
<target>Je ne suis pas un robot</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="QFBWtGD" resname="altcha.widget.verified">
|
||||
<source>altcha.widget.verified</source>
|
||||
<target>Vérifié</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SfOrgtj" resname="altcha.widget.verifying">
|
||||
<source>altcha.widget.verifying</source>
|
||||
<target>Vérification en cours...</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9dhbPuz" resname="altcha.widget.waitalert">
|
||||
<source>altcha.widget.waitalert</source>
|
||||
<target>Vérification en cours... veuillez patienter.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9k5hI.D" resname="altcha.widget.title">
|
||||
<source>altcha.widget.title</source>
|
||||
<target>Vérification *</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="vGcy2C3" resname="altcha.widget.info">
|
||||
<source>altcha.widget.info</source>
|
||||
<target>Veuillez cocher la case ci dessus afin de valider que vous n'êtes pas un robot. Si vous rencontrez un problème lors de cette action, mettez à jour votre navigateur.</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
@ -1,5 +0,0 @@
|
||||
form:
|
||||
label:
|
||||
login: Login
|
||||
password: Mot de passe
|
||||
remember_me: Se souvenir de moi
|
@ -7,15 +7,11 @@
|
||||
<body>
|
||||
<trans-unit id="fXVg5Zq" resname="error.login">
|
||||
<source>error.login</source>
|
||||
<target>Incorrect login</target>
|
||||
<target>Incorrect login or password</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8VJKwdK" resname="error.password">
|
||||
<source>error.password</source>
|
||||
<target>Incorrect password</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lBole_G" resname="error.pdo">
|
||||
<source>error.pdo</source>
|
||||
<target>Connection to database encountered a problem</target>
|
||||
<trans-unit id="1QRR4uA" resname="error.technical">
|
||||
<source>error.technical</source>
|
||||
<target>A technical error happened, try again later</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
@ -1,4 +0,0 @@
|
||||
error:
|
||||
login: 'Incorrect login'
|
||||
password: 'Incorrect password'
|
||||
sql_login: 'Connection to database encountered a problem'
|
@ -7,15 +7,11 @@
|
||||
<body>
|
||||
<trans-unit id="fXVg5Zq" resname="error.login">
|
||||
<source>error.login</source>
|
||||
<target>Login incorrect ou inconnu</target>
|
||||
<target>Login ou mot de passe inconnu</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8VJKwdK" resname="error.password">
|
||||
<source>error.password</source>
|
||||
<target>Mot de passe incorrect</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="lBole_G" resname="error.pdo">
|
||||
<source>error.pdo</source>
|
||||
<target>La connexion à la base de déonnées à rencontré un problème</target>
|
||||
<trans-unit id="1QRR4uA" resname="error.technical">
|
||||
<source>error.technical</source>
|
||||
<target>Une erreur technique s'est produite, rééssayez plus tard</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
|
@ -1,4 +0,0 @@
|
||||
error:
|
||||
login: 'Login incorrect ou inconnu'
|
||||
password: 'Mot de passe incorrect'
|
||||
sql_login: 'La connexion à la base de données a rencontré un problème'
|
@ -405,6 +405,30 @@
|
||||
<source>The value of the netmask should be between {{ min }} and {{ max }}.</source>
|
||||
<target>The value of the netmask should be between {{ min }} and {{ max }}.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="O5pay9e" resname="The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.">
|
||||
<source>The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.</source>
|
||||
<target>The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f_lviDt" resname="The password strength is too low. Please use a stronger password.">
|
||||
<source>The password strength is too low. Please use a stronger password.</source>
|
||||
<target>The password strength is too low. Please use a stronger password.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="xfCh6.k" resname="This value contains characters that are not allowed by the current restriction-level.">
|
||||
<source>This value contains characters that are not allowed by the current restriction-level.</source>
|
||||
<target>This value contains characters that are not allowed by the current restriction-level.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="x15dlan" resname="Using invisible characters is not allowed.">
|
||||
<source>Using invisible characters is not allowed.</source>
|
||||
<target>Using invisible characters is not allowed.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2NiS4YC" resname="Mixing numbers from different scripts is not allowed.">
|
||||
<source>Mixing numbers from different scripts is not allowed.</source>
|
||||
<target>Mixing numbers from different scripts is not allowed.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W8N1HuG" resname="Using hidden overlay characters is not allowed.">
|
||||
<source>Using hidden overlay characters is not allowed.</source>
|
||||
<target>Using hidden overlay characters is not allowed.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id=".SEaaBa" resname="This form should not contain extra fields.">
|
||||
<source>This form should not contain extra fields.</source>
|
||||
<target>This form should not contain extra fields.</target>
|
||||
|
@ -405,6 +405,30 @@
|
||||
<source>The value of the netmask should be between {{ min }} and {{ max }}.</source>
|
||||
<target>La valeur du masque de réseau doit être comprise entre {{ min }} et {{ max }}.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="O5pay9e" resname="The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.">
|
||||
<source>The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less.</source>
|
||||
<target>Le nom du fichier est trop long. Il doit contenir au maximum {{ filename_max_length }} caractère.|Le nom de fichier est trop long. Il doit contenir au maximum {{ filename_max_length }} caractères.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f_lviDt" resname="The password strength is too low. Please use a stronger password.">
|
||||
<source>The password strength is too low. Please use a stronger password.</source>
|
||||
<target>La force du mot de passe est trop faible. Veuillez utiliser un mot de passe plus fort.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="xfCh6.k" resname="This value contains characters that are not allowed by the current restriction-level.">
|
||||
<source>This value contains characters that are not allowed by the current restriction-level.</source>
|
||||
<target>Cette valeur contient des caractères qui ne sont pas autorisés par le niveau de restriction actuel.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="x15dlan" resname="Using invisible characters is not allowed.">
|
||||
<source>Using invisible characters is not allowed.</source>
|
||||
<target>Utiliser des caractères invisibles n'est pas autorisé.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2NiS4YC" resname="Mixing numbers from different scripts is not allowed.">
|
||||
<source>Mixing numbers from different scripts is not allowed.</source>
|
||||
<target>Mélanger des chiffres provenant de différents scripts n'est pas autorisé.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="W8N1HuG" resname="Using hidden overlay characters is not allowed.">
|
||||
<source>Using hidden overlay characters is not allowed.</source>
|
||||
<target>Utiliser des caractères de superposition cachés n'est pas autorisé.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id=".SEaaBa" resname="This form should not contain extra fields.">
|
||||
<source>This form should not contain extra fields.</source>
|
||||
<target>Ce formulaire ne doit pas contenir de champs supplémentaires.</target>
|
||||
|
@ -13,6 +13,22 @@
|
||||
<source>submit</source>
|
||||
<target>Submit</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="LpHwdkN" resname="view.base.title">
|
||||
<source>view.base.title</source>
|
||||
<target>Hydra SQL</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="DjhkdFJ" resname="view.login.title">
|
||||
<source>view.login.title</source>
|
||||
<target>Sign in</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="UkVIwCA" resname="view.error.title">
|
||||
<source>view.error.title</source>
|
||||
<target>Error</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="bmlMAb9" resname="view.error.text">
|
||||
<source>view.error.text</source>
|
||||
<target>Error</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
@ -1,2 +0,0 @@
|
||||
sign_in: Please, sign in
|
||||
submit: Submit
|
@ -13,6 +13,22 @@
|
||||
<source>submit</source>
|
||||
<target>Valider</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="LpHwdkN" resname="view.base.title">
|
||||
<source>view.base.title</source>
|
||||
<target>Hydra SQL</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="DjhkdFJ" resname="view.login.title">
|
||||
<source>view.login.title</source>
|
||||
<target>Identifiez-vous</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="UkVIwCA" resname="view.error.title">
|
||||
<source>view.error.title</source>
|
||||
<target>Erreur</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="bmlMAb9" resname="view.error.text">
|
||||
<source>view.error.text</source>
|
||||
<target>Erreur</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
@ -1,2 +0,0 @@
|
||||
sign_in: Connectez-vous
|
||||
submit: Valider
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user