From 152286d6626c9f40b9412dc90652b8f7a6707766 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Tue, 6 Oct 2020 17:51:23 +0200 Subject: [PATCH] [security] SecurityExtension: detects Tracy by presence of service @Tracy\Bar [Closes nette/di#245] --- .../Bridges/SecurityDI/SecurityExtension.php | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/security/src/Bridges/SecurityDI/SecurityExtension.php b/security/src/Bridges/SecurityDI/SecurityExtension.php index 17190d21a76..b3b7ae56e2d 100644 --- a/security/src/Bridges/SecurityDI/SecurityExtension.php +++ b/security/src/Bridges/SecurityDI/SecurityExtension.php @@ -31,7 +31,7 @@ public function __construct(bool $debugMode = false) public function getConfigSchema(): Nette\Schema\Schema { return Expect::structure([ - 'debugger' => Expect::bool(interface_exists(\Tracy\IBarPanel::class)), + 'debugger' => Expect::bool(), 'users' => Expect::arrayOf( Expect::anyOf( Expect::string(), // user => password @@ -64,12 +64,6 @@ public function loadConfiguration() $user = $builder->addDefinition($this->prefix('user')) ->setFactory(Nette\Security\User::class); - if ($this->debugMode && $config->debugger) { - $user->addSetup('@Tracy\Bar::addPanel', [ - new Nette\DI\Definitions\Statement(Nette\Bridges\SecurityTracy\UserPanel::class), - ]); - } - if ($config->users) { $usersList = $usersRoles = $usersData = []; foreach ($config->users as $username => $data) { @@ -110,4 +104,19 @@ public function loadConfiguration() $builder->addAlias('nette.userStorage', $this->prefix('userStorage')); } } + + + public function beforeCompile() + { + $builder = $this->getContainerBuilder(); + + if ( + $this->debugMode && + ($this->config->debugger ?? $builder->getByType(\Tracy\Bar::class)) + ) { + $builder->getDefinition($this->prefix('user'))->addSetup('@Tracy\Bar::addPanel', [ + new Nette\DI\Definitions\Statement(Nette\Bridges\SecurityTracy\UserPanel::class), + ]); + } + } }