From beadf6d1817e7a086cfaa85d77dd72d6093a47b9 Mon Sep 17 00:00:00 2001 From: netkas Date: Wed, 30 Oct 2024 21:36:20 -0400 Subject: [PATCH] Add Security Configuration Class and Integration --- src/Socialbox/Classes/Configuration.php | 54 ++++++++++++------ .../Configuration/SecurityConfiguration.php | 55 +++++++++++++++++++ 2 files changed, 92 insertions(+), 17 deletions(-) create mode 100644 src/Socialbox/Classes/Configuration/SecurityConfiguration.php diff --git a/src/Socialbox/Classes/Configuration.php b/src/Socialbox/Classes/Configuration.php index 4e409d9..d667097 100644 --- a/src/Socialbox/Classes/Configuration.php +++ b/src/Socialbox/Classes/Configuration.php @@ -8,12 +8,14 @@ use Socialbox\Classes\Configuration\DatabaseConfiguration; use Socialbox\Classes\Configuration\InstanceConfiguration; use Socialbox\Classes\Configuration\LoggingConfiguration; use Socialbox\Classes\Configuration\RegistrationConfiguration; +use Socialbox\Classes\Configuration\SecurityConfiguration; class Configuration { private static ?\ConfigLib\Configuration $configuration = null; - private static ?DatabaseConfiguration $databaseConfiguration = null; private static ?InstanceConfiguration $instanceConfiguration = null; + private static ?SecurityConfiguration $securityConfiguration = null; + private static ?DatabaseConfiguration $databaseConfiguration = null; private static ?LoggingConfiguration $loggingConfiguration = null; private static ?CacheConfiguration $cacheConfiguration = null; private static ?RegistrationConfiguration $registrationConfiguration = null; @@ -38,6 +40,7 @@ class Configuration // Security Configuration $config->setDefault('security.display_internal_exceptions', false); $config->setDefault('security.resolved_servers_ttl', 600); + $config->setDefault('security.captcha_ttl', 200); // Database configuration $config->setDefault('database.host', '127.0.0.1'); @@ -73,11 +76,13 @@ class Configuration $config->setDefault('registration.sms_verification_required', false); $config->setDefault('registration.phone_call_verification_required', false); $config->setDefault('registration.image_captcha_verification_required', true); + $config->save(); self::$configuration = $config; - self::$databaseConfiguration = new DatabaseConfiguration(self::$configuration->getConfiguration()['database']); self::$instanceConfiguration = new InstanceConfiguration(self::$configuration->getConfiguration()['instance']); + self::$securityConfiguration = new SecurityConfiguration(self::$configuration->getConfiguration()['security']); + self::$databaseConfiguration = new DatabaseConfiguration(self::$configuration->getConfiguration()['database']); self::$loggingConfiguration = new LoggingConfiguration(self::$configuration->getConfiguration()['logging']); self::$cacheConfiguration = new CacheConfiguration(self::$configuration->getConfiguration()['cache']); self::$registrationConfiguration = new RegistrationConfiguration(self::$configuration->getConfiguration()['registration']); @@ -109,21 +114,6 @@ class Configuration return self::$configuration; } - /** - * Retrieves the current database configuration. - * - * @return DatabaseConfiguration The configuration settings for the database. - */ - public static function getDatabaseConfiguration(): DatabaseConfiguration - { - if(self::$databaseConfiguration === null) - { - self::initializeConfiguration(); - } - - return self::$databaseConfiguration; - } - /** * Retrieves the current instance configuration. * @@ -139,6 +129,36 @@ class Configuration return self::$instanceConfiguration; } + /** + * Retrieves the current security configuration. + * + * @return SecurityConfiguration The current security configuration instance. + */ + public static function getSecurityConfiguration(): SecurityConfiguration + { + if(self::$securityConfiguration === null) + { + self::initializeConfiguration(); + } + + return self::$securityConfiguration; + } + + /** + * Retrieves the current database configuration. + * + * @return DatabaseConfiguration The configuration settings for the database. + */ + public static function getDatabaseConfiguration(): DatabaseConfiguration + { + if(self::$databaseConfiguration === null) + { + self::initializeConfiguration(); + } + + return self::$databaseConfiguration; + } + /** * Retrieves the current logging configuration. * diff --git a/src/Socialbox/Classes/Configuration/SecurityConfiguration.php b/src/Socialbox/Classes/Configuration/SecurityConfiguration.php new file mode 100644 index 0000000..70aa930 --- /dev/null +++ b/src/Socialbox/Classes/Configuration/SecurityConfiguration.php @@ -0,0 +1,55 @@ +displayInternalErrors = $data['display_internal_errors']; + $this->resolvedServersTtl = $data['resolved_servers_ttl']; + $this->captchaTtl = $data['captcha_ttl']; + } + + /** + * Determines if the display of internal errors is enabled. + * + * @return bool True if the display of internal errors is enabled, false otherwise. + */ + public function isDisplayInternalErrors(): bool + { + return $this->displayInternalErrors; + } + + /** + * Retrieves the time-to-live (TTL) value for resolved servers. + * + * @return int The TTL value for resolved servers. + */ + public function getResolvedServersTtl(): int + { + return $this->resolvedServersTtl; + } + + /** + * Retrieves the time-to-live (TTL) value for captchas. + * + * @return int The TTL value for captchas. + */ + public function getCaptchaTtl(): int + { + return $this->captchaTtl; + } + +} \ No newline at end of file