Set up API Platform
This commit is contained in:
parent
a4b0aef7c7
commit
4964172ae9
21 changed files with 6021 additions and 13 deletions
14
.env
14
.env
|
|
@ -25,3 +25,17 @@ APP_SHARE_DIR=var/share
|
||||||
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
|
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
|
||||||
DEFAULT_URI=http://localhost
|
DEFAULT_URI=http://localhost
|
||||||
###< symfony/routing ###
|
###< symfony/routing ###
|
||||||
|
|
||||||
|
###> doctrine/doctrine-bundle ###
|
||||||
|
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
||||||
|
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
|
||||||
|
#
|
||||||
|
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data_%kernel.environment%.db"
|
||||||
|
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
|
||||||
|
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
|
||||||
|
DATABASE_URL="postgresql://buckets:buckets@db:5432/buckets?serverVersion=16&charset=utf8"
|
||||||
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
|
###> nelmio/cors-bundle ###
|
||||||
|
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
|
||||||
|
###< nelmio/cors-bundle ###
|
||||||
|
|
|
||||||
|
|
@ -7,15 +7,29 @@
|
||||||
"php": ">=8.4",
|
"php": ">=8.4",
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-iconv": "*",
|
"ext-iconv": "*",
|
||||||
|
"api-platform/doctrine-orm": "^4.3",
|
||||||
|
"api-platform/symfony": "^4.3",
|
||||||
|
"doctrine/doctrine-bundle": "^3.2",
|
||||||
|
"doctrine/doctrine-migrations-bundle": "^4.0",
|
||||||
|
"doctrine/orm": "^3.6",
|
||||||
|
"nelmio/cors-bundle": "^2.6",
|
||||||
|
"phpdocumentor/reflection-docblock": "^6.0",
|
||||||
|
"phpstan/phpdoc-parser": "^2.3",
|
||||||
|
"symfony/asset": "8.1.*",
|
||||||
"symfony/console": "8.1.*",
|
"symfony/console": "8.1.*",
|
||||||
"symfony/dotenv": "8.1.*",
|
"symfony/dotenv": "8.1.*",
|
||||||
|
"symfony/expression-language": "8.1.*",
|
||||||
"symfony/flex": "^2",
|
"symfony/flex": "^2",
|
||||||
"symfony/framework-bundle": "8.1.*",
|
"symfony/framework-bundle": "8.1.*",
|
||||||
|
"symfony/property-access": "8.1.*",
|
||||||
|
"symfony/property-info": "8.1.*",
|
||||||
"symfony/runtime": "8.1.*",
|
"symfony/runtime": "8.1.*",
|
||||||
|
"symfony/security-bundle": "8.1.*",
|
||||||
|
"symfony/serializer": "8.1.*",
|
||||||
|
"symfony/twig-bundle": "8.1.*",
|
||||||
|
"symfony/validator": "8.1.*",
|
||||||
"symfony/yaml": "8.1.*"
|
"symfony/yaml": "8.1.*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
|
||||||
},
|
|
||||||
"config": {
|
"config": {
|
||||||
"allow-plugins": {
|
"allow-plugins": {
|
||||||
"php-http/discovery": true,
|
"php-http/discovery": true,
|
||||||
|
|
|
||||||
4801
composer.lock
generated
4801
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -2,4 +2,10 @@
|
||||||
|
|
||||||
return [
|
return [
|
||||||
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
|
||||||
|
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
|
||||||
|
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
|
||||||
|
Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
|
||||||
|
ApiPlatform\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
7
config/packages/api_platform.yaml
Normal file
7
config/packages/api_platform.yaml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
api_platform:
|
||||||
|
title: Hello API Platform
|
||||||
|
version: 1.0.0
|
||||||
|
defaults:
|
||||||
|
stateless: true
|
||||||
|
cache_headers:
|
||||||
|
vary: ['Content-Type', 'Authorization', 'Origin']
|
||||||
46
config/packages/doctrine.yaml
Normal file
46
config/packages/doctrine.yaml
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
doctrine:
|
||||||
|
dbal:
|
||||||
|
url: '%env(resolve:DATABASE_URL)%'
|
||||||
|
|
||||||
|
# IMPORTANT: You MUST configure your server version,
|
||||||
|
# either here or in the DATABASE_URL env var (see .env file)
|
||||||
|
#server_version: '16'
|
||||||
|
|
||||||
|
profiling_collect_backtrace: '%kernel.debug%'
|
||||||
|
orm:
|
||||||
|
validate_xml_mapping: true
|
||||||
|
naming_strategy: doctrine.orm.naming_strategy.underscore
|
||||||
|
identity_generation_preferences:
|
||||||
|
Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity
|
||||||
|
auto_mapping: true
|
||||||
|
mappings:
|
||||||
|
App:
|
||||||
|
type: attribute
|
||||||
|
is_bundle: false
|
||||||
|
dir: '%kernel.project_dir%/src/Entity'
|
||||||
|
prefix: 'App\Entity'
|
||||||
|
alias: App
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
doctrine:
|
||||||
|
dbal:
|
||||||
|
# "TEST_TOKEN" is typically set by ParaTest
|
||||||
|
dbname_suffix: '_test%env(default::TEST_TOKEN)%'
|
||||||
|
|
||||||
|
when@prod:
|
||||||
|
doctrine:
|
||||||
|
orm:
|
||||||
|
query_cache_driver:
|
||||||
|
type: pool
|
||||||
|
pool: doctrine.system_cache_pool
|
||||||
|
result_cache_driver:
|
||||||
|
type: pool
|
||||||
|
pool: doctrine.result_cache_pool
|
||||||
|
|
||||||
|
framework:
|
||||||
|
cache:
|
||||||
|
pools:
|
||||||
|
doctrine.result_cache_pool:
|
||||||
|
adapter: cache.app
|
||||||
|
doctrine.system_cache_pool:
|
||||||
|
adapter: cache.system
|
||||||
6
config/packages/doctrine_migrations.yaml
Normal file
6
config/packages/doctrine_migrations.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
doctrine_migrations:
|
||||||
|
migrations_paths:
|
||||||
|
# namespace is arbitrary but should be different from App\Migrations
|
||||||
|
# as migrations classes should NOT be autoloaded
|
||||||
|
'DoctrineMigrations': '%kernel.project_dir%/migrations'
|
||||||
|
enable_profiler: false
|
||||||
10
config/packages/nelmio_cors.yaml
Normal file
10
config/packages/nelmio_cors.yaml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
nelmio_cors:
|
||||||
|
defaults:
|
||||||
|
origin_regex: true
|
||||||
|
allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
|
||||||
|
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
|
||||||
|
allow_headers: ['Content-Type', 'Authorization']
|
||||||
|
expose_headers: ['Link']
|
||||||
|
max_age: 3600
|
||||||
|
paths:
|
||||||
|
'^/': null
|
||||||
3
config/packages/property_info.yaml
Normal file
3
config/packages/property_info.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
framework:
|
||||||
|
property_info:
|
||||||
|
with_constructor_extractor: true
|
||||||
39
config/packages/security.yaml
Normal file
39
config/packages/security.yaml
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
security:
|
||||||
|
# https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
|
||||||
|
password_hashers:
|
||||||
|
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
|
||||||
|
|
||||||
|
# https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
|
||||||
|
providers:
|
||||||
|
users_in_memory: { memory: null }
|
||||||
|
|
||||||
|
firewalls:
|
||||||
|
dev:
|
||||||
|
# Ensure dev tools and static assets are always allowed
|
||||||
|
pattern: ^/(_profiler|_wdt|assets|build)/
|
||||||
|
security: false
|
||||||
|
main:
|
||||||
|
lazy: true
|
||||||
|
provider: users_in_memory
|
||||||
|
|
||||||
|
# Activate different ways to authenticate:
|
||||||
|
# https://symfony.com/doc/current/security.html#the-firewall
|
||||||
|
|
||||||
|
# https://symfony.com/doc/current/security/impersonating_user.html
|
||||||
|
# switch_user: true
|
||||||
|
|
||||||
|
# Note: Only the *first* matching rule is applied
|
||||||
|
access_control:
|
||||||
|
# - { path: ^/admin, roles: ROLE_ADMIN }
|
||||||
|
# - { path: ^/profile, roles: ROLE_USER }
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
security:
|
||||||
|
password_hashers:
|
||||||
|
# Password hashers are resource-intensive by design to ensure security.
|
||||||
|
# In tests, it's safe to reduce their cost to improve performance.
|
||||||
|
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface:
|
||||||
|
algorithm: auto
|
||||||
|
cost: 4 # Lowest possible value for bcrypt
|
||||||
|
time_cost: 3 # Lowest possible value for argon
|
||||||
|
memory_cost: 10 # Lowest possible value for argon
|
||||||
6
config/packages/twig.yaml
Normal file
6
config/packages/twig.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
twig:
|
||||||
|
file_name_pattern: '*.twig'
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
twig:
|
||||||
|
strict_variables: true
|
||||||
11
config/packages/validator.yaml
Normal file
11
config/packages/validator.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
framework:
|
||||||
|
validation:
|
||||||
|
# Enables validator auto-mapping support.
|
||||||
|
# For instance, basic validation constraints will be inferred from Doctrine's metadata.
|
||||||
|
#auto_mapping:
|
||||||
|
# App\Entity\: []
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
framework:
|
||||||
|
validation:
|
||||||
|
not_compromised_password: false
|
||||||
|
|
@ -37,7 +37,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* @psalm-type ArgumentsType = list<mixed>|array<string, mixed>
|
* @psalm-type ArgumentsType = list<mixed>|array<string, mixed>
|
||||||
* @psalm-type CallType = array<string, ArgumentsType>|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool}
|
* @psalm-type CallType = array<string, ArgumentsType>|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool}
|
||||||
* @psalm-type TagsType = list<string|array<string, array<string, mixed>>> // arrays inside the list must have only one element, with the tag name as the key
|
* @psalm-type TagsType = list<string|array<string, array<string, mixed>>> // arrays inside the list must have only one element, with the tag name as the key
|
||||||
* @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator
|
* @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator
|
||||||
* @psalm-type DeprecationType = array{package: string, version: string, message?: string}
|
* @psalm-type DeprecationType = array{package: string, version: string, message?: string}
|
||||||
* @psalm-type DefaultsType = array{
|
* @psalm-type DefaultsType = array{
|
||||||
* public?: bool,
|
* public?: bool,
|
||||||
|
|
@ -267,7 +267,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* formats?: array<string, string|list<scalar|Param|null>>,
|
* formats?: array<string, string|list<scalar|Param|null>>,
|
||||||
* },
|
* },
|
||||||
* assets?: bool|array{ // Assets configuration
|
* assets?: bool|array{ // Assets configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false
|
* strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false
|
||||||
* version_strategy?: scalar|Param|null, // Default: null
|
* version_strategy?: scalar|Param|null, // Default: null
|
||||||
* version?: scalar|Param|null, // Default: null
|
* version?: scalar|Param|null, // Default: null
|
||||||
|
|
@ -333,7 +333,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* }>,
|
* }>,
|
||||||
* },
|
* },
|
||||||
* validation?: bool|array{ // Validation configuration
|
* validation?: bool|array{ // Validation configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* enable_attributes?: bool|Param, // Default: true
|
* enable_attributes?: bool|Param, // Default: true
|
||||||
* static_method?: string|list<scalar|Param|null>,
|
* static_method?: string|list<scalar|Param|null>,
|
||||||
* translation_domain?: scalar|Param|null, // Default: "validators"
|
* translation_domain?: scalar|Param|null, // Default: "validators"
|
||||||
|
|
@ -352,7 +352,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* }>,
|
* }>,
|
||||||
* },
|
* },
|
||||||
* serializer?: bool|array{ // Serializer configuration
|
* serializer?: bool|array{ // Serializer configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* enable_attributes?: bool|Param, // Default: true
|
* enable_attributes?: bool|Param, // Default: true
|
||||||
* name_converter?: scalar|Param|null,
|
* name_converter?: scalar|Param|null,
|
||||||
* circular_reference_handler?: scalar|Param|null,
|
* circular_reference_handler?: scalar|Param|null,
|
||||||
|
|
@ -369,7 +369,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* }>,
|
* }>,
|
||||||
* },
|
* },
|
||||||
* property_access?: bool|array{ // Property access configuration
|
* property_access?: bool|array{ // Property access configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* magic_call?: bool|Param, // Default: false
|
* magic_call?: bool|Param, // Default: false
|
||||||
* magic_get?: bool|Param, // Default: true
|
* magic_get?: bool|Param, // Default: true
|
||||||
* magic_set?: bool|Param, // Default: true
|
* magic_set?: bool|Param, // Default: true
|
||||||
|
|
@ -377,11 +377,11 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* throw_exception_on_invalid_property_path?: bool|Param, // Default: true
|
* throw_exception_on_invalid_property_path?: bool|Param, // Default: true
|
||||||
* },
|
* },
|
||||||
* type_info?: bool|array{ // Type info configuration
|
* type_info?: bool|array{ // Type info configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* aliases?: array<string, scalar|Param|null>,
|
* aliases?: array<string, scalar|Param|null>,
|
||||||
* },
|
* },
|
||||||
* property_info?: bool|array{ // Property info configuration
|
* property_info?: bool|array{ // Property info configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* with_constructor_extractor?: bool|Param, // Registers the constructor extractor. // Default: true
|
* with_constructor_extractor?: bool|Param, // Registers the constructor extractor. // Default: true
|
||||||
* },
|
* },
|
||||||
* cache?: array{ // Cache configuration
|
* cache?: array{ // Cache configuration
|
||||||
|
|
@ -416,7 +416,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* log_channel?: scalar|Param|null, // The channel of log message. Null to let Symfony decide. // Default: null
|
* log_channel?: scalar|Param|null, // The channel of log message. Null to let Symfony decide. // Default: null
|
||||||
* }>,
|
* }>,
|
||||||
* web_link?: bool|array{ // Web links configuration
|
* web_link?: bool|array{ // Web links configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* },
|
* },
|
||||||
* lock?: bool|string|array{ // Lock configuration
|
* lock?: bool|string|array{ // Lock configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: false
|
||||||
|
|
@ -646,7 +646,7 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* }>,
|
* }>,
|
||||||
* },
|
* },
|
||||||
* uid?: bool|array{ // Uid configuration
|
* uid?: bool|array{ // Uid configuration
|
||||||
* enabled?: bool|Param, // Default: false
|
* enabled?: bool|Param, // Default: true
|
||||||
* default_uuid_version?: 7|6|4|1|Param, // Default: 7
|
* default_uuid_version?: 7|6|4|1|Param, // Default: 7
|
||||||
* name_based_uuid_version?: 5|3|Param, // Default: 5
|
* name_based_uuid_version?: 5|3|Param, // Default: 5
|
||||||
* name_based_uuid_namespace?: scalar|Param|null,
|
* name_based_uuid_namespace?: scalar|Param|null,
|
||||||
|
|
@ -701,28 +701,926 @@ use Symfony\Component\Config\Loader\ParamConfigurator as Param;
|
||||||
* },
|
* },
|
||||||
* },
|
* },
|
||||||
* }
|
* }
|
||||||
|
* @psalm-type TwigConfig = array{
|
||||||
|
* form_themes?: list<scalar|Param|null>,
|
||||||
|
* globals?: array<string, array{ // Default: []
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* type?: scalar|Param|null,
|
||||||
|
* value?: mixed,
|
||||||
|
* }>,
|
||||||
|
* autoescape_service?: scalar|Param|null, // Default: null
|
||||||
|
* autoescape_service_method?: scalar|Param|null, // Default: null
|
||||||
|
* cache?: scalar|Param|null, // Default: true
|
||||||
|
* charset?: scalar|Param|null, // Default: "%kernel.charset%"
|
||||||
|
* debug?: bool|Param, // Default: "%kernel.debug%"
|
||||||
|
* strict_variables?: bool|Param, // Default: "%kernel.debug%"
|
||||||
|
* auto_reload?: scalar|Param|null,
|
||||||
|
* optimizations?: int|Param,
|
||||||
|
* default_path?: scalar|Param|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates"
|
||||||
|
* file_name_pattern?: string|list<scalar|Param|null>,
|
||||||
|
* paths?: array<string, mixed>,
|
||||||
|
* date?: array{ // The default format options used by the date filter.
|
||||||
|
* format?: scalar|Param|null, // Default: "F j, Y H:i"
|
||||||
|
* interval_format?: scalar|Param|null, // Default: "%d days"
|
||||||
|
* timezone?: scalar|Param|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null
|
||||||
|
* },
|
||||||
|
* number_format?: array{ // The default format options for the number_format filter.
|
||||||
|
* decimals?: int|Param, // Default: 0
|
||||||
|
* decimal_point?: scalar|Param|null, // Default: "."
|
||||||
|
* thousands_separator?: scalar|Param|null, // Default: ","
|
||||||
|
* },
|
||||||
|
* mailer?: array{
|
||||||
|
* html_to_text_converter?: scalar|Param|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null
|
||||||
|
* },
|
||||||
|
* }
|
||||||
|
* @psalm-type SecurityConfig = array{
|
||||||
|
* access_denied_url?: scalar|Param|null, // Default: null
|
||||||
|
* session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate"
|
||||||
|
* expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none"
|
||||||
|
* erase_credentials?: bool|Param, // Deprecated: Setting the "security.erase_credentials.erase_credentials" configuration option is deprecated. It will be removed in Symfony 9.0, as the "eraseCredentials()" method was removed in Symfony 8.0. // Default: true
|
||||||
|
* access_decision_manager?: array{
|
||||||
|
* strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param,
|
||||||
|
* service?: scalar|Param|null,
|
||||||
|
* strategy_service?: scalar|Param|null,
|
||||||
|
* allow_if_all_abstain?: bool|Param, // Default: false
|
||||||
|
* allow_if_equal_granted_denied?: bool|Param, // Default: true
|
||||||
|
* },
|
||||||
|
* password_hashers?: array<string, string|array{ // Default: []
|
||||||
|
* algorithm?: scalar|Param|null,
|
||||||
|
* migrate_from?: string|list<scalar|Param|null>,
|
||||||
|
* hash_algorithm?: scalar|Param|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512"
|
||||||
|
* key_length?: scalar|Param|null, // Default: 40
|
||||||
|
* ignore_case?: bool|Param, // Default: false
|
||||||
|
* encode_as_base64?: bool|Param, // Default: true
|
||||||
|
* iterations?: scalar|Param|null, // Default: 5000
|
||||||
|
* cost?: int|Param, // Default: null
|
||||||
|
* memory_cost?: scalar|Param|null, // Default: null
|
||||||
|
* time_cost?: scalar|Param|null, // Default: null
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* }>,
|
||||||
|
* providers?: array<string, array{ // Default: []
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* chain?: array{
|
||||||
|
* providers?: string|list<scalar|Param|null>,
|
||||||
|
* },
|
||||||
|
* memory?: array{
|
||||||
|
* users?: array<string, array{ // Default: []
|
||||||
|
* password?: scalar|Param|null, // Default: null
|
||||||
|
* roles?: string|list<scalar|Param|null>,
|
||||||
|
* }>,
|
||||||
|
* },
|
||||||
|
* ldap?: array{
|
||||||
|
* service?: scalar|Param|null,
|
||||||
|
* base_dn?: scalar|Param|null,
|
||||||
|
* search_dn?: scalar|Param|null, // Default: null
|
||||||
|
* search_password?: scalar|Param|null, // Default: null
|
||||||
|
* extra_fields?: list<scalar|Param|null>,
|
||||||
|
* default_roles?: string|list<scalar|Param|null>,
|
||||||
|
* role_fetcher?: scalar|Param|null, // Default: null
|
||||||
|
* uid_key?: scalar|Param|null, // Default: "sAMAccountName"
|
||||||
|
* filter?: scalar|Param|null, // Default: "({uid_key}={user_identifier})"
|
||||||
|
* password_attribute?: scalar|Param|null, // Default: null
|
||||||
|
* },
|
||||||
|
* entity?: array{
|
||||||
|
* class?: scalar|Param|null, // The full entity class name of your user class.
|
||||||
|
* property?: scalar|Param|null, // Default: null
|
||||||
|
* manager_name?: scalar|Param|null, // Default: null
|
||||||
|
* },
|
||||||
|
* }>,
|
||||||
|
* firewalls?: array<string, array{ // Default: []
|
||||||
|
* pattern?: scalar|Param|null,
|
||||||
|
* host?: scalar|Param|null,
|
||||||
|
* methods?: string|list<scalar|Param|null>,
|
||||||
|
* security?: bool|Param, // Default: true
|
||||||
|
* user_checker?: scalar|Param|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker"
|
||||||
|
* request_matcher?: scalar|Param|null,
|
||||||
|
* access_denied_url?: scalar|Param|null,
|
||||||
|
* access_denied_handler?: scalar|Param|null,
|
||||||
|
* entry_point?: scalar|Param|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface".
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* stateless?: bool|Param, // Default: false
|
||||||
|
* lazy?: bool|Param, // Default: false
|
||||||
|
* context?: scalar|Param|null,
|
||||||
|
* logout?: array{
|
||||||
|
* enable_csrf?: bool|Param|null, // Default: null
|
||||||
|
* csrf_token_id?: scalar|Param|null, // Default: "logout"
|
||||||
|
* csrf_parameter?: scalar|Param|null, // Default: "_csrf_token"
|
||||||
|
* csrf_token_manager?: scalar|Param|null,
|
||||||
|
* path?: scalar|Param|null, // Default: "/logout"
|
||||||
|
* target?: scalar|Param|null, // Default: "/"
|
||||||
|
* invalidate_session?: bool|Param, // Default: true
|
||||||
|
* clear_site_data?: string|list<"*"|"cache"|"cookies"|"storage"|"clientHints"|"executionContexts"|"prefetchCache"|"prerenderCache"|Param>,
|
||||||
|
* delete_cookies?: string|array<string, array{ // Default: []
|
||||||
|
* path?: scalar|Param|null, // Default: null
|
||||||
|
* domain?: scalar|Param|null, // Default: null
|
||||||
|
* secure?: scalar|Param|null, // Default: false
|
||||||
|
* samesite?: scalar|Param|null, // Default: null
|
||||||
|
* partitioned?: scalar|Param|null, // Default: false
|
||||||
|
* }>,
|
||||||
|
* },
|
||||||
|
* switch_user?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* parameter?: scalar|Param|null, // Default: "_switch_user"
|
||||||
|
* role?: scalar|Param|null, // Default: "ROLE_ALLOWED_TO_SWITCH"
|
||||||
|
* target_route?: scalar|Param|null, // Default: null
|
||||||
|
* },
|
||||||
|
* required_badges?: list<scalar|Param|null>,
|
||||||
|
* custom_authenticators?: list<scalar|Param|null>,
|
||||||
|
* login_throttling?: array{
|
||||||
|
* limiter?: scalar|Param|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface".
|
||||||
|
* max_attempts?: int|Param, // Default: 5
|
||||||
|
* interval?: scalar|Param|null, // Default: "1 minute"
|
||||||
|
* lock_factory?: scalar|Param|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null
|
||||||
|
* cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter"
|
||||||
|
* storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null
|
||||||
|
* },
|
||||||
|
* x509?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* user?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN_Email"
|
||||||
|
* credentials?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN"
|
||||||
|
* user_identifier?: scalar|Param|null, // Default: "emailAddress"
|
||||||
|
* },
|
||||||
|
* remote_user?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* user?: scalar|Param|null, // Default: "REMOTE_USER"
|
||||||
|
* },
|
||||||
|
* login_link?: array{
|
||||||
|
* check_route?: scalar|Param|null, // Route that will validate the login link - e.g. "app_login_link_verify".
|
||||||
|
* check_post_only?: scalar|Param|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false
|
||||||
|
* signature_properties?: list<scalar|Param|null>,
|
||||||
|
* lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600
|
||||||
|
* max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null
|
||||||
|
* used_link_cache?: scalar|Param|null, // Cache service id used to expired links of max_uses is set.
|
||||||
|
* success_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface.
|
||||||
|
* failure_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface.
|
||||||
|
* provider?: scalar|Param|null, // The user provider to load users from.
|
||||||
|
* secret?: scalar|Param|null, // Default: "%kernel.secret%"
|
||||||
|
* always_use_default_target_path?: bool|Param, // Default: false
|
||||||
|
* default_target_path?: scalar|Param|null, // Default: "/"
|
||||||
|
* login_path?: scalar|Param|null, // Default: "/login"
|
||||||
|
* target_path_parameter?: scalar|Param|null, // Default: "_target_path"
|
||||||
|
* use_referer?: bool|Param, // Default: false
|
||||||
|
* failure_path?: scalar|Param|null, // Default: null
|
||||||
|
* failure_forward?: bool|Param, // Default: false
|
||||||
|
* failure_path_parameter?: scalar|Param|null, // Default: "_failure_path"
|
||||||
|
* },
|
||||||
|
* form_login?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* remember_me?: bool|Param, // Default: true
|
||||||
|
* success_handler?: scalar|Param|null,
|
||||||
|
* failure_handler?: scalar|Param|null,
|
||||||
|
* check_path?: scalar|Param|null, // Default: "/login_check"
|
||||||
|
* use_forward?: bool|Param, // Default: false
|
||||||
|
* login_path?: scalar|Param|null, // Default: "/login"
|
||||||
|
* username_parameter?: scalar|Param|null, // Default: "_username"
|
||||||
|
* password_parameter?: scalar|Param|null, // Default: "_password"
|
||||||
|
* csrf_parameter?: scalar|Param|null, // Default: "_csrf_token"
|
||||||
|
* csrf_token_id?: scalar|Param|null, // Default: "authenticate"
|
||||||
|
* enable_csrf?: bool|Param, // Default: false
|
||||||
|
* post_only?: bool|Param, // Default: true
|
||||||
|
* form_only?: bool|Param, // Default: false
|
||||||
|
* always_use_default_target_path?: bool|Param, // Default: false
|
||||||
|
* default_target_path?: scalar|Param|null, // Default: "/"
|
||||||
|
* target_path_parameter?: scalar|Param|null, // Default: "_target_path"
|
||||||
|
* use_referer?: bool|Param, // Default: false
|
||||||
|
* failure_path?: scalar|Param|null, // Default: null
|
||||||
|
* failure_forward?: bool|Param, // Default: false
|
||||||
|
* failure_path_parameter?: scalar|Param|null, // Default: "_failure_path"
|
||||||
|
* },
|
||||||
|
* form_login_ldap?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* remember_me?: bool|Param, // Default: true
|
||||||
|
* success_handler?: scalar|Param|null,
|
||||||
|
* failure_handler?: scalar|Param|null,
|
||||||
|
* check_path?: scalar|Param|null, // Default: "/login_check"
|
||||||
|
* use_forward?: bool|Param, // Default: false
|
||||||
|
* login_path?: scalar|Param|null, // Default: "/login"
|
||||||
|
* username_parameter?: scalar|Param|null, // Default: "_username"
|
||||||
|
* password_parameter?: scalar|Param|null, // Default: "_password"
|
||||||
|
* csrf_parameter?: scalar|Param|null, // Default: "_csrf_token"
|
||||||
|
* csrf_token_id?: scalar|Param|null, // Default: "authenticate"
|
||||||
|
* enable_csrf?: bool|Param, // Default: false
|
||||||
|
* post_only?: bool|Param, // Default: true
|
||||||
|
* form_only?: bool|Param, // Default: false
|
||||||
|
* always_use_default_target_path?: bool|Param, // Default: false
|
||||||
|
* default_target_path?: scalar|Param|null, // Default: "/"
|
||||||
|
* target_path_parameter?: scalar|Param|null, // Default: "_target_path"
|
||||||
|
* use_referer?: bool|Param, // Default: false
|
||||||
|
* failure_path?: scalar|Param|null, // Default: null
|
||||||
|
* failure_forward?: bool|Param, // Default: false
|
||||||
|
* failure_path_parameter?: scalar|Param|null, // Default: "_failure_path"
|
||||||
|
* service?: scalar|Param|null, // Default: "ldap"
|
||||||
|
* dn_string?: scalar|Param|null, // Default: "{user_identifier}"
|
||||||
|
* query_string?: scalar|Param|null,
|
||||||
|
* search_dn?: scalar|Param|null, // Default: ""
|
||||||
|
* search_password?: scalar|Param|null, // Default: ""
|
||||||
|
* },
|
||||||
|
* json_login?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* remember_me?: bool|Param, // Default: true
|
||||||
|
* success_handler?: scalar|Param|null,
|
||||||
|
* failure_handler?: scalar|Param|null,
|
||||||
|
* check_path?: scalar|Param|null, // Default: "/login_check"
|
||||||
|
* use_forward?: bool|Param, // Default: false
|
||||||
|
* login_path?: scalar|Param|null, // Default: "/login"
|
||||||
|
* username_path?: scalar|Param|null, // Default: "username"
|
||||||
|
* password_path?: scalar|Param|null, // Default: "password"
|
||||||
|
* },
|
||||||
|
* json_login_ldap?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* remember_me?: bool|Param, // Default: true
|
||||||
|
* success_handler?: scalar|Param|null,
|
||||||
|
* failure_handler?: scalar|Param|null,
|
||||||
|
* check_path?: scalar|Param|null, // Default: "/login_check"
|
||||||
|
* use_forward?: bool|Param, // Default: false
|
||||||
|
* login_path?: scalar|Param|null, // Default: "/login"
|
||||||
|
* username_path?: scalar|Param|null, // Default: "username"
|
||||||
|
* password_path?: scalar|Param|null, // Default: "password"
|
||||||
|
* service?: scalar|Param|null, // Default: "ldap"
|
||||||
|
* dn_string?: scalar|Param|null, // Default: "{user_identifier}"
|
||||||
|
* query_string?: scalar|Param|null,
|
||||||
|
* search_dn?: scalar|Param|null, // Default: ""
|
||||||
|
* search_password?: scalar|Param|null, // Default: ""
|
||||||
|
* },
|
||||||
|
* access_token?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* remember_me?: bool|Param, // Default: true
|
||||||
|
* success_handler?: scalar|Param|null,
|
||||||
|
* failure_handler?: scalar|Param|null,
|
||||||
|
* realm?: scalar|Param|null, // Default: null
|
||||||
|
* token_extractors?: string|list<scalar|Param|null>,
|
||||||
|
* token_handler?: string|array{
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* oidc_user_info?: string|array{
|
||||||
|
* base_uri?: scalar|Param|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured).
|
||||||
|
* discovery?: array{ // Enable the OIDC discovery.
|
||||||
|
* cache?: array{
|
||||||
|
* id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration.
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* claim?: scalar|Param|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub"
|
||||||
|
* client?: scalar|Param|null, // HttpClient service id to use to call the OIDC server.
|
||||||
|
* },
|
||||||
|
* oidc?: array{
|
||||||
|
* discovery?: array{ // Enable the OIDC discovery.
|
||||||
|
* base_uri?: string|list<scalar|Param|null>,
|
||||||
|
* cache?: array{
|
||||||
|
* id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration.
|
||||||
|
* },
|
||||||
|
* enforce_key_usage_verification?: bool|Param, // When enabled (default), only keys explicitly designated for signature (via "use":"sig" or a "key_ops" entry containing "sign"/"verify") are accepted. When disabled, keys without any usage designation are also accepted; keys explicitly restricted to encryption are still rejected. // Default: true
|
||||||
|
* },
|
||||||
|
* claim?: scalar|Param|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub"
|
||||||
|
* audience?: scalar|Param|null, // Audience set in the token, for validation purpose.
|
||||||
|
* issuers?: list<scalar|Param|null>,
|
||||||
|
* algorithms?: list<scalar|Param|null>,
|
||||||
|
* keyset?: scalar|Param|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys).
|
||||||
|
* encryption?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false
|
||||||
|
* algorithms?: list<scalar|Param|null>,
|
||||||
|
* keyset?: scalar|Param|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys).
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* cas?: array{
|
||||||
|
* validation_url?: scalar|Param|null, // CAS server validation URL
|
||||||
|
* prefix?: scalar|Param|null, // CAS prefix // Default: "cas"
|
||||||
|
* http_client?: scalar|Param|null, // HTTP Client service // Default: null
|
||||||
|
* },
|
||||||
|
* oauth2?: scalar|Param|null,
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* http_basic?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* realm?: scalar|Param|null, // Default: "Secured Area"
|
||||||
|
* },
|
||||||
|
* http_basic_ldap?: array{
|
||||||
|
* provider?: scalar|Param|null,
|
||||||
|
* realm?: scalar|Param|null, // Default: "Secured Area"
|
||||||
|
* service?: scalar|Param|null, // Default: "ldap"
|
||||||
|
* dn_string?: scalar|Param|null, // Default: "{user_identifier}"
|
||||||
|
* query_string?: scalar|Param|null,
|
||||||
|
* search_dn?: scalar|Param|null, // Default: ""
|
||||||
|
* search_password?: scalar|Param|null, // Default: ""
|
||||||
|
* },
|
||||||
|
* remember_me?: array{
|
||||||
|
* secret?: scalar|Param|null, // Default: "%kernel.secret%"
|
||||||
|
* service?: scalar|Param|null,
|
||||||
|
* user_providers?: string|list<scalar|Param|null>,
|
||||||
|
* catch_exceptions?: bool|Param, // Default: true
|
||||||
|
* signature_properties?: list<scalar|Param|null>,
|
||||||
|
* token_provider?: string|array{
|
||||||
|
* service?: scalar|Param|null, // The service ID of a custom remember-me token provider.
|
||||||
|
* doctrine?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* connection?: scalar|Param|null, // Default: null
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* token_verifier?: scalar|Param|null, // The service ID of a custom rememberme token verifier.
|
||||||
|
* name?: scalar|Param|null, // Default: "REMEMBERME"
|
||||||
|
* lifetime?: int|Param, // Default: 31536000
|
||||||
|
* path?: scalar|Param|null, // Default: "/"
|
||||||
|
* domain?: scalar|Param|null, // Default: null
|
||||||
|
* secure?: true|false|"auto"|Param, // Default: false
|
||||||
|
* httponly?: bool|Param, // Default: true
|
||||||
|
* samesite?: null|"lax"|"strict"|"none"|Param, // Default: null
|
||||||
|
* always_remember_me?: bool|Param, // Default: false
|
||||||
|
* remember_me_parameter?: scalar|Param|null, // Default: "_remember_me"
|
||||||
|
* },
|
||||||
|
* }>,
|
||||||
|
* access_control?: list<array{ // Default: []
|
||||||
|
* request_matcher?: scalar|Param|null, // Default: null
|
||||||
|
* requires_channel?: scalar|Param|null, // Default: null
|
||||||
|
* path?: scalar|Param|null, // Use the urldecoded format. // Default: null
|
||||||
|
* host?: scalar|Param|null, // Default: null
|
||||||
|
* port?: int|Param, // Default: null
|
||||||
|
* ips?: string|list<scalar|Param|null>,
|
||||||
|
* attributes?: array<string, scalar|Param|null>,
|
||||||
|
* route?: scalar|Param|null, // Default: null
|
||||||
|
* methods?: string|list<scalar|Param|null>,
|
||||||
|
* allow_if?: scalar|Param|null, // Default: null
|
||||||
|
* roles?: string|list<scalar|Param|null>,
|
||||||
|
* }>,
|
||||||
|
* role_hierarchy?: array<string, string|list<scalar|Param|null>>,
|
||||||
|
* }
|
||||||
|
* @psalm-type DoctrineConfig = array{
|
||||||
|
* dbal?: array{
|
||||||
|
* default_connection?: scalar|Param|null,
|
||||||
|
* types?: array<string, string|array{ // Default: []
|
||||||
|
* class?: scalar|Param|null,
|
||||||
|
* }>,
|
||||||
|
* driver_schemes?: array<string, scalar|Param|null>,
|
||||||
|
* connections?: array<string, array{ // Default: []
|
||||||
|
* url?: scalar|Param|null, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
|
||||||
|
* dbname?: scalar|Param|null,
|
||||||
|
* host?: scalar|Param|null, // Defaults to "localhost" at runtime.
|
||||||
|
* port?: scalar|Param|null, // Defaults to null at runtime.
|
||||||
|
* user?: scalar|Param|null, // Defaults to "root" at runtime.
|
||||||
|
* password?: scalar|Param|null, // Defaults to null at runtime.
|
||||||
|
* dbname_suffix?: scalar|Param|null, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
|
||||||
|
* application_name?: scalar|Param|null,
|
||||||
|
* charset?: scalar|Param|null,
|
||||||
|
* path?: scalar|Param|null,
|
||||||
|
* memory?: bool|Param,
|
||||||
|
* unix_socket?: scalar|Param|null, // The unix socket to use for MySQL
|
||||||
|
* persistent?: bool|Param, // True to use as persistent connection for the ibm_db2 driver
|
||||||
|
* protocol?: scalar|Param|null, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
|
||||||
|
* service?: bool|Param, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
|
||||||
|
* servicename?: scalar|Param|null, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
|
||||||
|
* sessionMode?: scalar|Param|null, // The session mode to use for the oci8 driver
|
||||||
|
* server?: scalar|Param|null, // The name of a running database server to connect to for SQL Anywhere.
|
||||||
|
* default_dbname?: scalar|Param|null, // Override the default database (postgres) to connect to for PostgreSQL connection.
|
||||||
|
* sslmode?: scalar|Param|null, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
|
||||||
|
* sslrootcert?: scalar|Param|null, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
|
||||||
|
* sslcert?: scalar|Param|null, // The path to the SSL client certificate file for PostgreSQL.
|
||||||
|
* sslkey?: scalar|Param|null, // The path to the SSL client key file for PostgreSQL.
|
||||||
|
* sslcrl?: scalar|Param|null, // The file name of the SSL certificate revocation list for PostgreSQL.
|
||||||
|
* pooled?: bool|Param, // True to use a pooled server with the oci8/pdo_oracle driver
|
||||||
|
* MultipleActiveResultSets?: bool|Param, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
|
||||||
|
* instancename?: scalar|Param|null, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
|
||||||
|
* connectstring?: scalar|Param|null, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
|
||||||
|
* driver?: scalar|Param|null, // Default: "pdo_mysql"
|
||||||
|
* auto_commit?: bool|Param,
|
||||||
|
* schema_filter?: scalar|Param|null,
|
||||||
|
* logging?: bool|Param, // Default: true
|
||||||
|
* profiling?: bool|Param, // Default: true
|
||||||
|
* profiling_collect_backtrace?: bool|Param, // Enables collecting backtraces when profiling is enabled // Default: false
|
||||||
|
* profiling_collect_schema_errors?: bool|Param, // Enables collecting schema errors when profiling is enabled // Default: true
|
||||||
|
* server_version?: scalar|Param|null,
|
||||||
|
* idle_connection_ttl?: int|Param, // Default: 600
|
||||||
|
* driver_class?: scalar|Param|null,
|
||||||
|
* wrapper_class?: scalar|Param|null,
|
||||||
|
* keep_replica?: bool|Param,
|
||||||
|
* options?: array<string, mixed>,
|
||||||
|
* mapping_types?: array<string, scalar|Param|null>,
|
||||||
|
* default_table_options?: array<string, scalar|Param|null>,
|
||||||
|
* schema_manager_factory?: scalar|Param|null, // Default: "doctrine.dbal.default_schema_manager_factory"
|
||||||
|
* result_cache?: scalar|Param|null,
|
||||||
|
* replicas?: array<string, array{ // Default: []
|
||||||
|
* url?: scalar|Param|null, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
|
||||||
|
* dbname?: scalar|Param|null,
|
||||||
|
* host?: scalar|Param|null, // Defaults to "localhost" at runtime.
|
||||||
|
* port?: scalar|Param|null, // Defaults to null at runtime.
|
||||||
|
* user?: scalar|Param|null, // Defaults to "root" at runtime.
|
||||||
|
* password?: scalar|Param|null, // Defaults to null at runtime.
|
||||||
|
* dbname_suffix?: scalar|Param|null, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
|
||||||
|
* application_name?: scalar|Param|null,
|
||||||
|
* charset?: scalar|Param|null,
|
||||||
|
* path?: scalar|Param|null,
|
||||||
|
* memory?: bool|Param,
|
||||||
|
* unix_socket?: scalar|Param|null, // The unix socket to use for MySQL
|
||||||
|
* persistent?: bool|Param, // True to use as persistent connection for the ibm_db2 driver
|
||||||
|
* protocol?: scalar|Param|null, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
|
||||||
|
* service?: bool|Param, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
|
||||||
|
* servicename?: scalar|Param|null, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
|
||||||
|
* sessionMode?: scalar|Param|null, // The session mode to use for the oci8 driver
|
||||||
|
* server?: scalar|Param|null, // The name of a running database server to connect to for SQL Anywhere.
|
||||||
|
* default_dbname?: scalar|Param|null, // Override the default database (postgres) to connect to for PostgreSQL connection.
|
||||||
|
* sslmode?: scalar|Param|null, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
|
||||||
|
* sslrootcert?: scalar|Param|null, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
|
||||||
|
* sslcert?: scalar|Param|null, // The path to the SSL client certificate file for PostgreSQL.
|
||||||
|
* sslkey?: scalar|Param|null, // The path to the SSL client key file for PostgreSQL.
|
||||||
|
* sslcrl?: scalar|Param|null, // The file name of the SSL certificate revocation list for PostgreSQL.
|
||||||
|
* pooled?: bool|Param, // True to use a pooled server with the oci8/pdo_oracle driver
|
||||||
|
* MultipleActiveResultSets?: bool|Param, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
|
||||||
|
* instancename?: scalar|Param|null, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
|
||||||
|
* connectstring?: scalar|Param|null, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
|
||||||
|
* }>,
|
||||||
|
* }>,
|
||||||
|
* },
|
||||||
|
* orm?: array{
|
||||||
|
* default_entity_manager?: scalar|Param|null,
|
||||||
|
* enable_native_lazy_objects?: bool|Param, // Deprecated: The "enable_native_lazy_objects" option is deprecated and will be removed in DoctrineBundle 4.0, as native lazy objects are now always enabled. // Default: true
|
||||||
|
* controller_resolver?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* auto_mapping?: bool|Param, // Deprecated: The "doctrine.orm.controller_resolver.auto_mapping.auto_mapping" option is deprecated and will be removed in DoctrineBundle 4.0, as it only accepts `false` since 3.0. // Set to true to enable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: false
|
||||||
|
* evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false
|
||||||
|
* },
|
||||||
|
* entity_managers?: array<string, array{ // Default: []
|
||||||
|
* query_cache_driver?: string|array{
|
||||||
|
* type?: scalar|Param|null, // Default: null
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* pool?: scalar|Param|null,
|
||||||
|
* },
|
||||||
|
* metadata_cache_driver?: string|array{
|
||||||
|
* type?: scalar|Param|null, // Default: null
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* pool?: scalar|Param|null,
|
||||||
|
* },
|
||||||
|
* result_cache_driver?: string|array{
|
||||||
|
* type?: scalar|Param|null, // Default: null
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* pool?: scalar|Param|null,
|
||||||
|
* },
|
||||||
|
* entity_listeners?: array{
|
||||||
|
* entities?: array<string, array{ // Default: []
|
||||||
|
* listeners?: array<string, array{ // Default: []
|
||||||
|
* events?: list<array{ // Default: []
|
||||||
|
* type?: scalar|Param|null,
|
||||||
|
* method?: scalar|Param|null, // Default: null
|
||||||
|
* }>,
|
||||||
|
* }>,
|
||||||
|
* }>,
|
||||||
|
* },
|
||||||
|
* connection?: scalar|Param|null,
|
||||||
|
* class_metadata_factory_name?: scalar|Param|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory"
|
||||||
|
* default_repository_class?: scalar|Param|null, // Default: "Doctrine\\ORM\\EntityRepository"
|
||||||
|
* auto_mapping?: scalar|Param|null, // Default: false
|
||||||
|
* naming_strategy?: scalar|Param|null, // Default: "doctrine.orm.naming_strategy.default"
|
||||||
|
* quote_strategy?: scalar|Param|null, // Default: "doctrine.orm.quote_strategy.default"
|
||||||
|
* typed_field_mapper?: scalar|Param|null, // Default: "doctrine.orm.typed_field_mapper.default"
|
||||||
|
* entity_listener_resolver?: scalar|Param|null, // Default: null
|
||||||
|
* fetch_mode_subselect_batch_size?: scalar|Param|null,
|
||||||
|
* repository_factory?: scalar|Param|null, // Default: "doctrine.orm.container_repository_factory"
|
||||||
|
* schema_ignore_classes?: list<scalar|Param|null>,
|
||||||
|
* validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/6728. // Default: false
|
||||||
|
* second_level_cache?: array{
|
||||||
|
* region_cache_driver?: string|array{
|
||||||
|
* type?: scalar|Param|null, // Default: null
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* pool?: scalar|Param|null,
|
||||||
|
* },
|
||||||
|
* region_lock_lifetime?: scalar|Param|null, // Default: 60
|
||||||
|
* log_enabled?: bool|Param, // Default: true
|
||||||
|
* region_lifetime?: scalar|Param|null, // Default: 3600
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* factory?: scalar|Param|null,
|
||||||
|
* regions?: array<string, array{ // Default: []
|
||||||
|
* cache_driver?: string|array{
|
||||||
|
* type?: scalar|Param|null, // Default: null
|
||||||
|
* id?: scalar|Param|null,
|
||||||
|
* pool?: scalar|Param|null,
|
||||||
|
* },
|
||||||
|
* lock_path?: scalar|Param|null, // Default: "%kernel.cache_dir%/doctrine/orm/slc/filelock"
|
||||||
|
* lock_lifetime?: scalar|Param|null, // Default: 60
|
||||||
|
* type?: scalar|Param|null, // Default: "default"
|
||||||
|
* lifetime?: scalar|Param|null, // Default: null
|
||||||
|
* service?: scalar|Param|null,
|
||||||
|
* name?: scalar|Param|null,
|
||||||
|
* }>,
|
||||||
|
* loggers?: array<string, array{ // Default: []
|
||||||
|
* name?: scalar|Param|null,
|
||||||
|
* service?: scalar|Param|null,
|
||||||
|
* }>,
|
||||||
|
* },
|
||||||
|
* hydrators?: array<string, scalar|Param|null>,
|
||||||
|
* mappings?: array<string, bool|string|array{ // Default: []
|
||||||
|
* mapping?: scalar|Param|null, // Default: true
|
||||||
|
* type?: scalar|Param|null,
|
||||||
|
* dir?: scalar|Param|null,
|
||||||
|
* alias?: scalar|Param|null,
|
||||||
|
* prefix?: scalar|Param|null,
|
||||||
|
* is_bundle?: bool|Param,
|
||||||
|
* }>,
|
||||||
|
* dql?: array{
|
||||||
|
* string_functions?: array<string, scalar|Param|null>,
|
||||||
|
* numeric_functions?: array<string, scalar|Param|null>,
|
||||||
|
* datetime_functions?: array<string, scalar|Param|null>,
|
||||||
|
* },
|
||||||
|
* filters?: array<string, string|array{ // Default: []
|
||||||
|
* class?: scalar|Param|null,
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* parameters?: array<string, mixed>,
|
||||||
|
* }>,
|
||||||
|
* identity_generation_preferences?: array<string, scalar|Param|null>,
|
||||||
|
* }>,
|
||||||
|
* resolve_target_entities?: array<string, scalar|Param|null>,
|
||||||
|
* },
|
||||||
|
* }
|
||||||
|
* @psalm-type DoctrineMigrationsConfig = array{
|
||||||
|
* enable_service_migrations?: bool|Param, // Whether to enable fetching migrations from the service container. // Default: false
|
||||||
|
* migrations_paths?: array<string, scalar|Param|null>,
|
||||||
|
* services?: array<string, scalar|Param|null>,
|
||||||
|
* factories?: array<string, scalar|Param|null>,
|
||||||
|
* storage?: array{ // Storage to use for migration status metadata.
|
||||||
|
* table_storage?: array{ // The default metadata storage, implemented as a table in the database.
|
||||||
|
* table_name?: scalar|Param|null, // Default: null
|
||||||
|
* version_column_name?: scalar|Param|null, // Default: null
|
||||||
|
* version_column_length?: scalar|Param|null, // Default: null
|
||||||
|
* executed_at_column_name?: scalar|Param|null, // Default: null
|
||||||
|
* execution_time_column_name?: scalar|Param|null, // Default: null
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* migrations?: list<scalar|Param|null>,
|
||||||
|
* connection?: scalar|Param|null, // Connection name to use for the migrations database. // Default: null
|
||||||
|
* em?: scalar|Param|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null
|
||||||
|
* all_or_nothing?: scalar|Param|null, // Run all migrations in a transaction. // Default: false
|
||||||
|
* check_database_platform?: scalar|Param|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true
|
||||||
|
* custom_template?: scalar|Param|null, // Custom template path for generated migration classes. // Default: null
|
||||||
|
* organize_migrations?: scalar|Param|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false
|
||||||
|
* enable_profiler?: bool|Param, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false
|
||||||
|
* transactional?: bool|Param, // Whether or not to wrap migrations in a single transaction. // Default: true
|
||||||
|
* }
|
||||||
|
* @psalm-type NelmioCorsConfig = array{
|
||||||
|
* defaults?: array{
|
||||||
|
* allow_credentials?: bool|Param, // Default: false
|
||||||
|
* allow_origin?: list<scalar|Param|null>,
|
||||||
|
* allow_headers?: list<scalar|Param|null>,
|
||||||
|
* allow_methods?: list<scalar|Param|null>,
|
||||||
|
* allow_private_network?: bool|Param, // Default: false
|
||||||
|
* expose_headers?: list<scalar|Param|null>,
|
||||||
|
* max_age?: scalar|Param|null, // Default: 0
|
||||||
|
* hosts?: list<scalar|Param|null>,
|
||||||
|
* origin_regex?: bool|Param, // Default: false
|
||||||
|
* forced_allow_origin_value?: scalar|Param|null, // Default: null
|
||||||
|
* skip_same_as_origin?: bool|Param, // Default: true
|
||||||
|
* },
|
||||||
|
* paths?: array<string, array{ // Default: []
|
||||||
|
* allow_credentials?: bool|Param,
|
||||||
|
* allow_origin?: list<scalar|Param|null>,
|
||||||
|
* allow_headers?: list<scalar|Param|null>,
|
||||||
|
* allow_methods?: list<scalar|Param|null>,
|
||||||
|
* allow_private_network?: bool|Param,
|
||||||
|
* expose_headers?: list<scalar|Param|null>,
|
||||||
|
* max_age?: scalar|Param|null, // Default: 0
|
||||||
|
* hosts?: list<scalar|Param|null>,
|
||||||
|
* origin_regex?: bool|Param,
|
||||||
|
* forced_allow_origin_value?: scalar|Param|null, // Default: null
|
||||||
|
* skip_same_as_origin?: bool|Param,
|
||||||
|
* }>,
|
||||||
|
* }
|
||||||
|
* @psalm-type ApiPlatformConfig = array{
|
||||||
|
* title?: scalar|Param|null, // The title of the API. // Default: ""
|
||||||
|
* description?: scalar|Param|null, // The description of the API. // Default: ""
|
||||||
|
* version?: scalar|Param|null, // The version of the API. // Default: "0.0.0"
|
||||||
|
* show_webby?: bool|Param, // If true, show Webby on the documentation page // Default: true
|
||||||
|
* use_symfony_listeners?: bool|Param, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false
|
||||||
|
* name_converter?: scalar|Param|null, // Specify a name converter to use. // Default: null
|
||||||
|
* asset_package?: scalar|Param|null, // Specify an asset package name to use. // Default: null
|
||||||
|
* path_segment_name_generator?: scalar|Param|null, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore"
|
||||||
|
* inflector?: scalar|Param|null, // Specify an inflector to use. // Default: "api_platform.metadata.inflector"
|
||||||
|
* validator?: array{
|
||||||
|
* serialize_payload_fields?: mixed, // Set to null to serialize all payload fields when a validation error is thrown, or set the fields you want to include explicitly. // Default: []
|
||||||
|
* query_parameter_validation?: bool|Param, // Deprecated: Will be removed in API Platform 5.0. // Default: true
|
||||||
|
* },
|
||||||
|
* jsonapi?: array{
|
||||||
|
* use_iri_as_id?: bool|Param, // Set to false to use entity identifiers instead of IRIs as the "id" field in JSON:API responses. // Default: true
|
||||||
|
* allow_client_generated_id?: bool|Param, // Allow client-generated IDs on JSON:API POST per https://jsonapi.org/format/#crud-creating-client-ids. Off by default to prevent id spoofing on public endpoints. // Default: false
|
||||||
|
* },
|
||||||
|
* eager_loading?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* fetch_partial?: bool|Param, // Fetch only partial data according to serialization groups. If enabled, Doctrine ORM entities will not work as expected if any of the other fields are used. // Default: false
|
||||||
|
* max_joins?: int|Param, // Max number of joined relations before EagerLoading throws a RuntimeException // Default: 30
|
||||||
|
* force_eager?: bool|Param, // Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode. // Default: true
|
||||||
|
* },
|
||||||
|
* handle_symfony_errors?: bool|Param, // Allows to handle symfony exceptions. // Default: false
|
||||||
|
* enable_swagger?: bool|Param, // Enable the Swagger documentation and export. // Default: true
|
||||||
|
* enable_json_streamer?: bool|Param, // Enable json streamer. // Default: false
|
||||||
|
* enable_swagger_ui?: bool|Param, // Enable Swagger UI // Default: true
|
||||||
|
* enable_re_doc?: bool|Param, // Enable ReDoc // Default: true
|
||||||
|
* enable_scalar?: bool|Param, // Enable Scalar API Reference // Default: true
|
||||||
|
* enable_entrypoint?: bool|Param, // Enable the entrypoint // Default: true
|
||||||
|
* enable_docs?: bool|Param, // Enable the docs // Default: true
|
||||||
|
* enable_profiler?: bool|Param, // Enable the data collector and the WebProfilerBundle integration. // Default: true
|
||||||
|
* enable_phpdoc_parser?: bool|Param, // Enable resource metadata collector using PHPStan PhpDocParser. // Default: true
|
||||||
|
* enable_link_security?: bool|Param, // Deprecated: This option is always enabled and will be removed in API Platform 5.0. // Enable security for Links (sub resources). // Default: true
|
||||||
|
* collection?: array{
|
||||||
|
* exists_parameter_name?: scalar|Param|null, // The name of the query parameter to filter on nullable field values. // Default: "exists"
|
||||||
|
* order?: scalar|Param|null, // The default order of results. // Default: "ASC"
|
||||||
|
* order_parameter_name?: scalar|Param|null, // The name of the query parameter to order results. // Default: "order"
|
||||||
|
* order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|Param|null, // The nulls comparison strategy. // Default: null
|
||||||
|
* pagination?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* page_parameter_name?: scalar|Param|null, // The default name of the parameter handling the page number. // Default: "page"
|
||||||
|
* enabled_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable pagination. // Default: "pagination"
|
||||||
|
* items_per_page_parameter_name?: scalar|Param|null, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage"
|
||||||
|
* partial_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable partial pagination. // Default: "partial"
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* mapping?: array{
|
||||||
|
* imports?: list<scalar|Param|null>,
|
||||||
|
* paths?: list<scalar|Param|null>,
|
||||||
|
* },
|
||||||
|
* resource_class_directories?: list<scalar|Param|null>,
|
||||||
|
* serializer?: array{
|
||||||
|
* hydra_prefix?: bool|Param, // Use the "hydra:" prefix. // Default: false
|
||||||
|
* },
|
||||||
|
* doctrine?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* },
|
||||||
|
* doctrine_mongodb_odm?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* },
|
||||||
|
* oauth?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* clientId?: scalar|Param|null, // The oauth client id. // Default: ""
|
||||||
|
* clientSecret?: scalar|Param|null, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: ""
|
||||||
|
* pkce?: bool|Param, // Enable the oauth PKCE. // Default: false
|
||||||
|
* type?: scalar|Param|null, // The oauth type. // Default: "oauth2"
|
||||||
|
* flow?: scalar|Param|null, // The oauth flow grant type. // Default: "application"
|
||||||
|
* tokenUrl?: scalar|Param|null, // The oauth token url. // Default: ""
|
||||||
|
* authorizationUrl?: scalar|Param|null, // The oauth authentication url. // Default: ""
|
||||||
|
* refreshUrl?: scalar|Param|null, // The oauth refresh url. // Default: ""
|
||||||
|
* scopes?: list<scalar|Param|null>,
|
||||||
|
* },
|
||||||
|
* graphql?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* default_ide?: scalar|Param|null, // Default: "graphiql"
|
||||||
|
* graphiql?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* },
|
||||||
|
* introspection?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* },
|
||||||
|
* max_query_depth?: int|Param, // Default: 20
|
||||||
|
* graphql_playground?: bool|array{ // Deprecated: The "graphql_playground" configuration is deprecated and will be ignored.
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* },
|
||||||
|
* max_query_complexity?: int|Param, // Default: 500
|
||||||
|
* nesting_separator?: scalar|Param|null, // The separator to use to filter nested fields. // Default: "_"
|
||||||
|
* collection?: array{
|
||||||
|
* pagination?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* swagger?: array{
|
||||||
|
* persist_authorization?: bool|Param, // Persist the SwaggerUI Authorization in the localStorage. // Default: false
|
||||||
|
* versions?: list<scalar|Param|null>,
|
||||||
|
* api_keys?: array<string, array{ // Default: []
|
||||||
|
* name?: scalar|Param|null, // The name of the header or query parameter containing the api key.
|
||||||
|
* type?: "query"|"header"|Param, // Whether the api key should be a query parameter or a header.
|
||||||
|
* }>,
|
||||||
|
* http_auth?: array<string, array{ // Default: []
|
||||||
|
* scheme?: scalar|Param|null, // The OpenAPI HTTP auth scheme, for example "bearer"
|
||||||
|
* bearerFormat?: scalar|Param|null, // The OpenAPI HTTP bearer format
|
||||||
|
* }>,
|
||||||
|
* swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: []
|
||||||
|
* },
|
||||||
|
* http_cache?: array{
|
||||||
|
* public?: bool|Param|null, // To make all responses public by default. // Default: null
|
||||||
|
* invalidation?: bool|array{ // Enable the tags-based cache invalidation system.
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* varnish_urls?: list<scalar|Param|null>,
|
||||||
|
* urls?: list<scalar|Param|null>,
|
||||||
|
* scoped_clients?: list<scalar|Param|null>,
|
||||||
|
* max_header_length?: int|Param, // Max header length supported by the cache server. // Default: 7500
|
||||||
|
* request_options?: mixed, // To pass options to the client charged with the request. // Default: []
|
||||||
|
* purger?: scalar|Param|null, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish"
|
||||||
|
* xkey?: array{ // Deprecated: The "xkey" configuration is deprecated, use your own purger to customize surrogate keys or the appropriate parameters.
|
||||||
|
* glue?: scalar|Param|null, // xkey glue between keys // Default: " "
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* },
|
||||||
|
* mercure?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* hub_url?: scalar|Param|null, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null
|
||||||
|
* include_type?: bool|Param, // Always include @type in updates (including delete ones). // Default: false
|
||||||
|
* },
|
||||||
|
* messenger?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* },
|
||||||
|
* elasticsearch?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* hosts?: list<scalar|Param|null>,
|
||||||
|
* ssl_ca_bundle?: scalar|Param|null, // Path to the SSL CA bundle file for Elasticsearch SSL verification. // Default: null
|
||||||
|
* ssl_verification?: bool|Param, // Enable or disable SSL verification for Elasticsearch connections. // Default: true
|
||||||
|
* client?: "elasticsearch"|"opensearch"|Param, // The search engine client to use: "elasticsearch" or "opensearch". // Default: "elasticsearch"
|
||||||
|
* },
|
||||||
|
* openapi?: array{
|
||||||
|
* contact?: array{
|
||||||
|
* name?: scalar|Param|null, // The identifying name of the contact person/organization. // Default: null
|
||||||
|
* url?: scalar|Param|null, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null
|
||||||
|
* email?: scalar|Param|null, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null
|
||||||
|
* },
|
||||||
|
* termsOfService?: scalar|Param|null, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null
|
||||||
|
* tags?: list<array{ // Default: []
|
||||||
|
* name?: scalar|Param|null,
|
||||||
|
* description?: scalar|Param|null, // Default: null
|
||||||
|
* }>,
|
||||||
|
* license?: array{
|
||||||
|
* name?: scalar|Param|null, // The license name used for the API. // Default: null
|
||||||
|
* url?: scalar|Param|null, // URL to the license used for the API. MUST be in the format of a URL. // Default: null
|
||||||
|
* identifier?: scalar|Param|null, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null
|
||||||
|
* },
|
||||||
|
* swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: []
|
||||||
|
* scalar_extra_configuration?: mixed, // To pass extra configuration to Scalar API Reference, like theme or darkMode. // Default: []
|
||||||
|
* overrideResponses?: bool|Param, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true
|
||||||
|
* error_resource_class?: scalar|Param|null, // The class used to represent errors in the OpenAPI documentation. // Default: null
|
||||||
|
* validation_error_resource_class?: scalar|Param|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null
|
||||||
|
* },
|
||||||
|
* maker?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: false
|
||||||
|
* namespace_prefix?: scalar|Param|null, // Add a prefix to all maker generated classes. e.g set it to "Api" to set the maker namespace to "App\Api\" (if the maker.root_namespace config is App). e.g. App\Api\State\MyStateProcessor // Default: ""
|
||||||
|
* },
|
||||||
|
* mcp?: bool|array{
|
||||||
|
* enabled?: bool|Param, // Default: true
|
||||||
|
* format?: scalar|Param|null, // The serialization format used for MCP tool input/output. Must be a format registered in api_platform.formats (e.g. "jsonld", "json", "jsonapi"). // Default: "jsonld"
|
||||||
|
* },
|
||||||
|
* exception_to_status?: array<string, int|Param>,
|
||||||
|
* formats?: array<string, array{ // Default: {"jsonld":{"mime_types":["application/ld+json"]}}
|
||||||
|
* mime_types?: list<scalar|Param|null>,
|
||||||
|
* }>,
|
||||||
|
* patch_formats?: array<string, array{ // Default: {"json":{"mime_types":["application/merge-patch+json"]}}
|
||||||
|
* mime_types?: list<scalar|Param|null>,
|
||||||
|
* }>,
|
||||||
|
* docs_formats?: array<string, array{ // Default: {"jsonld":{"mime_types":["application/ld+json"]},"jsonopenapi":{"mime_types":["application/vnd.openapi+json"]},"html":{"mime_types":["text/html"]},"yamlopenapi":{"mime_types":["application/vnd.openapi+yaml"]}}
|
||||||
|
* mime_types?: list<scalar|Param|null>,
|
||||||
|
* }>,
|
||||||
|
* error_formats?: array<string, array{ // Default: {"jsonld":{"mime_types":["application/ld+json"]},"jsonproblem":{"mime_types":["application/problem+json"]},"json":{"mime_types":["application/problem+json","application/json"]}}
|
||||||
|
* mime_types?: list<scalar|Param|null>,
|
||||||
|
* }>,
|
||||||
|
* jsonschema_formats?: list<scalar|Param|null>,
|
||||||
|
* defaults?: array{
|
||||||
|
* uri_template?: mixed,
|
||||||
|
* short_name?: mixed,
|
||||||
|
* description?: mixed,
|
||||||
|
* types?: mixed,
|
||||||
|
* operations?: mixed,
|
||||||
|
* formats?: mixed,
|
||||||
|
* input_formats?: mixed,
|
||||||
|
* output_formats?: mixed,
|
||||||
|
* uri_variables?: mixed,
|
||||||
|
* route_prefix?: mixed,
|
||||||
|
* defaults?: mixed,
|
||||||
|
* requirements?: mixed,
|
||||||
|
* options?: mixed,
|
||||||
|
* stateless?: mixed,
|
||||||
|
* sunset?: mixed,
|
||||||
|
* accept_patch?: mixed,
|
||||||
|
* status?: mixed,
|
||||||
|
* host?: mixed,
|
||||||
|
* schemes?: mixed,
|
||||||
|
* condition?: mixed,
|
||||||
|
* controller?: mixed,
|
||||||
|
* class?: mixed,
|
||||||
|
* url_generation_strategy?: mixed,
|
||||||
|
* deprecation_reason?: mixed,
|
||||||
|
* headers?: mixed,
|
||||||
|
* cache_headers?: mixed,
|
||||||
|
* normalization_context?: mixed,
|
||||||
|
* denormalization_context?: mixed,
|
||||||
|
* collect_denormalization_errors?: mixed,
|
||||||
|
* hydra_context?: mixed,
|
||||||
|
* openapi?: mixed,
|
||||||
|
* validation_context?: mixed,
|
||||||
|
* filters?: mixed,
|
||||||
|
* mercure?: mixed,
|
||||||
|
* messenger?: mixed,
|
||||||
|
* input?: mixed,
|
||||||
|
* output?: mixed,
|
||||||
|
* order?: mixed,
|
||||||
|
* fetch_partial?: mixed,
|
||||||
|
* force_eager?: mixed,
|
||||||
|
* pagination_client_enabled?: mixed,
|
||||||
|
* pagination_client_items_per_page?: mixed,
|
||||||
|
* pagination_client_partial?: mixed,
|
||||||
|
* pagination_via_cursor?: mixed,
|
||||||
|
* pagination_enabled?: mixed,
|
||||||
|
* pagination_fetch_join_collection?: mixed,
|
||||||
|
* pagination_use_output_walkers?: mixed,
|
||||||
|
* pagination_items_per_page?: mixed,
|
||||||
|
* pagination_maximum_items_per_page?: mixed,
|
||||||
|
* pagination_partial?: mixed,
|
||||||
|
* pagination_type?: mixed,
|
||||||
|
* security?: mixed,
|
||||||
|
* security_message?: mixed,
|
||||||
|
* security_post_denormalize?: mixed,
|
||||||
|
* security_post_denormalize_message?: mixed,
|
||||||
|
* security_post_validation?: mixed,
|
||||||
|
* security_post_validation_message?: mixed,
|
||||||
|
* composite_identifier?: mixed,
|
||||||
|
* exception_to_status?: mixed,
|
||||||
|
* query_parameter_validation_enabled?: mixed,
|
||||||
|
* links?: mixed,
|
||||||
|
* graph_ql_operations?: mixed,
|
||||||
|
* provider?: mixed,
|
||||||
|
* processor?: mixed,
|
||||||
|
* state_options?: mixed,
|
||||||
|
* rules?: mixed,
|
||||||
|
* policy?: mixed,
|
||||||
|
* middleware?: mixed,
|
||||||
|
* parameters?: array<string, array{ // Default: []
|
||||||
|
* key?: mixed,
|
||||||
|
* schema?: mixed,
|
||||||
|
* open_api?: mixed,
|
||||||
|
* provider?: mixed,
|
||||||
|
* filter?: mixed,
|
||||||
|
* property?: mixed,
|
||||||
|
* description?: mixed,
|
||||||
|
* properties?: mixed,
|
||||||
|
* required?: mixed,
|
||||||
|
* priority?: mixed,
|
||||||
|
* hydra?: mixed,
|
||||||
|
* constraints?: mixed,
|
||||||
|
* security?: mixed,
|
||||||
|
* security_message?: mixed,
|
||||||
|
* extra_properties?: mixed,
|
||||||
|
* filter_context?: mixed,
|
||||||
|
* native_type?: mixed,
|
||||||
|
* cast_to_array?: mixed,
|
||||||
|
* cast_to_native_type?: mixed,
|
||||||
|
* cast_fn?: mixed,
|
||||||
|
* default?: mixed,
|
||||||
|
* filter_class?: mixed,
|
||||||
|
* ...<string, mixed>
|
||||||
|
* }>,
|
||||||
|
* strict_query_parameter_validation?: mixed,
|
||||||
|
* hide_hydra_operation?: mixed,
|
||||||
|
* json_stream?: mixed,
|
||||||
|
* extra_properties?: mixed,
|
||||||
|
* map?: mixed,
|
||||||
|
* mcp?: mixed,
|
||||||
|
* route_name?: mixed,
|
||||||
|
* errors?: mixed,
|
||||||
|
* read?: mixed,
|
||||||
|
* deserialize?: mixed,
|
||||||
|
* validate?: mixed,
|
||||||
|
* write?: mixed,
|
||||||
|
* serialize?: mixed,
|
||||||
|
* content_negotiation?: mixed,
|
||||||
|
* priority?: mixed,
|
||||||
|
* name?: mixed,
|
||||||
|
* allow_create?: mixed,
|
||||||
|
* item_uri_template?: mixed,
|
||||||
|
* ...<string, mixed>
|
||||||
|
* },
|
||||||
|
* }
|
||||||
* @psalm-type ConfigType = array{
|
* @psalm-type ConfigType = array{
|
||||||
* imports?: ImportsConfig,
|
* imports?: ImportsConfig,
|
||||||
* parameters?: ParametersConfig,
|
* parameters?: ParametersConfig,
|
||||||
* services?: ServicesConfig,
|
* services?: ServicesConfig,
|
||||||
* framework?: FrameworkConfig,
|
* framework?: FrameworkConfig,
|
||||||
|
* twig?: TwigConfig,
|
||||||
|
* security?: SecurityConfig,
|
||||||
|
* doctrine?: DoctrineConfig,
|
||||||
|
* doctrine_migrations?: DoctrineMigrationsConfig,
|
||||||
|
* nelmio_cors?: NelmioCorsConfig,
|
||||||
|
* api_platform?: ApiPlatformConfig,
|
||||||
* "when@dev"?: array{
|
* "when@dev"?: array{
|
||||||
* imports?: ImportsConfig,
|
* imports?: ImportsConfig,
|
||||||
* parameters?: ParametersConfig,
|
* parameters?: ParametersConfig,
|
||||||
* services?: ServicesConfig,
|
* services?: ServicesConfig,
|
||||||
* framework?: FrameworkConfig,
|
* framework?: FrameworkConfig,
|
||||||
|
* twig?: TwigConfig,
|
||||||
|
* security?: SecurityConfig,
|
||||||
|
* doctrine?: DoctrineConfig,
|
||||||
|
* doctrine_migrations?: DoctrineMigrationsConfig,
|
||||||
|
* nelmio_cors?: NelmioCorsConfig,
|
||||||
|
* api_platform?: ApiPlatformConfig,
|
||||||
* },
|
* },
|
||||||
* "when@prod"?: array{
|
* "when@prod"?: array{
|
||||||
* imports?: ImportsConfig,
|
* imports?: ImportsConfig,
|
||||||
* parameters?: ParametersConfig,
|
* parameters?: ParametersConfig,
|
||||||
* services?: ServicesConfig,
|
* services?: ServicesConfig,
|
||||||
* framework?: FrameworkConfig,
|
* framework?: FrameworkConfig,
|
||||||
|
* twig?: TwigConfig,
|
||||||
|
* security?: SecurityConfig,
|
||||||
|
* doctrine?: DoctrineConfig,
|
||||||
|
* doctrine_migrations?: DoctrineMigrationsConfig,
|
||||||
|
* nelmio_cors?: NelmioCorsConfig,
|
||||||
|
* api_platform?: ApiPlatformConfig,
|
||||||
* },
|
* },
|
||||||
* "when@test"?: array{
|
* "when@test"?: array{
|
||||||
* imports?: ImportsConfig,
|
* imports?: ImportsConfig,
|
||||||
* parameters?: ParametersConfig,
|
* parameters?: ParametersConfig,
|
||||||
* services?: ServicesConfig,
|
* services?: ServicesConfig,
|
||||||
* framework?: FrameworkConfig,
|
* framework?: FrameworkConfig,
|
||||||
|
* twig?: TwigConfig,
|
||||||
|
* security?: SecurityConfig,
|
||||||
|
* doctrine?: DoctrineConfig,
|
||||||
|
* doctrine_migrations?: DoctrineMigrationsConfig,
|
||||||
|
* nelmio_cors?: NelmioCorsConfig,
|
||||||
|
* api_platform?: ApiPlatformConfig,
|
||||||
* },
|
* },
|
||||||
* ...<string, ExtensionType|array{ // extra keys must follow the when@%env% pattern or match an extension alias
|
* ...<string, ExtensionType|array{ // extra keys must follow the when@%env% pattern or match an extension alias
|
||||||
* imports?: ImportsConfig,
|
* imports?: ImportsConfig,
|
||||||
|
|
|
||||||
4
config/routes/api_platform.yaml
Normal file
4
config/routes/api_platform.yaml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
api_platform:
|
||||||
|
resource: .
|
||||||
|
type: api_platform
|
||||||
|
prefix: /api
|
||||||
3
config/routes/security.yaml
Normal file
3
config/routes/security.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
_security_logout:
|
||||||
|
resource: security.route_loader.logout
|
||||||
|
type: service
|
||||||
0
migrations/.gitignore
vendored
Normal file
0
migrations/.gitignore
vendored
Normal file
0
src/ApiResource/.gitignore
vendored
Normal file
0
src/ApiResource/.gitignore
vendored
Normal file
0
src/Entity/.gitignore
vendored
Normal file
0
src/Entity/.gitignore
vendored
Normal file
0
src/Repository/.gitignore
vendored
Normal file
0
src/Repository/.gitignore
vendored
Normal file
121
symfony.lock
121
symfony.lock
|
|
@ -1,4 +1,66 @@
|
||||||
{
|
{
|
||||||
|
"api-platform/symfony": {
|
||||||
|
"version": "4.3",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "4.0",
|
||||||
|
"ref": "e9952e9f393c2d048f10a78f272cd35e807d972b"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/api_platform.yaml",
|
||||||
|
"config/routes/api_platform.yaml",
|
||||||
|
"src/ApiResource/.gitignore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"doctrine/deprecations": {
|
||||||
|
"version": "1.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "1.0",
|
||||||
|
"ref": "fdd756167454623e21f1d769c5b814b243782a67"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"doctrine/doctrine-bundle": {
|
||||||
|
"version": "3.2",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "3.0",
|
||||||
|
"ref": "d39a3bd844edfe90c20ae520b804a3bf4f82b4ad"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/doctrine.yaml",
|
||||||
|
"src/Entity/.gitignore",
|
||||||
|
"src/Repository/.gitignore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"doctrine/doctrine-migrations-bundle": {
|
||||||
|
"version": "4.0",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "3.1",
|
||||||
|
"ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/doctrine_migrations.yaml",
|
||||||
|
"migrations/.gitignore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"nelmio/cors-bundle": {
|
||||||
|
"version": "2.6",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "1.5",
|
||||||
|
"ref": "6bea22e6c564fba3a1391615cada1437d0bde39c"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/nelmio_cors.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
"symfony/console": {
|
"symfony/console": {
|
||||||
"version": "8.1",
|
"version": "8.1",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
|
|
@ -44,6 +106,18 @@
|
||||||
".editorconfig"
|
".editorconfig"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"symfony/property-info": {
|
||||||
|
"version": "8.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "7.3",
|
||||||
|
"ref": "dae70df71978ae9226ae915ffd5fad817f5ca1f7"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/property_info.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
"symfony/routing": {
|
"symfony/routing": {
|
||||||
"version": "8.1",
|
"version": "8.1",
|
||||||
"recipe": {
|
"recipe": {
|
||||||
|
|
@ -56,5 +130,52 @@
|
||||||
"config/packages/routing.yaml",
|
"config/packages/routing.yaml",
|
||||||
"config/routes.yaml"
|
"config/routes.yaml"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"symfony/security-bundle": {
|
||||||
|
"version": "8.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "7.4",
|
||||||
|
"ref": "c42fee7802181cdd50f61b8622715829f5d2335c"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/security.yaml",
|
||||||
|
"config/routes/security.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/twig-bundle": {
|
||||||
|
"version": "8.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.4",
|
||||||
|
"ref": "f250159ebe99153d0c640a3e7742876fc7453f2c"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/twig.yaml",
|
||||||
|
"templates/base.html.twig"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/uid": {
|
||||||
|
"version": "8.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "7.0",
|
||||||
|
"ref": "0df5844274d871b37fc3816c57a768ffc60a43a5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/validator": {
|
||||||
|
"version": "8.1",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "7.0",
|
||||||
|
"ref": "8c1c4e28d26a124b0bb273f537ca8ce443472bfd"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/validator.yaml"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
23
templates/base.html.twig
Normal file
23
templates/base.html.twig
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>{% block title %}Welcome!{% endblock %}</title>
|
||||||
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
|
||||||
|
{% block stylesheets %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block javascripts %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% set frankenphpHotReload = app.request.server.get('FRANKENPHP_HOT_RELOAD') %}
|
||||||
|
{% if frankenphpHotReload %}
|
||||||
|
<meta name="frankenphp-hot-reload:url" content="{{ frankenphpHotReload }}">
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/idiomorph"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/frankenphp-hot-reload/+esm" type="module"></script>
|
||||||
|
{% endif %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% block body %}{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in a new issue