Fix FLEXIAPI-277 Restrict authorized ini keys that can be set to prevent...

This commit is contained in:
Timothée Jaussoin 2025-04-02 09:25:56 +00:00
parent b493e9006e
commit fd0fcd7045
6 changed files with 207 additions and 162 deletions

View file

@ -27,6 +27,7 @@ v1.7
- Fix FLEXIAPI-275 Add names in Spaces
- Fix FLEXIAPI-278 Complete and reorganize the Markdown documentation
- Fix FLEXIAPI-233 Add External Accounts (new version)
- Fix FLEXIAPI-277 Restrict authorized ini keys that can be set to prevent conflict with the existing ones set in the UI
v1.6
----

View file

@ -148,7 +148,7 @@ class SpaceController extends Controller
{
$request->validate([
'newsletter_registration_address' => 'nullable|email',
'custom_provisioning_entries' => ['nullable', new Ini]
'custom_provisioning_entries' => ['nullable', new Ini(Space::FORBIDDEN_KEYS)]
]);
$space->copyright_text = $request->get('copyright_text');

View file

@ -21,6 +21,7 @@ namespace App\Http\Controllers\Api\Admin;
use App\Space;
use App\Rules\Domain;
use App\Rules\Ini;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@ -40,7 +41,8 @@ class SpaceController extends Controller
'domain' => ['required', 'unique:spaces', new Domain()],
'host' => ['required', 'unique:spaces', new Domain()],
'max_accounts' => 'nullable|integer',
'expire_at' => 'nullable|date|after_or_equal:today'
'expire_at' => 'nullable|date|after_or_equal:today',
'custom_provisioning_entries' => ['nullable', new Ini(Space::FORBIDDEN_KEYS)]
]);
$space = new Space;
@ -105,6 +107,7 @@ class SpaceController extends Controller
'max_accounts' => 'required|integer',
'expire_at' => 'nullable|date|after_or_equal:today',
'custom_provisioning_entries' => ['nullable', new Ini(Space::FORBIDDEN_KEYS)],
'custom_provisioning_overwrite_all' => 'required|boolean',
'provisioning_use_linphone_provisioning_header' => 'required|boolean',
'custom_theme' => 'required|boolean',

View file

@ -23,13 +23,39 @@ use Illuminate\Contracts\Validation\Rule;
class Ini implements Rule
{
public function passes($attribute, $value)
private $forbiddenKeys = [];
private $forbiddenKeysFound = [];
public function __construct($forbiddenKeys)
{
return parse_ini_string($value) != false;
$this->forbiddenKeys = $forbiddenKeys;
}
public function passes($attribute, $value): bool
{
$parsed = parse_ini_string($value);
if ($parsed == false) {
return false;
}
foreach (array_keys($parsed) as $key) {
if (in_array($key, $this->forbiddenKeys)) {
array_push($this->forbiddenKeysFound, $key);
}
}
return empty($this->forbiddenKeysFound);
}
public function message()
{
return 'Invalid ini format';
$message = 'Invalid ini format.';
if (!empty($this->forbiddenKeysFound)) {
$message .= ' The following settings cannot be set, they are already handled by the platform: ' . implode(', ', $this->forbiddenKeysFound);
}
return $message;
}
}

View file

@ -11,6 +11,26 @@ class Space extends Model
{
use HasFactory;
public const FORBIDDEN_KEYS = [
'disable_chat_feature',
'disable_meetings_feature',
'disable_broadcast_feature',
'max_account',
'hide_settings',
'hide_account_settings',
'disable_call_recordings_feature',
'only_display_sip_uri_username',
'assistant_hide_create_account',
'assistant_disable_qr_code',
'assistant_hide_third_party_account',
'copyright_text',
'intro_registration_text',
'confirmed_registration_text',
'newsletter_registration_address',
'account_proxy_registrar_address',
'account_realm'
];
protected $hidden = ['id'];
protected $casts = [
'super' => 'boolean',

309
flexiapi/composer.lock generated
View file

@ -951,16 +951,16 @@
},
{
"name": "egulias/email-validator",
"version": "4.0.3",
"version": "4.0.4",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
"reference": "b115554301161fa21467629f1e1391c1936de517"
"reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517",
"reference": "b115554301161fa21467629f1e1391c1936de517",
"url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa",
"reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa",
"shasum": ""
},
"require": {
@ -1006,7 +1006,7 @@
],
"support": {
"issues": "https://github.com/egulias/EmailValidator/issues",
"source": "https://github.com/egulias/EmailValidator/tree/4.0.3"
"source": "https://github.com/egulias/EmailValidator/tree/4.0.4"
},
"funding": [
{
@ -1014,7 +1014,7 @@
"type": "github"
}
],
"time": "2024-12-27T00:36:43+00:00"
"time": "2025-03-06T22:45:56+00:00"
},
{
"name": "endroid/qr-code",
@ -1321,16 +1321,16 @@
},
{
"name": "giggsey/libphonenumber-for-php-lite",
"version": "8.13.55",
"version": "9.0.2",
"source": {
"type": "git",
"url": "https://github.com/giggsey/libphonenumber-for-php-lite.git",
"reference": "e077137a4aa0333bee139b3a1d2f2919492f3827"
"reference": "124cd8095f49df71a52b920f9e50d63e5efd6a14"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/e077137a4aa0333bee139b3a1d2f2919492f3827",
"reference": "e077137a4aa0333bee139b3a1d2f2919492f3827",
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/124cd8095f49df71a52b920f9e50d63e5efd6a14",
"reference": "124cd8095f49df71a52b920f9e50d63e5efd6a14",
"shasum": ""
},
"require": {
@ -1342,18 +1342,19 @@
},
"require-dev": {
"ext-dom": "*",
"friendsofphp/php-cs-fixer": "^3.12",
"infection/infection": "^0.28",
"pear/pear-core-minimal": "^1.10.11",
"pear/pear_exception": "^1.0.2",
"pear/versioncontrol_git": "^0.7",
"phing/phing": "^2.17.4",
"phpstan/extension-installer": "^1.2",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.2",
"phpunit/phpunit": "^10.5",
"symfony/console": "^6.0",
"symfony/var-exporter": "^6.0"
"friendsofphp/php-cs-fixer": "^3.71",
"infection/infection": "^0.28.0",
"nette/php-generator": "^4.1",
"php-coveralls/php-coveralls": "^2.7",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.1.7",
"phpstan/phpstan-deprecation-rules": "^2.0.1",
"phpstan/phpstan-phpunit": "^2.0.4",
"phpstan/phpstan-strict-rules": "^2.0.3",
"phpunit/phpunit": "^10.5.45",
"symfony/console": "^6.4",
"symfony/filesystem": "^6.4",
"symfony/process": "^6.4"
},
"suggest": {
"giggsey/libphonenumber-for-php": "Use libphonenumber-for-php for geocoding, carriers, timezones and matching"
@ -1361,19 +1362,13 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "8.x-dev"
"dev-master": "9.x-dev"
}
},
"autoload": {
"psr-4": {
"libphonenumber\\": "src/"
},
"exclude-from-classmap": [
"/src/data/",
"/src/carrier/data/",
"/src/geocoding/data/",
"/src/timezone/data/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -1400,7 +1395,7 @@
"issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues",
"source": "https://github.com/giggsey/libphonenumber-for-php-lite"
},
"time": "2025-02-14T08:11:44+00:00"
"time": "2025-03-28T09:51:47+00:00"
},
{
"name": "graham-campbell/result-type",
@ -1466,16 +1461,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.9.2",
"version": "7.9.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "d281ed313b989f213357e3be1a179f02196ac99b"
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b",
"reference": "d281ed313b989f213357e3be1a179f02196ac99b",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77",
"shasum": ""
},
"require": {
@ -1572,7 +1567,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.9.2"
"source": "https://github.com/guzzle/guzzle/tree/7.9.3"
},
"funding": [
{
@ -1588,20 +1583,20 @@
"type": "tidelift"
}
],
"time": "2024-07-24T11:22:20+00:00"
"time": "2025-03-27T13:37:11+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.0.4",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455"
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
"reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455",
"url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c",
"reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c",
"shasum": ""
},
"require": {
@ -1655,7 +1650,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.0.4"
"source": "https://github.com/guzzle/promises/tree/2.2.0"
},
"funding": [
{
@ -1671,20 +1666,20 @@
"type": "tidelift"
}
],
"time": "2024-10-17T10:06:22+00:00"
"time": "2025-03-27T13:27:01+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.7.0",
"version": "2.7.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201"
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16",
"shasum": ""
},
"require": {
@ -1771,7 +1766,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.7.0"
"source": "https://github.com/guzzle/psr7/tree/2.7.1"
},
"funding": [
{
@ -1787,7 +1782,7 @@
"type": "tidelift"
}
],
"time": "2024-07-18T11:15:46+00:00"
"time": "2025-03-27T12:30:47+00:00"
},
{
"name": "guzzlehttp/uri-template",
@ -1877,16 +1872,16 @@
},
{
"name": "laravel/framework",
"version": "v10.48.28",
"version": "v10.48.29",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "e714e7e0c1ae51bf747e3df5b10fa60c54e3e0e1"
"reference": "8f7f9247cb8aad1a769d6b9815a6623d89b46b47"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/e714e7e0c1ae51bf747e3df5b10fa60c54e3e0e1",
"reference": "e714e7e0c1ae51bf747e3df5b10fa60c54e3e0e1",
"url": "https://api.github.com/repos/laravel/framework/zipball/8f7f9247cb8aad1a769d6b9815a6623d89b46b47",
"reference": "8f7f9247cb8aad1a769d6b9815a6623d89b46b47",
"shasum": ""
},
"require": {
@ -2080,7 +2075,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2025-01-31T10:04:17+00:00"
"time": "2025-03-12T14:42:01+00:00"
},
{
"name": "laravel/prompts",
@ -2849,16 +2844,16 @@
},
{
"name": "monolog/monolog",
"version": "3.8.1",
"version": "3.9.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4"
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4",
"reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6",
"shasum": ""
},
"require": {
@ -2936,7 +2931,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
"source": "https://github.com/Seldaek/monolog/tree/3.8.1"
"source": "https://github.com/Seldaek/monolog/tree/3.9.0"
},
"funding": [
{
@ -2948,7 +2943,7 @@
"type": "tidelift"
}
],
"time": "2024-12-05T17:15:07+00:00"
"time": "2025-03-24T10:02:05+00:00"
},
{
"name": "myclabs/deep-copy",
@ -3242,16 +3237,16 @@
},
{
"name": "nette/utils",
"version": "v4.0.5",
"version": "v4.0.6",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
"reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96"
"reference": "ce708655043c7050eb050df361c5e313cf708309"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
"reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
"url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309",
"reference": "ce708655043c7050eb050df361c5e313cf708309",
"shasum": ""
},
"require": {
@ -3322,9 +3317,9 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v4.0.5"
"source": "https://github.com/nette/utils/tree/v4.0.6"
},
"time": "2024-08-07T15:39:19+00:00"
"time": "2025-03-30T21:06:30+00:00"
},
{
"name": "nikic/php-parser",
@ -4199,20 +4194,20 @@
},
{
"name": "propaganistas/laravel-phone",
"version": "5.3.4",
"version": "5.3.6",
"source": {
"type": "git",
"url": "https://github.com/Propaganistas/Laravel-Phone.git",
"reference": "a76eae715b927f8f30add4bb2228926091d3e152"
"reference": "89f26e8336cf8f8041609148b4fef752f0bd720e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/a76eae715b927f8f30add4bb2228926091d3e152",
"reference": "a76eae715b927f8f30add4bb2228926091d3e152",
"url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/89f26e8336cf8f8041609148b4fef752f0bd720e",
"reference": "89f26e8336cf8f8041609148b4fef752f0bd720e",
"shasum": ""
},
"require": {
"giggsey/libphonenumber-for-php-lite": "^8.13.35",
"giggsey/libphonenumber-for-php-lite": "^8.13.35|^9.0.0",
"illuminate/contracts": "^10.0|^11.0|^12.0",
"illuminate/support": "^10.0|^11.0|^12.0",
"illuminate/validation": "^10.0|^11.0|^12.0",
@ -4258,7 +4253,7 @@
],
"support": {
"issues": "https://github.com/Propaganistas/Laravel-Phone/issues",
"source": "https://github.com/Propaganistas/Laravel-Phone/tree/5.3.4"
"source": "https://github.com/Propaganistas/Laravel-Phone/tree/5.3.6"
},
"funding": [
{
@ -4266,7 +4261,7 @@
"type": "github"
}
],
"time": "2025-02-24T15:09:06+00:00"
"time": "2025-03-21T09:07:26+00:00"
},
{
"name": "psr/cache",
@ -4731,16 +4726,16 @@
},
{
"name": "psy/psysh",
"version": "v0.12.7",
"version": "v0.12.8",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
"reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c"
"reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c",
"reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/85057ceedee50c49d4f6ecaff73ee96adb3b3625",
"reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625",
"shasum": ""
},
"require": {
@ -4804,9 +4799,9 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
"source": "https://github.com/bobthecow/psysh/tree/v0.12.7"
"source": "https://github.com/bobthecow/psysh/tree/v0.12.8"
},
"time": "2024-12-10T01:58:33+00:00"
"time": "2025-03-16T03:05:19+00:00"
},
{
"name": "ralouphie/getallheaders",
@ -4854,16 +4849,16 @@
},
{
"name": "ramsey/collection",
"version": "2.1.0",
"version": "2.1.1",
"source": {
"type": "git",
"url": "https://github.com/ramsey/collection.git",
"reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109"
"reference": "344572933ad0181accbf4ba763e85a0306a8c5e2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ramsey/collection/zipball/3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109",
"reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109",
"url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2",
"reference": "344572933ad0181accbf4ba763e85a0306a8c5e2",
"shasum": ""
},
"require": {
@ -4924,9 +4919,9 @@
],
"support": {
"issues": "https://github.com/ramsey/collection/issues",
"source": "https://github.com/ramsey/collection/tree/2.1.0"
"source": "https://github.com/ramsey/collection/tree/2.1.1"
},
"time": "2025-03-02T04:48:29+00:00"
"time": "2025-03-22T05:38:12+00:00"
},
{
"name": "ramsey/uuid",
@ -5527,16 +5522,16 @@
},
{
"name": "respect/validation",
"version": "2.4.0",
"version": "2.4.1",
"source": {
"type": "git",
"url": "https://github.com/Respect/Validation.git",
"reference": "48b38bd91e0badbc2c4381dce726b09fd68850d9"
"reference": "d1575eb4dde7b06f8dbc5e8d84dffb87931a40bd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Respect/Validation/zipball/48b38bd91e0badbc2c4381dce726b09fd68850d9",
"reference": "48b38bd91e0badbc2c4381dce726b09fd68850d9",
"url": "https://api.github.com/repos/Respect/Validation/zipball/d1575eb4dde7b06f8dbc5e8d84dffb87931a40bd",
"reference": "d1575eb4dde7b06f8dbc5e8d84dffb87931a40bd",
"shasum": ""
},
"require": {
@ -5589,9 +5584,9 @@
],
"support": {
"issues": "https://github.com/Respect/Validation/issues",
"source": "https://github.com/Respect/Validation/tree/2.4.0"
"source": "https://github.com/Respect/Validation/tree/2.4.1"
},
"time": "2025-01-07T00:34:58+00:00"
"time": "2025-01-11T00:06:34+00:00"
},
{
"name": "rvxlab/hcaptcha",
@ -6820,16 +6815,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.17",
"version": "v6.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "799445db3f15768ecc382ac5699e6da0520a0a04"
"reference": "2e4af9c952617cc3f9559ff706aee420a8464c36"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04",
"reference": "799445db3f15768ecc382ac5699e6da0520a0a04",
"url": "https://api.github.com/repos/symfony/console/zipball/2e4af9c952617cc3f9559ff706aee420a8464c36",
"reference": "2e4af9c952617cc3f9559ff706aee420a8464c36",
"shasum": ""
},
"require": {
@ -6894,7 +6889,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.17"
"source": "https://github.com/symfony/console/tree/v6.4.20"
},
"funding": [
{
@ -6910,7 +6905,7 @@
"type": "tidelift"
}
],
"time": "2024-12-07T12:07:30+00:00"
"time": "2025-03-03T17:16:38+00:00"
},
{
"name": "symfony/css-selector",
@ -7046,16 +7041,16 @@
},
{
"name": "symfony/error-handler",
"version": "v6.4.19",
"version": "v6.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
"reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71"
"reference": "aa3bcf4f7674719df078e61cc8062e5b7f752031"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/3d4e55cd2b8f1979a65eba9ab749d6466c316f71",
"reference": "3d4e55cd2b8f1979a65eba9ab749d6466c316f71",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/aa3bcf4f7674719df078e61cc8062e5b7f752031",
"reference": "aa3bcf4f7674719df078e61cc8062e5b7f752031",
"shasum": ""
},
"require": {
@ -7101,7 +7096,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/error-handler/tree/v6.4.19"
"source": "https://github.com/symfony/error-handler/tree/v6.4.20"
},
"funding": [
{
@ -7117,7 +7112,7 @@
"type": "tidelift"
}
],
"time": "2025-02-02T20:16:33+00:00"
"time": "2025-03-01T13:00:38+00:00"
},
{
"name": "symfony/event-dispatcher",
@ -7418,16 +7413,16 @@
},
{
"name": "symfony/http-kernel",
"version": "v6.4.19",
"version": "v6.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c"
"reference": "6be6db31bc74693ce5516e1fd5e5ff1171005e37"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/88f2c9f7feff86bb7b9105c5151bc2c1404cd64c",
"reference": "88f2c9f7feff86bb7b9105c5151bc2c1404cd64c",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/6be6db31bc74693ce5516e1fd5e5ff1171005e37",
"reference": "6be6db31bc74693ce5516e1fd5e5ff1171005e37",
"shasum": ""
},
"require": {
@ -7512,7 +7507,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v6.4.19"
"source": "https://github.com/symfony/http-kernel/tree/v6.4.20"
},
"funding": [
{
@ -7528,7 +7523,7 @@
"type": "tidelift"
}
],
"time": "2025-02-26T10:51:37+00:00"
"time": "2025-03-28T13:27:10+00:00"
},
{
"name": "symfony/mailer",
@ -8333,16 +8328,16 @@
},
{
"name": "symfony/process",
"version": "v6.4.19",
"version": "v6.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3"
"reference": "e2a61c16af36c9a07e5c9906498b73e091949a20"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3",
"reference": "7a1c12e87b08ec9c97abdd188c9b3f5a40e37fc3",
"url": "https://api.github.com/repos/symfony/process/zipball/e2a61c16af36c9a07e5c9906498b73e091949a20",
"reference": "e2a61c16af36c9a07e5c9906498b73e091949a20",
"shasum": ""
},
"require": {
@ -8374,7 +8369,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v6.4.19"
"source": "https://github.com/symfony/process/tree/v6.4.20"
},
"funding": [
{
@ -8390,7 +8385,7 @@
"type": "tidelift"
}
],
"time": "2025-02-04T13:35:48+00:00"
"time": "2025-03-10T17:11:00+00:00"
},
{
"name": "symfony/routing",
@ -9446,16 +9441,16 @@
},
{
"name": "filp/whoops",
"version": "2.17.0",
"version": "2.18.0",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
"reference": "075bc0c26631110584175de6523ab3f1652eb28e"
"reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e",
"reference": "075bc0c26631110584175de6523ab3f1652eb28e",
"url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e",
"reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e",
"shasum": ""
},
"require": {
@ -9505,7 +9500,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
"source": "https://github.com/filp/whoops/tree/2.17.0"
"source": "https://github.com/filp/whoops/tree/2.18.0"
},
"funding": [
{
@ -9513,7 +9508,7 @@
"type": "github"
}
],
"time": "2025-01-25T12:00:00+00:00"
"time": "2025-03-15T12:00:00+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@ -9651,40 +9646,40 @@
},
{
"name": "nunomaduro/collision",
"version": "v7.11.0",
"version": "v7.12.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
"reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05"
"reference": "995245421d3d7593a6960822063bdba4f5d7cf1a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/994ea93df5d4132f69d3f1bd74730509df6e8a05",
"reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/995245421d3d7593a6960822063bdba4f5d7cf1a",
"reference": "995245421d3d7593a6960822063bdba4f5d7cf1a",
"shasum": ""
},
"require": {
"filp/whoops": "^2.16.0",
"nunomaduro/termwind": "^1.15.1",
"filp/whoops": "^2.17.0",
"nunomaduro/termwind": "^1.17.0",
"php": "^8.1.0",
"symfony/console": "^6.4.12"
"symfony/console": "^6.4.17"
},
"conflict": {
"laravel/framework": ">=11.0.0"
},
"require-dev": {
"brianium/paratest": "^7.3.1",
"laravel/framework": "^10.48.22",
"laravel/pint": "^1.18.1",
"laravel/sail": "^1.36.0",
"brianium/paratest": "^7.4.8",
"laravel/framework": "^10.48.29",
"laravel/pint": "^1.21.2",
"laravel/sail": "^1.41.0",
"laravel/sanctum": "^3.3.3",
"laravel/tinker": "^2.10.0",
"nunomaduro/larastan": "^2.9.8",
"orchestra/testbench-core": "^8.28.3",
"pestphp/pest": "^2.35.1",
"laravel/tinker": "^2.10.1",
"nunomaduro/larastan": "^2.10.0",
"orchestra/testbench-core": "^8.35.0",
"pestphp/pest": "^2.36.0",
"phpunit/phpunit": "^10.5.36",
"sebastian/environment": "^6.1.0",
"spatie/laravel-ignition": "^2.8.0"
"spatie/laravel-ignition": "^2.9.1"
},
"type": "library",
"extra": {
@ -9743,7 +9738,7 @@
"type": "patreon"
}
],
"time": "2024-10-15T15:12:40+00:00"
"time": "2025-03-14T22:35:49+00:00"
},
{
"name": "pdepend/pdepend",
@ -9893,16 +9888,16 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "3.11.3",
"version": "3.12.0",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10"
"reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10",
"reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/2d1b63db139c3c6ea0c927698e5160f8b3b8d630",
"reference": "2d1b63db139c3c6ea0c927698e5160f8b3b8d630",
"shasum": ""
},
"require": {
@ -9969,11 +9964,11 @@
"type": "open_collective"
},
{
"url": "https://thanks.dev/phpcsstandards",
"url": "https://thanks.dev/u/gh/phpcsstandards",
"type": "thanks_dev"
}
],
"time": "2025-01-23T17:04:15+00:00"
"time": "2025-03-18T05:04:51+00:00"
},
{
"name": "symfony/config",
@ -10052,16 +10047,16 @@
},
{
"name": "symfony/dependency-injection",
"version": "v6.4.19",
"version": "v6.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "b343c3b2f1539fe41331657b37d5c96c1d1ea842"
"reference": "c49796a9184a532843e78e50df9e55708b92543a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b343c3b2f1539fe41331657b37d5c96c1d1ea842",
"reference": "b343c3b2f1539fe41331657b37d5c96c1d1ea842",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c49796a9184a532843e78e50df9e55708b92543a",
"reference": "c49796a9184a532843e78e50df9e55708b92543a",
"shasum": ""
},
"require": {
@ -10069,7 +10064,7 @@
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^6.2.10|^7.0"
"symfony/var-exporter": "^6.4.20|^7.2.5"
},
"conflict": {
"ext-psr": "<1.1|>=2",
@ -10113,7 +10108,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/dependency-injection/tree/v6.4.19"
"source": "https://github.com/symfony/dependency-injection/tree/v6.4.20"
},
"funding": [
{
@ -10129,7 +10124,7 @@
"type": "tidelift"
}
],
"time": "2025-02-20T10:02:49+00:00"
"time": "2025-03-13T09:55:08+00:00"
},
{
"name": "symfony/filesystem",
@ -10199,16 +10194,16 @@
},
{
"name": "symfony/var-exporter",
"version": "v6.4.19",
"version": "v6.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
"reference": "be6e71b0c257884c1107313de5d247741cfea172"
"reference": "998df255e9e6a15a36ae35e9c6cd818c17cf92a2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/be6e71b0c257884c1107313de5d247741cfea172",
"reference": "be6e71b0c257884c1107313de5d247741cfea172",
"url": "https://api.github.com/repos/symfony/var-exporter/zipball/998df255e9e6a15a36ae35e9c6cd818c17cf92a2",
"reference": "998df255e9e6a15a36ae35e9c6cd818c17cf92a2",
"shasum": ""
},
"require": {
@ -10256,7 +10251,7 @@
"serialize"
],
"support": {
"source": "https://github.com/symfony/var-exporter/tree/v6.4.19"
"source": "https://github.com/symfony/var-exporter/tree/v6.4.20"
},
"funding": [
{
@ -10272,7 +10267,7 @@
"type": "tidelift"
}
],
"time": "2025-02-13T09:33:32+00:00"
"time": "2025-03-13T09:55:08+00:00"
}
],
"aliases": [],