diff --git a/src/Socialbox/Classes/Configuration.php b/src/Socialbox/Classes/Configuration.php index 73a6b02..7b5814f 100644 --- a/src/Socialbox/Classes/Configuration.php +++ b/src/Socialbox/Classes/Configuration.php @@ -4,13 +4,21 @@ namespace Socialbox\Classes; use Socialbox\Classes\Configuration\CacheConfiguration; use Socialbox\Classes\Configuration\DatabaseConfiguration; +use Socialbox\Classes\Configuration\RegistrationConfiguration; class Configuration { private static ?array $configuration = null; private static ?DatabaseConfiguration $databaseConfiguration = null; private static ?CacheConfiguration $cacheConfiguration = null; + private static ?RegistrationConfiguration $registrationConfiguration = null; + /** + * Initializes the configuration settings for the application. This includes + * settings for the instance, security, database, cache layer, and registration. + * + * @return void + */ private static function initializeConfiguration(): void { $config = new \ConfigLib\Configuration('socialbox'); @@ -20,12 +28,14 @@ class Configuration $config->setDefault('security.display_internal_exceptions', false); + // Database configuration $config->setDefault('database.host', '127.0.0.1'); $config->setDefault('database.port', 3306); $config->setDefault('database.username', 'root'); $config->setDefault('database.password', 'root'); $config->setDefault('database.name', 'test'); + // Cache layer configuration $config->setDefault('cache.enabled', false); $config->setDefault('cache.engine', 'redis'); $config->setDefault('cache.host', '127.0.0.1'); @@ -37,13 +47,30 @@ class Configuration $config->setDefault('cache.sessions.ttl', 3600); $config->setDefault('cache.sessions.max', 1000); + // Registration configuration + $config->setDefault('registration.enabled', true); + $config->setDefault('registration.password_required', true); + $config->setDefault('registration.otp_required', false); + $config->setDefault('registration.display_name_required', false); + $config->setDefault('registration.email_verification_required', false); + $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->getConfiguration(); self::$databaseConfiguration = self::$configuration['database']; self::$cacheConfiguration = self::$configuration['cache']; + self::$registrationConfiguration = self::$configuration['registration']; } + /** + * Retrieves the current configuration array. If the configuration is not initialized, + * it triggers the initialization process. + * + * @return array The current configuration array. + */ public static function getConfiguration(): array { if(self::$configuration === null) @@ -54,6 +81,11 @@ 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) @@ -64,6 +96,12 @@ class Configuration return self::$databaseConfiguration; } + /** + * Retrieves the current cache configuration. If the cache configuration + * has not been initialized, it will initialize it first. + * + * @return CacheConfiguration The current cache configuration instance. + */ public static function getCacheConfiguration(): CacheConfiguration { if(self::$cacheConfiguration === null) @@ -73,4 +111,22 @@ class Configuration return self::$cacheConfiguration; } + + /** + * Retrieves the registration configuration. + * + * This method returns the current RegistrationConfiguration instance. + * If the configuration has not been initialized yet, it initializes it first. + * + * @return RegistrationConfiguration The registration configuration instance. + */ + public static function getRegistrationConfiguration(): RegistrationConfiguration + { + if(self::$registrationConfiguration === null) + { + self::initializeConfiguration(); + } + + return self::$registrationConfiguration; + } } \ No newline at end of file diff --git a/src/Socialbox/Classes/Configuration/RegistrationConfiguration.php b/src/Socialbox/Classes/Configuration/RegistrationConfiguration.php new file mode 100644 index 0000000..03b0ed6 --- /dev/null +++ b/src/Socialbox/Classes/Configuration/RegistrationConfiguration.php @@ -0,0 +1,122 @@ +registrationEnabled = (bool)$data['registration_enabled']; + $this->passwordRequired = (bool)$data['password_required']; + $this->otpRequired = (bool)$data['otp_required']; + $this->displayNameRequired = (bool)$data['display_name_required']; + $this->emailVerificationRequired = (bool)$data['email_verification_required']; + $this->smsVerificationRequired = (bool)$data['sms_verification_required']; + $this->phoneCallVerificationRequired = (bool)$data['phone_call_verification_required']; + $this->imageCaptchaVerificationRequired = (bool)$data['image_captcha_verification_required']; + } + + /** + * Checks if the registration is enabled. + * + * @return bool True if registration is enabled, false otherwise. + */ + public function isRegistrationEnabled(): bool + { + return $this->registrationEnabled; + } + + /** + * Determines if a password is required. + * + * @return bool True if a password is required, false otherwise. + */ + public function isPasswordRequired(): bool + { + return $this->passwordRequired; + } + + /** + * Determines if OTP (One-Time Password) is required. + * + * @return bool True if OTP is required, false otherwise. + */ + public function isOtpRequired(): bool + { + return $this->otpRequired; + } + + /** + * Checks if a display name is required. + * + * @return bool Returns true if a display name is required, false otherwise. + */ + public function isDisplayNameRequired(): bool + { + return $this->displayNameRequired; + } + + /** + * Checks if email verification is required. + * + * @return bool Returns true if email verification is required, false otherwise. + */ + public function isEmailVerificationRequired(): bool + { + return $this->emailVerificationRequired; + } + + /** + * Checks if SMS verification is required. + * + * @return bool Returns true if SMS verification is required, false otherwise. + */ + public function isSmsVerificationRequired(): bool + { + return $this->smsVerificationRequired; + } + + /** + * Checks if phone call verification is required. + * + * @return bool Returns true if phone call verification is required, false otherwise. + */ + public function isPhoneCallVerificationRequired(): bool + { + return $this->phoneCallVerificationRequired; + } + + /** + * Determines if image CAPTCHA verification is required. + * + * @return bool Returns true if image CAPTCHA verification is required, false otherwise. + */ + public function isImageCaptchaVerificationRequired(): bool + { + return $this->imageCaptchaVerificationRequired; + } +} \ No newline at end of file diff --git a/tests/Socialbox/Classes/ConfigurationTest.php b/tests/Socialbox/Classes/ConfigurationTest.php deleted file mode 100644 index 028e3e3..0000000 --- a/tests/Socialbox/Classes/ConfigurationTest.php +++ /dev/null @@ -1,38 +0,0 @@ -assertIsArray($config, "Configuration should be an array."); - - //Assert that all the default configuration exists - $this->assertArrayHasKey('host', $config['database']); - $this->assertIsString($config['database']['host']); - - $this->assertArrayHasKey('port', $config['database']); - $this->assertIsInt($config['database']['port'], 3306); - - $this->assertArrayHasKey('username', $config['database']); - $this->assertIsString($config['database']['username']); - - $this->assertArrayHasKey('password', $config['database']); - $this->assertIsString($config['database']['password']); - - $this->assertArrayHasKey('name', $config['database']); - $this->assertIsString($config['database']['name']); - } -} \ No newline at end of file