Add authentication configuration and allowed methods logic
This commit is contained in:
parent
cabf1f35a8
commit
70c0fb2e54
4 changed files with 349 additions and 65 deletions
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Socialbox\Classes;
|
||||
|
||||
use Socialbox\Classes\Configuration\AuthenticationConfiguration;
|
||||
use Socialbox\Classes\Configuration\CacheConfiguration;
|
||||
use Socialbox\Classes\Configuration\CryptographyConfiguration;
|
||||
use Socialbox\Classes\Configuration\DatabaseConfiguration;
|
||||
|
@ -22,6 +23,7 @@
|
|||
private static ?LoggingConfiguration $loggingConfiguration = null;
|
||||
private static ?CacheConfiguration $cacheConfiguration = null;
|
||||
private static ?RegistrationConfiguration $registrationConfiguration = null;
|
||||
private static ?AuthenticationConfiguration $authenticationConfiguration = null;
|
||||
private static ?PoliciesConfiguration $policiesConfiguration = null;
|
||||
private static ?StorageConfiguration $storageConfiguration = null;
|
||||
|
||||
|
@ -134,6 +136,10 @@
|
|||
$config->setDefault('registration.birthday_required', false);
|
||||
$config->setDefault('registration.image_captcha_verification_required', true);
|
||||
|
||||
// Authentication configuration
|
||||
$config->setDefault('authentication.enabled', true);
|
||||
$config->setDefault('authentication.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);
|
||||
|
@ -160,6 +166,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::$authenticationConfiguration = new AuthenticationConfiguration(self::$configuration->getConfiguration()['authentication']);
|
||||
self::$policiesConfiguration = new PoliciesConfiguration(self::$configuration->getConfiguration()['policies']);
|
||||
self::$storageConfiguration = new StorageConfiguration(self::$configuration->getConfiguration()['storage']);
|
||||
}
|
||||
|
@ -329,6 +336,24 @@
|
|||
return self::$registrationConfiguration;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the authentication configuration.
|
||||
*
|
||||
* This method returns the current AuthenticationConfiguration instance.
|
||||
* If the configuration has not been initialized yet, it initializes it first.
|
||||
*
|
||||
* @return AuthenticationConfiguration The authentication configuration instance.
|
||||
*/
|
||||
public static function getAuthenticationConfiguration(): AuthenticationConfiguration
|
||||
{
|
||||
if(self::$authenticationConfiguration === null)
|
||||
{
|
||||
self::initializeConfiguration();
|
||||
}
|
||||
|
||||
return self::$authenticationConfiguration;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the policies configuration.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace Socialbox\Classes\Configuration;
|
||||
|
||||
class AuthenticationConfiguration
|
||||
{
|
||||
private bool $enabled;
|
||||
private bool $imageCaptchaVerificationRequired;
|
||||
|
||||
/**
|
||||
* Public Constructor for the AuthenticationConfiguration class
|
||||
*
|
||||
* @param array $data The array data configuration
|
||||
*/
|
||||
public function __construct(array $data)
|
||||
{
|
||||
$this->enabled = (bool)$data['enabled'];
|
||||
$this->imageCaptchaVerificationRequired = (bool)$data['image_captcha_verification_required'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isEnabled(): bool
|
||||
{
|
||||
return $this->enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isImageCaptchaVerificationRequired(): bool
|
||||
{
|
||||
return $this->imageCaptchaVerificationRequired;
|
||||
}
|
||||
}
|
38
src/Socialbox/Classes/StandardMethods/GetAllowedMethods.php
Normal file
38
src/Socialbox/Classes/StandardMethods/GetAllowedMethods.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php
|
||||
|
||||
namespace Socialbox\Classes\StandardMethods;
|
||||
|
||||
use Socialbox\Abstracts\Method;
|
||||
use Socialbox\Enums\StandardError;
|
||||
use Socialbox\Enums\StandardMethods;
|
||||
use Socialbox\Exceptions\DatabaseOperationException;
|
||||
use Socialbox\Exceptions\StandardException;
|
||||
use Socialbox\Interfaces\SerializableInterface;
|
||||
use Socialbox\Objects\ClientRequest;
|
||||
use Socialbox\Objects\RpcRequest;
|
||||
|
||||
class GetAllowedMethods extends Method
|
||||
{
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
public static function execute(ClientRequest $request, RpcRequest $rpcRequest): ?SerializableInterface
|
||||
{
|
||||
$allowedMethods = [];
|
||||
|
||||
try
|
||||
{
|
||||
foreach(StandardMethods::getAllowedMethods($request) as $method)
|
||||
{
|
||||
$allowedMethods[] = $method->value;
|
||||
}
|
||||
}
|
||||
catch(DatabaseOperationException $e)
|
||||
{
|
||||
throw new StandardException('Failed to retrieve allowed methods due to an internal exception', StandardError::INTERNAL_SERVER_ERROR, $e);
|
||||
}
|
||||
|
||||
return $rpcRequest->produceResponse($allowedMethods);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue