From b60b12f9aed53f5fa8f1639cc574c3379b00923f Mon Sep 17 00:00:00 2001 From: netkas Date: Fri, 3 Jan 2025 18:30:16 -0500 Subject: [PATCH] Add PoliciesConfiguration to handle server policies --- src/Socialbox/Classes/Configuration.php | 25 +++++++++++++++++++ .../Configuration/PoliciesConfiguration.php | 21 ++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/Socialbox/Classes/Configuration/PoliciesConfiguration.php diff --git a/src/Socialbox/Classes/Configuration.php b/src/Socialbox/Classes/Configuration.php index 09fd208..fcae5b0 100644 --- a/src/Socialbox/Classes/Configuration.php +++ b/src/Socialbox/Classes/Configuration.php @@ -7,6 +7,7 @@ use Socialbox\Classes\Configuration\DatabaseConfiguration; use Socialbox\Classes\Configuration\InstanceConfiguration; use Socialbox\Classes\Configuration\LoggingConfiguration; + use Socialbox\Classes\Configuration\PoliciesConfiguration; use Socialbox\Classes\Configuration\RegistrationConfiguration; use Socialbox\Classes\Configuration\SecurityConfiguration; use Socialbox\Classes\Configuration\StorageConfiguration; @@ -21,6 +22,7 @@ private static ?LoggingConfiguration $loggingConfiguration = null; private static ?CacheConfiguration $cacheConfiguration = null; private static ?RegistrationConfiguration $registrationConfiguration = null; + private static ?PoliciesConfiguration $policiesConfiguration = null; private static ?StorageConfiguration $storageConfiguration = null; /** @@ -118,6 +120,10 @@ $config->setDefault('registration.display_picture_required', false); $config->setDefault('registration.image_captcha_verification_required', true); + // Server Policies + // The maximum number of signing keys a peer can register onto the server at once + $config->setDefault('policies.max_signing_keys', 20); + // Storage configuration $config->setDefault('storage.path', '/etc/socialbox'); // The main path for file storage $config->setDefault('storage.user_display_images_path', 'user_profiles'); // eg; `/etc/socialbox/user_profiles` @@ -133,6 +139,7 @@ self::$loggingConfiguration = new LoggingConfiguration(self::$configuration->getConfiguration()['logging']); self::$cacheConfiguration = new CacheConfiguration(self::$configuration->getConfiguration()['cache']); self::$registrationConfiguration = new RegistrationConfiguration(self::$configuration->getConfiguration()['registration']); + self::$policiesConfiguration = new PoliciesConfiguration(self::$configuration->getConfiguration()['policies']); self::$storageConfiguration = new StorageConfiguration(self::$configuration->getConfiguration()['storage']); } @@ -301,6 +308,24 @@ return self::$registrationConfiguration; } + /** + * Retrieves the policies configuration. + * + * This method returns the current PoliciesConfiguration instance. + * If the configuration has not been initialized yet, it initializes it first. + * + * @return PoliciesConfiguration The policies configuration instance. + */ + public static function getPoliciesConfiguration(): PoliciesConfiguration + { + if(self::$policiesConfiguration === null) + { + self::initializeConfiguration(); + } + + return self::$policiesConfiguration; + } + /** * Retrieves the storage configuration. * diff --git a/src/Socialbox/Classes/Configuration/PoliciesConfiguration.php b/src/Socialbox/Classes/Configuration/PoliciesConfiguration.php new file mode 100644 index 0000000..90b356d --- /dev/null +++ b/src/Socialbox/Classes/Configuration/PoliciesConfiguration.php @@ -0,0 +1,21 @@ +maxSigningKeys = $data['max_signing_keys']; + } + + /** + * @return int + */ + public function getMaxSigningKeys(): int + { + return $this->maxSigningKeys; + } + } \ No newline at end of file