Add registration configuration and remove old test files
This commit is contained in:
parent
d2eaa1fe73
commit
02b5afe4c0
3 changed files with 178 additions and 38 deletions
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,122 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* This class handles the configuration settings for user registration.
|
||||
*/
|
||||
|
||||
namespace Socialbox\Classes\Configuration;
|
||||
|
||||
class RegistrationConfiguration
|
||||
{
|
||||
private bool $registrationEnabled;
|
||||
private bool $passwordRequired;
|
||||
private bool $otpRequired;
|
||||
private bool $displayNameRequired;
|
||||
private bool $emailVerificationRequired;
|
||||
private bool $smsVerificationRequired;
|
||||
private bool $phoneCallVerificationRequired;
|
||||
private bool $imageCaptchaVerificationRequired;
|
||||
|
||||
/**
|
||||
* Constructor method for initializing verification requirements.
|
||||
*
|
||||
* @param array $data An associative array containing the following keys:
|
||||
* 'registration_enabled', 'password_required',
|
||||
* 'otp_required', 'display_name_required',
|
||||
* 'email_verification_required', 'sms_verification_required',
|
||||
* 'phone_call_verification_required', 'image_captcha_verification_required'.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->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;
|
||||
}
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Socialbox\Classes;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* Socialbox's Configuration Test Class
|
||||
*
|
||||
* This is a test suite for testing the "getConfiguration" method in the "Configuration" class.
|
||||
*/
|
||||
class ConfigurationTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Test the "getConfiguration" method in "Configuration" class.
|
||||
*/
|
||||
public function testGetConfiguration(): void
|
||||
{
|
||||
$config = Configuration::getConfiguration();
|
||||
$this->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']);
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue