diff --git a/src/Generators/AbstractPasswordGenerator.php b/src/Generators/AbstractPasswordGenerator.php index 89c2ce8..4b2594a 100644 --- a/src/Generators/AbstractPasswordGenerator.php +++ b/src/Generators/AbstractPasswordGenerator.php @@ -28,6 +28,45 @@ abstract class AbstractPasswordGenerator implements PasswordGeneratorInterface $this->loadConfiguration(); } + /** + * Check whether the configured logger should emit a message at the requested level. + */ + protected function isLogLevel(string $level): bool + { + if ($this->logger === null) { + return false; + } + + $normalizedLevel = strtolower(trim($level)); + if ($normalizedLevel === '') { + return false; + } + + if (method_exists($this->logger, 'isHandling')) { + $reflection = new \ReflectionMethod($this->logger, 'isHandling'); + if ($reflection->isPublic()) { + return (bool) $reflection->invoke($this->logger, $normalizedLevel); + } + } + + $configuredLevel = strtolower((string) $this->getConfigValue('logging.level', 'warning')); + $levels = [ + 'debug' => 0, + 'info' => 1, + 'notice' => 2, + 'warning' => 3, + 'error' => 4, + 'critical' => 5, + 'alert' => 6, + 'emergency' => 7, + ]; + + $requested = $levels[$normalizedLevel] ?? $levels['warning']; + $threshold = $levels[$configuredLevel] ?? $levels['warning']; + + return $requested >= $threshold; + } + /** * Load configuration from config/config.json. */ diff --git a/src/Generators/PwgenGenerator.php b/src/Generators/PwgenGenerator.php index dedc27d..31cebeb 100644 --- a/src/Generators/PwgenGenerator.php +++ b/src/Generators/PwgenGenerator.php @@ -4,7 +4,9 @@ declare(strict_types=1); namespace App\Generators; +use InvalidArgumentException; use Psr\Log\LoggerInterface; +use RuntimeException; use App\Services\Logging\LoggingHelper; /** diff --git a/src/Generators/XkcdPassGenerator.php b/src/Generators/XkcdPassGenerator.php index a527bcb..eae3e8d 100644 --- a/src/Generators/XkcdPassGenerator.php +++ b/src/Generators/XkcdPassGenerator.php @@ -5,7 +5,9 @@ declare(strict_types=1); namespace App\Generators; use App\Services\LLM\LLMManager; +use InvalidArgumentException; use Psr\Log\LoggerInterface; +use RuntimeException; /**