@gilbert
To load configuration after login in Symfony, you can use the kernel.request event listener to modify the loaded configuration.
First, create a new event listener class by running the following command:
1
|
$ php bin/console make:listener |
Then, follow the below steps:
This will generate a new file in the src/EventListener directory, like src/EventListener/ConfigLoaderListener.php.
Open the created file (ConfigLoaderListener.php) and modify the onKernelRequest method as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
use SymfonyComponentHttpKernelEventRequestEvent;
use SymfonyComponentHttpKernelKernelInterface;
class ConfigLoaderListener
{
private $kernel;
public function __construct(KernelInterface $kernel)
{
$this->kernel = $kernel;
}
public function onKernelRequest(RequestEvent $event)
{
// Check if the user is logged in
if (!$event->getRequest()->attributes->get('_route') === 'app_login') {
// Load the configuration for logged in users
// Get the current loaded configuration
$configuredBundles = $this->kernel->getContainer()->getParameter('kernel.bundles');
// Add/modify configuration options as needed
// Example: $configuredBundles['AppBundle'] = 'AppEntityUser';
// Set the modified configuration
$this->kernel->getContainer()->setParameter('kernel.bundles', $configuredBundles);
}
}
}
|
In the above example, the onKernelRequest method checks if the user is not on the login page (app_login route) and then modifies the loaded configuration as required. You can extend this logic to load additional configuration options.
Finally, register your event listener in the config/services.yaml file:
1 2 3 4 5 |
# config/services.yaml
services:
AppEventListenerConfigLoaderListener:
tags:
- { name: kernel.event_listener, event: kernel.request }
|
Now, whenever a user logs in, the ConfigLoaderListener will be triggered, allowing you to modify the loaded configuration based on your needs.