diff --git a/CHANGELOG.md b/CHANGELOG.md index 8617f675..56d26cd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,59 @@ All notable changes to LaraFly are documented here. This project uses CalVer (`Y ## [Unreleased] +## [26.09.8] - 2026-09-25 + +### Fixed + +- **`RdKafkaConsumerClient::close()` stranded its librdkafka client, and the release before this one + shipped a version number that disagreed with itself in three places.** Two unrelated repairs in one + release, because the second was found while verifying the first. + + `close()` called `KafkaConsumer::close()` and then released the property. Releasing the property is + exactly right and was always there; it did nothing, because by the time it ran the handle was + already gone. ext-rdkafka 6.0.5, `kafka_consumer.c:531-542`, is the whole of that method: + + ``` + rd_kafka_consumer_close(intern->rk); + intern->rk = NULL; + ``` + + There is no `rd_kafka_destroy()`, and the free handler at `kafka_consumer.c:53-64` destroys the + handle only `if (intern->rk)` — which `close()` has just nulled. So the PHP object is freed and the + `rd_kafka_t` is not. Measured on PHP 8.5.8 / ext-rdkafka 6.0.5 / librdkafka 2.15.1, no broker: + **four OS threads stranded per closed consumer**, still there after five seconds of polling; zero + when the reference is simply dropped. Unconditional, not a race. + + It now calls `unsubscribe()` — which is what leaves the consumer group, is safe on a consumer that + never subscribed, and lets the drop destroy the client (librdkafka logs `Destroying cgrp`). Pinned + by `RdKafkaConsumerClientLeavesNoThreadsTest`, which counts `rd_kafka_thread_cnt()` rather than + asserting a `WeakReference` goes null: **the natural test is green on this bug**, because the PHP + object really is freed and the leak is underneath it, in C. + + A consumer of this framework found it the hard way. In dworkers the same call had been added + deliberately — to three integration tests and a long-running console command — to stop a segfault + at PHP shutdown after a green suite, under a comment explaining why it was necessary. It was the + cause. Anything that closes a consumer per restart accumulates dead clients and their threads for + as long as the process lives, which matters most where this class is used: a daemon. + +### Fixed — the release process itself + +- **The version was carried in four places and 26.09.6 moved one of them.** `Version::VERSION` said + `26.09.6`, the CHANGELOG's latest heading said `26.09.7`, the README badge said `26.09.5` and the + verbatim listing in `docs/versioning.md` said `26.09.5` — so the code inside the tag `v26.09.7` + reported itself as `26.09.6`. `VersionConsistencyTest` and `DocsCodeIsRealTest` had been red on + `main` since `26.09.6`, which is why CI was failing on all three PHP versions. All four now carry + `26.09.8`. + +- **`pint --test` was red on `main`** in three files, from the `26.09.7` commit: an import added out + of alphabetical order in `SecurityAutoConfiguration`, and the two security cache manifests + recompiled beside it. + +- **`phpstan` had three errors** in `InMemoryJwksProviderTest`, all from one missing + `@return array` on its fixture helper. + + Together these are why `composer check` could not pass on `main`. It passes now. + ## [26.09.7] - 2026-09-25 ### Fixed diff --git a/README.md b/README.md index 61698a8f..ffbab61c 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ PHP 8.3+ Laravel 13 License: Apache 2.0 - Version: 26.09.5 + Version: 26.09.5 PHPStan: max Code Style: Pint

diff --git a/docs/versioning.md b/docs/versioning.md index 81b70eaf..5957c4ca 100644 --- a/docs/versioning.md +++ b/docs/versioning.md @@ -21,7 +21,7 @@ The single place the current version *is* asserted in code is: ```php final class Version { - public const string VERSION = '26.09.5'; + public const string VERSION = '26.09.8'; } ``` diff --git a/packages/eda-kafka/src/RdKafkaConsumerClient.php b/packages/eda-kafka/src/RdKafkaConsumerClient.php index 51c292ac..8c2199d8 100644 --- a/packages/eda-kafka/src/RdKafkaConsumerClient.php +++ b/packages/eda-kafka/src/RdKafkaConsumerClient.php @@ -184,9 +184,39 @@ public static function dltHeaders(ReceivedEnvelope $received, string $reason): a return $headers; } + /** + * Let the consumer go — and do NOT call `KafkaConsumer::close()` to do it. + * + * ext-rdkafka 6.0.5, kafka_consumer.c:531-542, is the whole body of that method: + * + * rd_kafka_consumer_close(intern->rk); + * intern->rk = NULL; + * + * There is no `rd_kafka_destroy()`. The free handler at kafka_consumer.c:53-64 destroys the + * handle only `if (intern->rk)` — which `close()` has just nulled — so `close()` hands the + * `rd_kafka_t` to nobody. The PHP object is then freed and the client outlives it, with its + * threads, until the process exits. Measured on PHP 8.5.8 / ext-rdkafka 6.0.5 / librdkafka + * 2.15.1: four OS threads stranded per closed consumer, still there after five seconds of + * polling; zero when the reference is simply dropped. It is unconditional, not a race. + * + * THAT IS WHY THE NULLING BELOW WAS NOT ENOUGH. Releasing the property is exactly right and was + * always here — but by the time it ran, `close()` had already detached the handle, so freeing + * the object freed nothing. The two lines looked like a careful teardown and were a leak. + * + * `unsubscribe()` is what leaves the consumer group, and it is safe on a consumer that never + * subscribed (verified: no throw). librdkafka logs "Destroying cgrp" when the reference is + * dropped afterwards, so group membership is still surrendered — nothing the old shape + * achieved is lost. + * + * A CONSUMER OF THIS FRAMEWORK FOUND IT THE HARD WAY. In dworkers the same call had been added + * to three integration tests and a long-running console command, deliberately, to stop a + * segfault at PHP shutdown after a green suite — and it was the cause of it. Anything that + * closes a consumer per restart accumulates dead clients and their threads for as long as the + * process lives, which matters most in exactly the place this class is used: a daemon. + */ public function close(): void { - $this->consumer?->close(); + $this->consumer?->unsubscribe(); $this->consumer = null; } diff --git a/packages/eda-kafka/tests/RdKafkaConsumerClientLeavesNoThreadsTest.php b/packages/eda-kafka/tests/RdKafkaConsumerClientLeavesNoThreadsTest.php new file mode 100644 index 00000000..792a7bff --- /dev/null +++ b/packages/eda-kafka/tests/RdKafkaConsumerClientLeavesNoThreadsTest.php @@ -0,0 +1,65 @@ +rk); + * intern->rk = NULL; + * + * No `rd_kafka_destroy()`, and the free handler at kafka_consumer.c:53-64 destroys the handle only + * `if (intern->rk)`. So after `close()` the PHP object is freed and the `rd_kafka_t` is not: it and + * its four OS threads live until the process exits. In a daemon — which is what this client is for — + * that accumulates for as long as the process runs. + * + * NO BROKER IS NEEDED and none is contacted. `new KafkaConsumer($conf)` starts librdkafka's threads + * and resolves the bootstrap address lazily, so an unroutable port costs nothing and keeps this test + * out of the docker-gated integration suite where KafkaRoundTripTest lives. + * + * `rd_kafka_thread_cnt()` IS THE INSTRUMENT, and the choice matters. A WeakReference assertion — the + * natural way to test that an object was released — is GREEN on this bug, because the PHP object + * really is freed; the leak is underneath it, in C. Only a process-global count of live handles can + * see it. + */ +it('destroys the librdkafka client when the consumer is closed, leaving no threads behind', function () { + $antes = rd_kafka_thread_cnt(); + + for ($i = 0; $i < 3; $i++) { + $client = new RdKafkaConsumerClient( + new KafkaConsumerFactory('127.0.0.1:59999', 'firefly-leak-probe-'.bin2hex(random_bytes(4))), + new KafkaProducerFactory('127.0.0.1:59999'), + new JsonSerializer, + ); + + $client->subscribe(['firefly-leak-probe-topic']); + $client->close(); + + unset($client); + } + + // Half a second in case any part of the teardown were asynchronous. It is not — the count comes + // back at once — but a test that fails on a scheduler hiccup is worse than a slightly slow one. + usleep(500_000); + + expect(rd_kafka_thread_cnt())->toBe( + $antes, + 'the client was closed and its librdkafka handle outlived it. The usual cause is a ' + .'`KafkaConsumer::close()` call: ext-rdkafka nulls the handle without destroying it, so ' + .'closing strands the client and its threads. Call unsubscribe() and release the reference.', + ); +})->skip( + // Eagerly, at collection time, exactly as KafkaRoundTripTest gates itself: on a machine without + // the extension there is no handle to leak and nothing to count. No broker is required, so + // unlike that suite this one does NOT ask for FIREFLY_KAFKA_BROKERS. + ! extension_loaded('rdkafka') || ! function_exists('rd_kafka_thread_cnt'), + 'ext-rdkafka is what leaks; without it there is nothing to count.', +); diff --git a/packages/kernel/src/Version.php b/packages/kernel/src/Version.php index 50a7638f..749dc8c1 100644 --- a/packages/kernel/src/Version.php +++ b/packages/kernel/src/Version.php @@ -15,5 +15,5 @@ */ final class Version { - public const string VERSION = '26.09.6'; + public const string VERSION = '26.09.8'; } diff --git a/packages/security/cache/firefly-security-components.php b/packages/security/cache/firefly-security-components.php index 93ed9bdd..9a007376 100644 --- a/packages/security/cache/firefly-security-components.php +++ b/packages/security/cache/firefly-security-components.php @@ -4,765 +4,651 @@ // Generated by firefly/container. Do not edit. -return array ( - 0 => - array ( - 'class' => 'Firefly\\Security\\Access\\Method\\MethodSecurityAdviceSource', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Data\\Proxy\\AdviceSource', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 1 => - array ( - 'class' => 'Firefly\\Security\\Actuator\\SecurityActuatorAutoConfiguration', - 'stereotype' => 'configuration', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 400, - 'qualifier' => NULL, - 'interfaces' => - array ( - ), - 'beans' => - array ( - 0 => - array ( - 'method' => 'healthDetailsAuthorizer', - 'returns' => 'Firefly\\Actuator\\Health\\HealthDetailsAuthorizer', - 'name' => NULL, +return [ + 0 => [ + 'class' => 'Firefly\\Security\\Access\\Method\\MethodSecurityAdviceSource', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, 'order' => 0, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Data\\Proxy\\AdviceSource', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - 1 => 'Firefly\\Security\\Access\\RoleHierarchy', - 2 => 'Psr\\Log\\LoggerInterface', - ), - ), - ), - 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 2 => - array ( - 'class' => 'Firefly\\Security\\OAuth2\\OAuth2ResourceServerFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -85, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\OAuth2\\JwksProvider', - 1 => 'Firefly\\Config\\Config', - ), - ), - 3 => - array ( - 'class' => 'Firefly\\Security\\OpenApi\\MethodSecurityRequirementContributor', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\OpenApi\\Security\\SecurityRequirementContributor', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Access\\Method\\SecurityMethodManifest', - 1 => 'Firefly\\Config\\Config', - ), - ), - 4 => - array ( - 'class' => 'Firefly\\Security\\SecurityAutoConfiguration', - 'stereotype' => 'configuration', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 500, - 'qualifier' => NULL, - 'interfaces' => - array ( - ), - 'beans' => - array ( - 0 => - array ( - 'method' => 'passwordEncoder', - 'returns' => 'Firefly\\Security\\Password\\PasswordEncoder', - 'name' => NULL, + 'dependencies' => [ + ], + ], + 1 => [ + 'class' => 'Firefly\\Security\\Actuator\\SecurityActuatorAutoConfiguration', + 'stereotype' => 'configuration', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 1 => - array ( - 'method' => 'userDetailsService', - 'returns' => 'Firefly\\Security\\User\\UserDetailsService', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 2 => - array ( - 'method' => 'roleHierarchy', - 'returns' => 'Firefly\\Security\\Access\\RoleHierarchy', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 3 => - array ( - 'method' => 'permissionEvaluator', - 'returns' => 'Firefly\\Security\\Access\\PermissionEvaluator', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 4 => - array ( - 'method' => 'securityExpressionEvaluator', - 'returns' => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, + 'order' => 400, + 'qualifier' => null, + 'interfaces' => [ + ], + 'beans' => [ + 0 => [ + 'method' => 'healthDetailsAuthorizer', + 'returns' => 'Firefly\\Actuator\\Health\\HealthDetailsAuthorizer', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + 1 => 'Firefly\\Security\\Access\\RoleHierarchy', + 2 => 'Psr\\Log\\LoggerInterface', + ], + ], + ], 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 5 => - array ( - 'method' => 'authenticationManager', - 'returns' => 'Firefly\\Security\\Authentication\\AuthenticationManager', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => true, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\User\\UserDetailsService', - 1 => 'Firefly\\Security\\Password\\PasswordEncoder', - ), - ), - 6 => - array ( - 'method' => 'authorizationChecker', - 'returns' => 'Firefly\\Security\\Access\\AuthorizationChecker', - 'name' => NULL, + 'dependencies' => [ + ], + ], + 2 => [ + 'class' => 'Firefly\\Security\\OAuth2\\OAuth2ResourceServerFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -85, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', - 1 => 'Firefly\\Security\\Access\\RoleHierarchy', - 2 => 'Firefly\\Security\\Access\\PermissionEvaluator', - ), - ), - 7 => - array ( - 'method' => 'methodSecurityEvaluator', - 'returns' => 'Firefly\\Security\\Access\\Method\\MethodSecurityEvaluator', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\OAuth2\\JwksProvider', + 1 => 'Firefly\\Config\\Config', + ], + ], + 3 => [ + 'class' => 'Firefly\\Security\\OpenApi\\MethodSecurityRequirementContributor', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, 'order' => 0, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\OpenApi\\Security\\SecurityRequirementContributor', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', - 1 => 'Firefly\\Security\\Access\\RoleHierarchy', - 2 => 'Firefly\\Security\\Access\\PermissionEvaluator', - 3 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - 4 => 'Psr\\Log\\LoggerInterface', - ), - ), - 8 => - array ( - 'method' => 'methodSecurityInterceptor', - 'returns' => 'Firefly\\Security\\Access\\Method\\MethodSecurityInterceptor', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Access\\Method\\SecurityMethodManifest', + 1 => 'Firefly\\Config\\Config', + ], + ], + 4 => [ + 'class' => 'Firefly\\Security\\SecurityAutoConfiguration', + 'stereotype' => 'configuration', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => 500, + 'qualifier' => null, + 'interfaces' => [ + ], + 'beans' => [ + 0 => [ + 'method' => 'passwordEncoder', + 'returns' => 'Firefly\\Security\\Password\\PasswordEncoder', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + ], + ], + 1 => [ + 'method' => 'userDetailsService', + 'returns' => 'Firefly\\Security\\User\\UserDetailsService', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 2 => [ + 'method' => 'roleHierarchy', + 'returns' => 'Firefly\\Security\\Access\\RoleHierarchy', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 3 => [ + 'method' => 'permissionEvaluator', + 'returns' => 'Firefly\\Security\\Access\\PermissionEvaluator', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + ], + ], + 4 => [ + 'method' => 'securityExpressionEvaluator', + 'returns' => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + ], + ], + 5 => [ + 'method' => 'authenticationManager', + 'returns' => 'Firefly\\Security\\Authentication\\AuthenticationManager', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => true, + 'dependencies' => [ + 0 => 'Firefly\\Security\\User\\UserDetailsService', + 1 => 'Firefly\\Security\\Password\\PasswordEncoder', + ], + ], + 6 => [ + 'method' => 'authorizationChecker', + 'returns' => 'Firefly\\Security\\Access\\AuthorizationChecker', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', + 1 => 'Firefly\\Security\\Access\\RoleHierarchy', + 2 => 'Firefly\\Security\\Access\\PermissionEvaluator', + ], + ], + 7 => [ + 'method' => 'methodSecurityEvaluator', + 'returns' => 'Firefly\\Security\\Access\\Method\\MethodSecurityEvaluator', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', + 1 => 'Firefly\\Security\\Access\\RoleHierarchy', + 2 => 'Firefly\\Security\\Access\\PermissionEvaluator', + 3 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + 4 => 'Psr\\Log\\LoggerInterface', + ], + ], + 8 => [ + 'method' => 'methodSecurityInterceptor', + 'returns' => 'Firefly\\Security\\Access\\Method\\MethodSecurityInterceptor', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Access\\Method\\MethodSecurityEvaluator', + 1 => 'Firefly\\Config\\Config', + ], + ], + 9 => [ + 'method' => 'methodSecurityMessageEnforcer', + 'returns' => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Cqrs\\Handler\\HandlerManifest', + 1 => 'Firefly\\Security\\Access\\Method\\SecurityMethodManifest', + 2 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', + 3 => 'Firefly\\Security\\Access\\RoleHierarchy', + 4 => 'Firefly\\Security\\Access\\PermissionEvaluator', + 5 => 'Firefly\\Config\\Config', + 6 => 'Psr\\Log\\LoggerInterface', + 7 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + ], + ], + 10 => [ + 'method' => 'commandAuthorizer', + 'returns' => 'Firefly\\Cqrs\\Security\\CommandAuthorizer', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', + ], + ], + 11 => [ + 'method' => 'queryAuthorizer', + 'returns' => 'Firefly\\Cqrs\\Security\\QueryAuthorizer', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', + ], + ], + 12 => [ + 'method' => 'auditorAware', + 'returns' => 'Firefly\\Data\\Repository\\Auditing\\AuditorAware', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + ], + ], + 13 => [ + 'method' => 'authenticationEventPublisher', + 'returns' => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Context\\Event\\ApplicationEventPublisher', + ], + ], + 14 => [ + 'method' => 'sessionSecuritySettings', + 'returns' => 'Firefly\\Security\\Session\\SessionSecuritySettings', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 15 => [ + 'method' => 'securityContextRepository', + 'returns' => 'Firefly\\Security\\Session\\SecurityContextRepository', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + ], + ], + 16 => [ + 'method' => 'formLoginSettings', + 'returns' => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 17 => [ + 'method' => 'httpBasicSettings', + 'returns' => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 18 => [ + 'method' => 'logoutSettings', + 'returns' => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 19 => [ + 'method' => 'rememberMeSettings', + 'returns' => 'Firefly\\Security\\Web\\Settings\\RememberMeSettings', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 20 => [ + 'method' => 'rememberMeServices', + 'returns' => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\RememberMeSettings', + 1 => 'Firefly\\Security\\User\\UserDetailsService', + 2 => 'Psr\\Log\\LoggerInterface', + ], + ], + 21 => [ + 'method' => 'authenticationEntryPoint', + 'returns' => 'Firefly\\Security\\Web\\EntryPoint\\AuthenticationEntryPoint', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + 1 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', + 2 => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', + 3 => 'Firefly\\Web\\Error\\ErrorPageRenderer', + 4 => 'Firefly\\Web\\Exception\\ProblemDetailsRenderer', + ], + ], + 22 => [ + 'method' => 'sessionCsrf', + 'returns' => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Illuminate\\Container\\Container', + ], + ], + 23 => [ + 'method' => 'jwtService', + 'returns' => 'Firefly\\Security\\Jwt\\JwtService', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 24 => [ + 'method' => 'httpSecurity', + 'returns' => 'Firefly\\Security\\Access\\HttpSecurity', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], + 25 => [ + 'method' => 'jwksProvider', + 'returns' => 'Firefly\\Security\\OAuth2\\JwksProvider', + 'name' => null, + 'scope' => 'Singleton', + 'primary' => false, + 'order' => 0, + 'lazy' => false, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + 1 => 'Illuminate\\Container\\Container', + ], + ], + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Access\\Method\\MethodSecurityEvaluator', - 1 => 'Firefly\\Config\\Config', - ), - ), - 9 => - array ( - 'method' => 'methodSecurityMessageEnforcer', - 'returns' => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', - 'name' => NULL, + 'dependencies' => [ + ], + ], + 5 => [ + 'class' => 'Firefly\\Security\\Session\\SecurityContextPersistenceFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -94, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Cqrs\\Handler\\HandlerManifest', - 1 => 'Firefly\\Security\\Access\\Method\\SecurityMethodManifest', - 2 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', - 3 => 'Firefly\\Security\\Access\\RoleHierarchy', - 4 => 'Firefly\\Security\\Access\\PermissionEvaluator', - 5 => 'Firefly\\Config\\Config', - 6 => 'Psr\\Log\\LoggerInterface', - 7 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - ), - ), - 10 => - array ( - 'method' => 'commandAuthorizer', - 'returns' => 'Firefly\\Cqrs\\Security\\CommandAuthorizer', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Session\\SecurityContextRepository', + 1 => 'Firefly\\Security\\Session\\SessionSecuritySettings', + 2 => 'Firefly\\Config\\Config', + ], + ], + 6 => [ + 'class' => 'Firefly\\Security\\Web\\Basic\\HttpBasicFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -91, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', - ), - ), - 11 => - array ( - 'method' => 'queryAuthorizer', - 'returns' => 'Firefly\\Cqrs\\Security\\QueryAuthorizer', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', + 1 => 'Firefly\\Security\\Authentication\\AuthenticationManager', + 2 => 'Firefly\\Security\\Web\\EntryPoint\\BasicAuthenticationEntryPoint', + 3 => 'Firefly\\Security\\Session\\SecurityContextRepository', + 4 => 'Firefly\\Security\\Session\\SessionSecuritySettings', + 5 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + 6 => 'Firefly\\Config\\Config', + ], + ], + 7 => [ + 'class' => 'Firefly\\Security\\Web\\CsrfFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -80, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', - ), - ), - 12 => - array ( - 'method' => 'auditorAware', - 'returns' => 'Firefly\\Data\\Repository\\Auditing\\AuditorAware', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + 1 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', + ], + ], + 8 => [ + 'class' => 'Firefly\\Security\\Web\\HttpSecurityFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -70, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 13 => - array ( - 'method' => 'authenticationEventPublisher', - 'returns' => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Access\\HttpSecurity', + 1 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', + 2 => 'Firefly\\Security\\Access\\RoleHierarchy', + 3 => 'Firefly\\Security\\Access\\PermissionEvaluator', + 4 => 'Firefly\\Config\\Config', + 5 => 'Firefly\\Security\\Web\\EntryPoint\\AuthenticationEntryPoint', + 6 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', + 7 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + ], + ], + 9 => [ + 'class' => 'Firefly\\Security\\Web\\JwtAuthenticationFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -90, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Context\\Event\\ApplicationEventPublisher', - ), - ), - 14 => - array ( - 'method' => 'sessionSecuritySettings', - 'returns' => 'Firefly\\Security\\Session\\SessionSecuritySettings', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Jwt\\JwtService', + 1 => 'Firefly\\Config\\Config', + ], + ], + 10 => [ + 'class' => 'Firefly\\Security\\Web\\Login\\FormLoginFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -92, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 15 => - array ( - 'method' => 'securityContextRepository', - 'returns' => 'Firefly\\Security\\Session\\SecurityContextRepository', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', + 1 => 'Firefly\\Security\\Session\\SessionSecuritySettings', + 2 => 'Firefly\\Security\\Authentication\\AuthenticationManager', + 3 => 'Firefly\\Security\\Session\\SecurityContextRepository', + 4 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + 5 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', + 6 => 'Illuminate\\Container\\Container', + 7 => 'Firefly\\Config\\Config', + 8 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', + ], + ], + 11 => [ + 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -93, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 16 => - array ( - 'method' => 'formLoginSettings', - 'returns' => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', + 1 => 'Firefly\\Security\\Web\\Logout\\LogoutHandler', + 2 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', + 3 => 'Illuminate\\Container\\Container', + 4 => 'Firefly\\Config\\Config', + 5 => 'Firefly\\Security\\Web\\Logout\\LogoutSuccessHandler', + ], + ], + 12 => [ + 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutHandler', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, 'order' => 0, + 'qualifier' => null, + 'interfaces' => [ + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 17 => - array ( - 'method' => 'httpBasicSettings', - 'returns' => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', + 1 => 'Firefly\\Security\\Session\\SecurityContextRepository', + 2 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + 3 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', + ], + ], + 13 => [ + 'class' => 'Firefly\\Security\\Web\\RememberMe\\RememberMeAuthenticationFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, + 'order' => -83, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 18 => - array ( - 'method' => 'logoutSettings', - 'returns' => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', - 'name' => NULL, + 'dependencies' => [ + 0 => 'Firefly\\Security\\Session\\SecurityContextRepository', + 1 => 'Firefly\\Security\\Session\\SessionSecuritySettings', + 2 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + 3 => 'Firefly\\Config\\Config', + 4 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', + ], + ], + 14 => [ + 'class' => 'Firefly\\Security\\Web\\SecurityHeadersFilter', + 'stereotype' => 'component', + 'name' => null, 'scope' => 'Singleton', 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 19 => - array ( - 'method' => 'rememberMeSettings', - 'returns' => 'Firefly\\Security\\Web\\Settings\\RememberMeSettings', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 20 => - array ( - 'method' => 'rememberMeServices', - 'returns' => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\RememberMeSettings', - 1 => 'Firefly\\Security\\User\\UserDetailsService', - 2 => 'Psr\\Log\\LoggerInterface', - ), - ), - 21 => - array ( - 'method' => 'authenticationEntryPoint', - 'returns' => 'Firefly\\Security\\Web\\EntryPoint\\AuthenticationEntryPoint', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - 1 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', - 2 => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', - 3 => 'Firefly\\Web\\Error\\ErrorPageRenderer', - 4 => 'Firefly\\Web\\Exception\\ProblemDetailsRenderer', - ), - ), - 22 => - array ( - 'method' => 'sessionCsrf', - 'returns' => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Illuminate\\Container\\Container', - ), - ), - 23 => - array ( - 'method' => 'jwtService', - 'returns' => 'Firefly\\Security\\Jwt\\JwtService', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 24 => - array ( - 'method' => 'httpSecurity', - 'returns' => 'Firefly\\Security\\Access\\HttpSecurity', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), - 25 => - array ( - 'method' => 'jwksProvider', - 'returns' => 'Firefly\\Security\\OAuth2\\JwksProvider', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, + 'order' => -95, + 'qualifier' => null, + 'interfaces' => [ + 0 => 'Firefly\\Web\\Filter\\WebFilter', + ], + 'beans' => [ + ], 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - 1 => 'Illuminate\\Container\\Container', - ), - ), - ), - 'lazy' => false, - 'dependencies' => - array ( - ), - ), - 5 => - array ( - 'class' => 'Firefly\\Security\\Session\\SecurityContextPersistenceFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -94, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Session\\SecurityContextRepository', - 1 => 'Firefly\\Security\\Session\\SessionSecuritySettings', - 2 => 'Firefly\\Config\\Config', - ), - ), - 6 => - array ( - 'class' => 'Firefly\\Security\\Web\\Basic\\HttpBasicFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -91, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', - 1 => 'Firefly\\Security\\Authentication\\AuthenticationManager', - 2 => 'Firefly\\Security\\Web\\EntryPoint\\BasicAuthenticationEntryPoint', - 3 => 'Firefly\\Security\\Session\\SecurityContextRepository', - 4 => 'Firefly\\Security\\Session\\SessionSecuritySettings', - 5 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - 6 => 'Firefly\\Config\\Config', - ), - ), - 7 => - array ( - 'class' => 'Firefly\\Security\\Web\\CsrfFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -80, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - 1 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', - ), - ), - 8 => - array ( - 'class' => 'Firefly\\Security\\Web\\HttpSecurityFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -70, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Access\\HttpSecurity', - 1 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', - 2 => 'Firefly\\Security\\Access\\RoleHierarchy', - 3 => 'Firefly\\Security\\Access\\PermissionEvaluator', - 4 => 'Firefly\\Config\\Config', - 5 => 'Firefly\\Security\\Web\\EntryPoint\\AuthenticationEntryPoint', - 6 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', - 7 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - ), - ), - 9 => - array ( - 'class' => 'Firefly\\Security\\Web\\JwtAuthenticationFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -90, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Jwt\\JwtService', - 1 => 'Firefly\\Config\\Config', - ), - ), - 10 => - array ( - 'class' => 'Firefly\\Security\\Web\\Login\\FormLoginFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -92, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', - 1 => 'Firefly\\Security\\Session\\SessionSecuritySettings', - 2 => 'Firefly\\Security\\Authentication\\AuthenticationManager', - 3 => 'Firefly\\Security\\Session\\SecurityContextRepository', - 4 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - 5 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', - 6 => 'Illuminate\\Container\\Container', - 7 => 'Firefly\\Config\\Config', - 8 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', - ), - ), - 11 => - array ( - 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -93, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', - 1 => 'Firefly\\Security\\Web\\Logout\\LogoutHandler', - 2 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', - 3 => 'Illuminate\\Container\\Container', - 4 => 'Firefly\\Config\\Config', - 5 => 'Firefly\\Security\\Web\\Logout\\LogoutSuccessHandler', - ), - ), - 12 => - array ( - 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutHandler', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => 0, - 'qualifier' => NULL, - 'interfaces' => - array ( - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', - 1 => 'Firefly\\Security\\Session\\SecurityContextRepository', - 2 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - 3 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', - ), - ), - 13 => - array ( - 'class' => 'Firefly\\Security\\Web\\RememberMe\\RememberMeAuthenticationFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -83, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Security\\Session\\SecurityContextRepository', - 1 => 'Firefly\\Security\\Session\\SessionSecuritySettings', - 2 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - 3 => 'Firefly\\Config\\Config', - 4 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', - ), - ), - 14 => - array ( - 'class' => 'Firefly\\Security\\Web\\SecurityHeadersFilter', - 'stereotype' => 'component', - 'name' => NULL, - 'scope' => 'Singleton', - 'primary' => false, - 'order' => -95, - 'qualifier' => NULL, - 'interfaces' => - array ( - 0 => 'Firefly\\Web\\Filter\\WebFilter', - ), - 'beans' => - array ( - ), - 'lazy' => false, - 'dependencies' => - array ( - 0 => 'Firefly\\Config\\Config', - ), - ), -); + 'dependencies' => [ + 0 => 'Firefly\\Config\\Config', + ], + ], +]; diff --git a/packages/security/cache/firefly-security-context.php b/packages/security/cache/firefly-security-context.php index 12550d58..14ea7ede 100644 --- a/packages/security/cache/firefly-security-context.php +++ b/packages/security/cache/firefly-security-context.php @@ -4,1132 +4,848 @@ // Generated by firefly/context. Do not edit. -return array ( - 0 => - array ( - 'class' => 'Firefly\\Security\\Actuator\\SecurityActuatorAutoConfiguration', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnClass', - 'args' => - array ( - 0 => 'Firefly\\Actuator\\Health\\HealthDetailsAuthorizer', - ), - ), - ), - 'beanConditions' => - array ( - 0 => - array ( - 'method' => 'healthDetailsAuthorizer', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Actuator\\Health\\HealthDetailsAuthorizer', - ), - ), - ), - ), - ), - ), - 1 => - array ( - 'class' => 'Firefly\\Security\\OAuth2\\OAuth2ResourceServerFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.oauth2.resource_server.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 2 => - array ( - 'class' => 'Firefly\\Security\\OpenApi\\MethodSecurityRequirementContributor', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnClass', - 'args' => - array ( - 0 => 'Firefly\\OpenApi\\Security\\SecurityRequirementContributor', - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 3 => - array ( - 'class' => 'Firefly\\Security\\SecurityAutoConfiguration', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - ), - 'beanConditions' => - array ( - 0 => - array ( - 'method' => 'passwordEncoder', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Password\\PasswordEncoder', - ), - ), - ), - ), - 1 => - array ( - 'method' => 'userDetailsService', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\User\\UserDetailsService', - ), - ), - ), - ), - 2 => - array ( - 'method' => 'roleHierarchy', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Access\\RoleHierarchy', - ), - ), - ), - ), - 3 => - array ( - 'method' => 'permissionEvaluator', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Access\\PermissionEvaluator', - ), - ), - ), - ), - 4 => - array ( - 'method' => 'securityExpressionEvaluator', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', - ), - ), - ), - ), - 5 => - array ( - 'method' => 'authenticationManager', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Authentication\\AuthenticationManager', - ), - ), - ), - ), - 6 => - array ( - 'method' => 'authorizationChecker', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Access\\AuthorizationChecker', - ), - ), - ), - ), - 7 => - array ( - 'method' => 'methodSecurityEvaluator', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Access\\Method\\MethodSecurityEvaluator', - ), - ), - ), - ), - 8 => - array ( - 'method' => 'methodSecurityInterceptor', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.method.enabled', - 1 => 'true', - 2 => true, - ), - ), - 2 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Access\\Method\\MethodSecurityInterceptor', - ), - ), - ), - ), - 9 => - array ( - 'method' => 'methodSecurityMessageEnforcer', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', - ), - ), - ), - ), - 10 => - array ( - 'method' => 'commandAuthorizer', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Cqrs\\Security\\CommandAuthorizer', - ), - ), - ), - ), - 11 => - array ( - 'method' => 'queryAuthorizer', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Cqrs\\Security\\QueryAuthorizer', - ), - ), - ), - ), - 12 => - array ( - 'method' => 'auditorAware', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Data\\Repository\\Auditing\\AuditorAware', - ), - ), - ), - ), - 13 => - array ( - 'method' => 'authenticationEventPublisher', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', - ), - ), - ), - ), - 14 => - array ( - 'method' => 'sessionSecuritySettings', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Session\\SessionSecuritySettings', - ), - ), - ), - ), - 15 => - array ( - 'method' => 'securityContextRepository', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Session\\SecurityContextRepository', - ), - ), - ), - ), - 16 => - array ( - 'method' => 'formLoginSettings', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', - ), - ), - ), - ), - 17 => - array ( - 'method' => 'httpBasicSettings', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', - ), - ), - ), - ), - 18 => - array ( - 'method' => 'logoutSettings', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', - ), - ), - ), - ), - 19 => - array ( - 'method' => 'rememberMeSettings', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Web\\Settings\\RememberMeSettings', - ), - ), - ), - ), - 20 => - array ( - 'method' => 'rememberMeServices', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.remember_me.enabled', - 1 => 'true', - 2 => false, - ), - ), - 2 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', - ), - ), - ), - ), - 21 => - array ( - 'method' => 'authenticationEntryPoint', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.http.enabled', - 1 => 'true', - 2 => false, - ), - ), - 2 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Web\\EntryPoint\\AuthenticationEntryPoint', - ), - ), - ), - ), - 22 => - array ( - 'method' => 'sessionCsrf', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', - ), - ), - ), - ), - 23 => - array ( - 'method' => 'jwtService', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.jwt.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Jwt\\JwtService', - ), - ), - ), - ), - 24 => - array ( - 'method' => 'httpSecurity', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.http.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\Access\\HttpSecurity', - ), - ), - ), - ), - 25 => - array ( - 'method' => 'jwksProvider', - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.oauth2.resource_server.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', - 'args' => - array ( - 0 => 'Firefly\\Security\\OAuth2\\JwksProvider', - ), - ), - ), - ), - ), - ), - 4 => - array ( - 'class' => 'Firefly\\Security\\Session\\SecurityContextPersistenceFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 5 => - array ( - 'class' => 'Firefly\\Security\\Web\\Basic\\HttpBasicFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.http_basic.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 6 => - array ( - 'class' => 'Firefly\\Security\\Web\\CsrfFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.csrf.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 7 => - array ( - 'class' => 'Firefly\\Security\\Web\\HttpSecurityFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.http.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 8 => - array ( - 'class' => 'Firefly\\Security\\Web\\JwtAuthenticationFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.jwt.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 9 => - array ( - 'class' => 'Firefly\\Security\\Web\\Login\\FormLoginFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - 1 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.form_login.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 10 => - array ( - 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 11 => - array ( - 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutHandler', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 12 => - array ( - 'class' => 'Firefly\\Security\\Web\\RememberMe\\RememberMeAuthenticationFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), - 13 => - array ( - 'class' => 'Firefly\\Security\\Web\\SecurityHeadersFilter', - 'postConstruct' => - array ( - ), - 'preDestroy' => - array ( - ), - 'listeners' => - array ( - ), - 'conditions' => - array ( - 0 => - array ( - 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', - 'args' => - array ( - 0 => 'firefly.security.headers.enabled', - 1 => 'true', - 2 => false, - ), - ), - ), - 'beanConditions' => - array ( - ), - ), -); +return [ + 0 => [ + 'class' => 'Firefly\\Security\\Actuator\\SecurityActuatorAutoConfiguration', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnClass', + 'args' => [ + 0 => 'Firefly\\Actuator\\Health\\HealthDetailsAuthorizer', + ], + ], + ], + 'beanConditions' => [ + 0 => [ + 'method' => 'healthDetailsAuthorizer', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Actuator\\Health\\HealthDetailsAuthorizer', + ], + ], + ], + ], + ], + ], + 1 => [ + 'class' => 'Firefly\\Security\\OAuth2\\OAuth2ResourceServerFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.oauth2.resource_server.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 2 => [ + 'class' => 'Firefly\\Security\\OpenApi\\MethodSecurityRequirementContributor', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnClass', + 'args' => [ + 0 => 'Firefly\\OpenApi\\Security\\SecurityRequirementContributor', + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 3 => [ + 'class' => 'Firefly\\Security\\SecurityAutoConfiguration', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + ], + 'beanConditions' => [ + 0 => [ + 'method' => 'passwordEncoder', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Password\\PasswordEncoder', + ], + ], + ], + ], + 1 => [ + 'method' => 'userDetailsService', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\User\\UserDetailsService', + ], + ], + ], + ], + 2 => [ + 'method' => 'roleHierarchy', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Access\\RoleHierarchy', + ], + ], + ], + ], + 3 => [ + 'method' => 'permissionEvaluator', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Access\\PermissionEvaluator', + ], + ], + ], + ], + 4 => [ + 'method' => 'securityExpressionEvaluator', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Access\\Expression\\SecurityExpressionEvaluator', + ], + ], + ], + ], + 5 => [ + 'method' => 'authenticationManager', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Authentication\\AuthenticationManager', + ], + ], + ], + ], + 6 => [ + 'method' => 'authorizationChecker', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Access\\AuthorizationChecker', + ], + ], + ], + ], + 7 => [ + 'method' => 'methodSecurityEvaluator', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Access\\Method\\MethodSecurityEvaluator', + ], + ], + ], + ], + 8 => [ + 'method' => 'methodSecurityInterceptor', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.method.enabled', + 1 => 'true', + 2 => true, + ], + ], + 2 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Access\\Method\\MethodSecurityInterceptor', + ], + ], + ], + ], + 9 => [ + 'method' => 'methodSecurityMessageEnforcer', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Cqrs\\MethodSecurityMessageEnforcer', + ], + ], + ], + ], + 10 => [ + 'method' => 'commandAuthorizer', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Cqrs\\Security\\CommandAuthorizer', + ], + ], + ], + ], + 11 => [ + 'method' => 'queryAuthorizer', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Cqrs\\Security\\QueryAuthorizer', + ], + ], + ], + ], + 12 => [ + 'method' => 'auditorAware', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Data\\Repository\\Auditing\\AuditorAware', + ], + ], + ], + ], + 13 => [ + 'method' => 'authenticationEventPublisher', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Event\\AuthenticationEventPublisher', + ], + ], + ], + ], + 14 => [ + 'method' => 'sessionSecuritySettings', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Session\\SessionSecuritySettings', + ], + ], + ], + ], + 15 => [ + 'method' => 'securityContextRepository', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Session\\SecurityContextRepository', + ], + ], + ], + ], + 16 => [ + 'method' => 'formLoginSettings', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\FormLoginSettings', + ], + ], + ], + ], + 17 => [ + 'method' => 'httpBasicSettings', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\HttpBasicSettings', + ], + ], + ], + ], + 18 => [ + 'method' => 'logoutSettings', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\LogoutSettings', + ], + ], + ], + ], + 19 => [ + 'method' => 'rememberMeSettings', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Web\\Settings\\RememberMeSettings', + ], + ], + ], + ], + 20 => [ + 'method' => 'rememberMeServices', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.remember_me.enabled', + 1 => 'true', + 2 => false, + ], + ], + 2 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Web\\RememberMe\\RememberMeServices', + ], + ], + ], + ], + 21 => [ + 'method' => 'authenticationEntryPoint', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.http.enabled', + 1 => 'true', + 2 => false, + ], + ], + 2 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Web\\EntryPoint\\AuthenticationEntryPoint', + ], + ], + ], + ], + 22 => [ + 'method' => 'sessionCsrf', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Web\\Csrf\\SessionCsrf', + ], + ], + ], + ], + 23 => [ + 'method' => 'jwtService', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.jwt.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Jwt\\JwtService', + ], + ], + ], + ], + 24 => [ + 'method' => 'httpSecurity', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.http.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\Access\\HttpSecurity', + ], + ], + ], + ], + 25 => [ + 'method' => 'jwksProvider', + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.oauth2.resource_server.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnMissingBean', + 'args' => [ + 0 => 'Firefly\\Security\\OAuth2\\JwksProvider', + ], + ], + ], + ], + ], + ], + 4 => [ + 'class' => 'Firefly\\Security\\Session\\SecurityContextPersistenceFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 5 => [ + 'class' => 'Firefly\\Security\\Web\\Basic\\HttpBasicFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.http_basic.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 6 => [ + 'class' => 'Firefly\\Security\\Web\\CsrfFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.csrf.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 7 => [ + 'class' => 'Firefly\\Security\\Web\\HttpSecurityFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.http.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 8 => [ + 'class' => 'Firefly\\Security\\Web\\JwtAuthenticationFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.jwt.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 9 => [ + 'class' => 'Firefly\\Security\\Web\\Login\\FormLoginFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + 1 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.form_login.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 10 => [ + 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 11 => [ + 'class' => 'Firefly\\Security\\Web\\Logout\\LogoutHandler', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 12 => [ + 'class' => 'Firefly\\Security\\Web\\RememberMe\\RememberMeAuthenticationFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], + 13 => [ + 'class' => 'Firefly\\Security\\Web\\SecurityHeadersFilter', + 'postConstruct' => [ + ], + 'preDestroy' => [ + ], + 'listeners' => [ + ], + 'conditions' => [ + 0 => [ + 'type' => 'Firefly\\Context\\Condition\\Attributes\\ConditionalOnProperty', + 'args' => [ + 0 => 'firefly.security.headers.enabled', + 1 => 'true', + 2 => false, + ], + ], + ], + 'beanConditions' => [ + ], + ], +]; diff --git a/packages/security/src/SecurityAutoConfiguration.php b/packages/security/src/SecurityAutoConfiguration.php index b409d3ef..dc8cb393 100644 --- a/packages/security/src/SecurityAutoConfiguration.php +++ b/packages/security/src/SecurityAutoConfiguration.php @@ -6,8 +6,8 @@ use Firefly\Config\Config; use Firefly\Container\Attributes\Bean; -use Firefly\Container\Attributes\Lazy; use Firefly\Container\Attributes\Configuration; +use Firefly\Container\Attributes\Lazy; use Firefly\Container\Attributes\Order; use Firefly\Context\Condition\Attributes\ConditionalOnMissingBean; use Firefly\Context\Condition\Attributes\ConditionalOnProperty; diff --git a/packages/security/tests/OAuth2/InMemoryJwksProviderTest.php b/packages/security/tests/OAuth2/InMemoryJwksProviderTest.php index f80b7038..8fa10830 100644 --- a/packages/security/tests/OAuth2/InMemoryJwksProviderTest.php +++ b/packages/security/tests/OAuth2/InMemoryJwksProviderTest.php @@ -13,6 +13,9 @@ * validate a single token from the identity provider most applications use. The fixtures below are * that shape. */ +/** + * @return array one JWKS key, `alg` present or absent + */ function jwksKeyWithout(?string $alg): array { // A real RSA public key's components; only `alg` varies between the cases.