4 Commits

Author SHA1 Message Date
b4b78b0ab5 use php config instead of deprecated xml 2026-04-30 18:51:21 +02:00
50a560b6f4 do not use internal class 2026-04-30 18:35:06 +02:00
4a69b5d9fe fix: symfony 7.4 comp fixes 2026-04-30 13:30:04 +02:00
3aedf851ef feat!: symfony7 compatibility 2026-04-30 13:05:21 +02:00
7 changed files with 40 additions and 37 deletions

View File

@@ -5,21 +5,24 @@ namespace ABEL\Bundle\keycloakBearerOnlyAdapterBundle\DependencyInjection;
use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
class ABELkeycloakBearerOnlyAdapterExtension extends Extension class ABELkeycloakBearerOnlyAdapterExtension extends Extension
{ {
public function load(array $configs, ContainerBuilder $container) public function load(array $configs, ContainerBuilder $container): void
{ {
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader = new PhpFileLoader(
$loader->load('services.xml'); $container,
new FileLocator(__DIR__ . '/../Resources/config')
);
$loader->load('services.php');
$configuration = $this->getConfiguration($configs, $container); $configuration = $this->getConfiguration($configs, $container);
$config = $this->processConfiguration($configuration, $configs); $config = $this->processConfiguration($configuration, $configs);
$definition = $container->getDefinition('abel_keycloak_bearer_only_adapter.keycloak_bearer_user_provider'); $definition = $container->getDefinition('abel_keycloak_bearer_only_adapter.keycloak_bearer_user_provider');
$definition->replaceArgument(0, $config['issuer']); $definition->replaceArgument(0, $config['issuer']);
$definition->replaceArgument(1, $config['realm']); $definition->replaceArgument(1, $config['realm']);
$definition->replaceArgument(2, $config['client_id']); $definition->replaceArgument(2, $config['client_id']);

View File

@@ -10,7 +10,7 @@ use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface class Configuration implements ConfigurationInterface
{ {
public function getConfigTreeBuilder() public function getConfigTreeBuilder(): TreeBuilder
{ {
$treeBuilder = new TreeBuilder("abel_keycloak_bearer_only_adapter"); $treeBuilder = new TreeBuilder("abel_keycloak_bearer_only_adapter");

View File

@@ -0,0 +1,25 @@
<?php
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use ABEL\Bundle\keycloakBearerOnlyAdapterBundle\Security\User\KeycloakBearerUserProvider;
return static function (ContainerConfigurator $configurator): void {
$services = $configurator->services();
$services
->defaults()
->autowire()
->autoconfigure();
$services->load('ABEL\\Bundle\\keycloakBearerOnlyAdapterBundle\\', '../../*')
->exclude('../../{Entity,Migrations,Tests}');
// empty args → will be replaced later
$services->set('abel_keycloak_bearer_only_adapter.keycloak_bearer_user_provider', KeycloakBearerUserProvider::class)
->args([null, null, null, null, null]);
$services->alias(
KeycloakBearerUserProvider::class,
'abel_keycloak_bearer_only_adapter.keycloak_bearer_user_provider'
);
};

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services
https://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<!-- Default configuration for services in *this* file -->
<defaults autowire="true" autoconfigure="true"/>
<!-- makes classes available to be used as services -->
<!-- this creates a service per class whose id is the fully-qualified class name -->
<prototype namespace="ABEL\Bundle\keycloakBearerOnlyAdapterBundle\" resource="../../*" exclude="../../{Entity,Migrations,Tests}"/>
<service id="abel_keycloak_bearer_only_adapter.keycloak_bearer_user_provider" class="ABEL\Bundle\keycloakBearerOnlyAdapterBundle\Security\User\KeycloakBearerUserProvider">
<argument/>
<argument/>
<argument/>
<argument/>
<argument/>
</service>
<service id="ABEL\Bundle\keycloakBearerOnlyAdapterBundle\Security\User\KeycloakBearerUserProvider" alias="abel_keycloak_bearer_only_adapter.keycloak_bearer_user_provider" />
</services>
</container>

View File

@@ -261,6 +261,7 @@ class KeycloakBearerUser implements UserInterface
* *
* @return void * @return void
*/ */
#[\Deprecated]
public function eraseCredentials(): void public function eraseCredentials(): void
{ {
// TODO: Implement eraseCredentials() method. // TODO: Implement eraseCredentials() method.

View File

@@ -83,7 +83,7 @@ class KeycloakBearerUserProvider implements UserProviderInterface{
* @param string $class * @param string $class
* @return bool * @return bool
*/ */
public function supportsClass(string $class) public function supportsClass(string $class): bool
{ {
return KeycloakBearerUser::class === $class || is_subclass_of($class, KeycloakBearerUser::class); return KeycloakBearerUser::class === $class || is_subclass_of($class, KeycloakBearerUser::class);
} }

View File

@@ -12,10 +12,10 @@
"minimum-stability": "stable", "minimum-stability": "stable",
"require": { "require": {
"php": ">=8.3", "php": ">=8.3",
"symfony/config": "^6.0", "symfony/config": "^6.0 || ^7.0",
"symfony/dependency-injection": "^6.0", "symfony/dependency-injection": "^6.0 || ^7.0",
"symfony/http-kernel": "^6.0", "symfony/http-kernel": "^6.0 || ^7.0",
"symfony/security-bundle": "^6.0", "symfony/security-bundle": "^6.0 || ^7.0",
"guzzlehttp/guzzle": "^7", "guzzlehttp/guzzle": "^7",
"ext-json": "*" "ext-json": "*"
}, },