diff --git a/src/Socialbox/Classes/Configuration.php b/src/Socialbox/Classes/Configuration.php index 2b0338a..3ef9567 100644 --- a/src/Socialbox/Classes/Configuration.php +++ b/src/Socialbox/Classes/Configuration.php @@ -118,6 +118,9 @@ $config->setDefault('registration.otp_required', false); $config->setDefault('registration.display_name_required', true); $config->setDefault('registration.display_picture_required', false); + $config->setDefault('registration.email_address_required', false); + $config->setDefault('registration.phone_number_required', false); + $config->setDefault('registration.birthday_required', false); $config->setDefault('registration.image_captcha_verification_required', true); // Server Policies diff --git a/src/Socialbox/Classes/Configuration/RegistrationConfiguration.php b/src/Socialbox/Classes/Configuration/RegistrationConfiguration.php index b909c9f..35fcaf0 100644 --- a/src/Socialbox/Classes/Configuration/RegistrationConfiguration.php +++ b/src/Socialbox/Classes/Configuration/RegistrationConfiguration.php @@ -18,6 +18,9 @@ private bool $otpRequired; private bool $displayNameRequired; private bool $displayPictureRequired; + private bool $emailAddressRequired; + private bool $phoneNumberRequired; + private bool $birthdayRequired; private bool $imageCaptchaVerificationRequired; /** @@ -47,6 +50,9 @@ $this->otpRequired = (bool)$data['otp_required']; $this->displayNameRequired = (bool)$data['display_name_required']; $this->displayPictureRequired = (bool)$data['display_picture_required']; + $this->emailAddressRequired = (bool)$data['email_address_required']; + $this->phoneNumberRequired = (bool)$data['phone_number_required']; + $this->birthdayRequired = (bool)$data['birthday_required']; $this->imageCaptchaVerificationRequired = (bool)$data['image_captcha_verification_required']; } @@ -190,6 +196,36 @@ return $this->displayPictureRequired; } + /** + * Determines whether an email address is required. + * + * @return bool Returns true if an email address is required, false otherwise. + */ + public function isEmailAddressRequired(): bool + { + return $this->emailAddressRequired; + } + + /** + * Determines if a phone number is required. + * + * @return bool Returns true if a phone number is required, false otherwise. + */ + public function isPhoneNumberRequired(): bool + { + return $this->phoneNumberRequired; + } + + /** + * Determines if a birthday is required. + * + * @return bool Returns true if a birthday is required, otherwise false. + */ + public function isBirthdayRequired(): bool + { + return $this->birthdayRequired; + } + /** * Determines if image CAPTCHA verification is required. * diff --git a/src/Socialbox/Classes/StandardMethods/SettingsDeleteBirthday.php b/src/Socialbox/Classes/StandardMethods/SettingsDeleteBirthday.php new file mode 100644 index 0000000..8da8fe7 --- /dev/null +++ b/src/Socialbox/Classes/StandardMethods/SettingsDeleteBirthday.php @@ -0,0 +1,38 @@ +isBirthdayRequired()) + { + return $rpcRequest->produceError(StandardError::FORBIDDEN, 'A birthday is required for this server'); + } + + try + { + RegisteredPeerManager::deleteBirthday($request->getPeer()); + } + catch(Exception $e) + { + throw new StandardException('Failed to delete birthday ' . $e->getMessage(), StandardError::INTERNAL_SERVER_ERROR, $e); + } + + return $rpcRequest->produceResponse(true); + } + } \ No newline at end of file diff --git a/src/Socialbox/Classes/StandardMethods/SettingsDeleteEmailAddress.php b/src/Socialbox/Classes/StandardMethods/SettingsDeleteEmailAddress.php new file mode 100644 index 0000000..cb82661 --- /dev/null +++ b/src/Socialbox/Classes/StandardMethods/SettingsDeleteEmailAddress.php @@ -0,0 +1,38 @@ +isEmailAddressRequired()) + { + return $rpcRequest->produceError(StandardError::FORBIDDEN, 'A email address is required for this server'); + } + + try + { + RegisteredPeerManager::deleteEmailAddress($request->getPeer()); + } + catch(Exception $e) + { + throw new StandardException('Failed to delete email address: ' . $e->getMessage(), StandardError::INTERNAL_SERVER_ERROR, $e); + } + + return $rpcRequest->produceResponse(true); + } + } \ No newline at end of file diff --git a/src/Socialbox/Classes/StandardMethods/SettingsDeletePhoneNumber.php b/src/Socialbox/Classes/StandardMethods/SettingsDeletePhoneNumber.php new file mode 100644 index 0000000..aeb755e --- /dev/null +++ b/src/Socialbox/Classes/StandardMethods/SettingsDeletePhoneNumber.php @@ -0,0 +1,38 @@ +isPhoneNumberRequired()) + { + return $rpcRequest->produceError(StandardError::FORBIDDEN, 'A phone number is required for this server'); + } + + try + { + RegisteredPeerManager::deletePhoneNumber($request->getPeer()); + } + catch(Exception $e) + { + throw new StandardException('Failed to delete phone number: ' . $e->getMessage(), StandardError::INTERNAL_SERVER_ERROR, $e); + } + + return $rpcRequest->produceResponse(true); + } + } \ No newline at end of file