Refactored Peer Information to use InformationFields rather than being hard-coded into the peer record
This commit is contained in:
parent
75de51c910
commit
f689e36378
45 changed files with 1422 additions and 1337 deletions
|
@ -7,8 +7,9 @@
|
|||
case VARIABLES = 'variables.sql';
|
||||
case RESOLVED_DNS_RECORDS = 'resolved_dns_records.sql';
|
||||
|
||||
case REGISTERED_PEERS = 'registered_peers.sql';
|
||||
case PEERS = 'peers.sql';
|
||||
|
||||
case PEER_INFORMATION = 'peer_information.sql';
|
||||
case AUTHENTICATION_PASSWORDS = 'authentication_passwords.sql';
|
||||
case AUTHENTICATION_OTP = 'authentication_otp.sql';
|
||||
case CAPTCHA_IMAGES = 'captcha_images.sql';
|
||||
|
@ -27,8 +28,9 @@
|
|||
self::VARIABLES,
|
||||
self::RESOLVED_DNS_RECORDS => 0,
|
||||
|
||||
self::REGISTERED_PEERS => 1,
|
||||
self::PEERS => 1,
|
||||
|
||||
self::PEER_INFORMATION,
|
||||
self::AUTHENTICATION_PASSWORDS,
|
||||
self::AUTHENTICATION_OTP,
|
||||
self::CAPTCHA_IMAGES,
|
||||
|
|
|
@ -13,11 +13,15 @@
|
|||
// Verification, require fields
|
||||
case SET_PASSWORD = 'SET_PASSWORD'; // Peer has to set a password
|
||||
case SET_OTP = 'SET_OTP'; // Peer has to set an OTP
|
||||
case SET_DISPLAY_NAME = 'SET_DISPLAY_NAME'; // Peer has to set a display name
|
||||
case SET_DISPLAY_PICTURE = 'SET_DISPLAY_PICTURE'; // Peer has to set a display picture
|
||||
case SET_EMAIL = 'SET_EMAIL'; // Peer has to set an email
|
||||
case SET_PHONE = 'SET_PHONE'; // Peer has to set a phone number
|
||||
case SET_BIRTHDAY = 'SET_BIRTHDAY'; // Peer has to set a birthday
|
||||
case SET_DISPLAY_NAME = 'SET_DISPLAY_NAME'; // Peer has to set a display name to their profile information
|
||||
case SET_FIRST_NAME = 'SET_FIRST_NAME'; // Peer has to set a first name to their profile information
|
||||
case SET_MIDDLE_NAME = 'SET_MIDDLE_NAME'; // Peer has to set a middle name to their profile information
|
||||
case SET_LAST_NAME = 'SET_LAST_NAME'; // Peer has to set a last name to their profile information
|
||||
case SET_DISPLAY_PICTURE = 'SET_DISPLAY_PICTURE'; // Peer has to set a display picture to their profile information
|
||||
case SET_EMAIL = 'SET_EMAIL'; // Peer has to set an email to their profile information
|
||||
case SET_PHONE = 'SET_PHONE'; // Peer has to set a phone number to their profile information
|
||||
case SET_BIRTHDAY = 'SET_BIRTHDAY'; // Peer has to set a birthday to their profile information
|
||||
case SET_URL = 'SET_URL'; // Peer has to set an url to their profile information
|
||||
|
||||
// Verification, verification requirements
|
||||
case VER_PRIVACY_POLICY = 'VER_PRIVACY_POLICY'; // Peer has to accept the privacy policy
|
||||
|
@ -37,7 +41,7 @@
|
|||
case VER_AUTHENTICATION_CODE = 'VER_AUTHENTICATION_CODE'; // Peer has to enter their authentication code
|
||||
|
||||
// Session Flags
|
||||
case RATE_LIMITED = 'RATE_LIMITED'; // Peer is temporarily rate limited
|
||||
case RATE_LIMITED = 'RATE_LIMITED'; // Peer is temporarily rate-limited
|
||||
|
||||
/**
|
||||
* Retrieves a list of registration-related flags.
|
||||
|
@ -83,7 +87,7 @@
|
|||
* Converts an array of SessionFlags to a comma-separated string of their values.
|
||||
*
|
||||
* @param array $flags An array of SessionFlags objects to be converted.
|
||||
* @return string A comma-separated string of the values of the provided SessionFlags.
|
||||
* @return string A comma-separated string of the provided SessionFlags as string values.
|
||||
*/
|
||||
public static function toString(array $flags): string
|
||||
{
|
||||
|
|
11
src/Socialbox/Enums/PrivacyState.php
Normal file
11
src/Socialbox/Enums/PrivacyState.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace Socialbox\Enums;
|
||||
|
||||
enum PrivacyState : string
|
||||
{
|
||||
case PUBLIC = 'PUBLIC';
|
||||
case PRIVATE = 'PRIVATE';
|
||||
case CONTACTS = 'CONTACTS';
|
||||
case TRUSTED = 'TRUSTED';
|
||||
}
|
|
@ -17,20 +17,16 @@
|
|||
use Socialbox\Classes\StandardMethods\GetTermsOfService;
|
||||
use Socialbox\Classes\StandardMethods\Ping;
|
||||
use Socialbox\Classes\StandardMethods\ResolvePeer;
|
||||
use Socialbox\Classes\StandardMethods\SettingsAddInformationField;
|
||||
use Socialbox\Classes\StandardMethods\SettingsAddSigningKey;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeleteBirthday;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeleteDisplayName;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeleteDisplayPicture;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeleteEmailAddress;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeleteInformationField;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeleteOtp;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeletePassword;
|
||||
use Socialbox\Classes\StandardMethods\SettingsDeletePhoneNumber;
|
||||
use Socialbox\Classes\StandardMethods\SettingsGetSigningKeys;
|
||||
use Socialbox\Classes\StandardMethods\SettingsSetBirthday;
|
||||
use Socialbox\Classes\StandardMethods\SettingsSetDisplayName;
|
||||
use Socialbox\Classes\StandardMethods\SettingsSetDisplayPicture;
|
||||
use Socialbox\Classes\StandardMethods\SettingsSetEmailAddress;
|
||||
use Socialbox\Classes\StandardMethods\SettingsSetOtp;
|
||||
use Socialbox\Classes\StandardMethods\SettingsSetPassword;
|
||||
use Socialbox\Classes\StandardMethods\SettingsSetPhoneNumber;
|
||||
use Socialbox\Classes\StandardMethods\SettingsUpdateInformationField;
|
||||
use Socialbox\Classes\StandardMethods\SettingsUpdateInformationPrivacy;
|
||||
use Socialbox\Classes\StandardMethods\SettingsUpdatePassword;
|
||||
use Socialbox\Classes\StandardMethods\VerificationAnswerImageCaptcha;
|
||||
use Socialbox\Classes\StandardMethods\VerificationGetImageCaptcha;
|
||||
|
@ -61,22 +57,16 @@
|
|||
|
||||
case VERIFICATION_EMAIL = 'verificationEmail'; // NOT IMPLEMENTED
|
||||
case VERIFICATION_ANSWER_EMAIL = 'verificationAnswerEmail'; // NOT IMPLEMENTED
|
||||
|
||||
case VERIFICATION_SMS = 'verificationSms'; // NOT IMPLEMENTED
|
||||
case VERIFICATION_ANSWER_SMS = 'verificationAnswerSms'; // NOT IMPLEMENTED
|
||||
|
||||
case VERIFICATION_PHONE_CALL = 'verificationPhoneCall'; // NOT IMPLEMENTED
|
||||
case VERIFICATION_ANSWER_PHONE_CALL = 'verificationAnswerPhoneCall'; // NOT IMPLEMENTED
|
||||
|
||||
case VERIFICATION_GET_IMAGE_CAPTCHA = 'verificationGetImageCaptcha';
|
||||
case VERIFICATION_ANSWER_IMAGE_CAPTCHA = 'verificationAnswerImageCaptcha';
|
||||
|
||||
case VERIFICATION_GET_TEXT_CAPTCHA = 'verificationGetTextCaptcha'; // NOT IMPLEMENTED
|
||||
case VERIFICATION_ANSWER_TEXT_CAPTCHA = 'verificationAnswerTextCaptcha'; // NOT IMPLEMENTED
|
||||
|
||||
case VERIFICATION_GET_EXTERNAL_URL = 'verificationGetExternalUrl'; // NOT IMPLEMENTED
|
||||
case VERIFICATION_ANSWER_EXTERNAL_URL = 'verificationAnswerExternalUrl'; // NOT IMPLEMENTED
|
||||
|
||||
case VERIFICATION_PASSWORD_AUTHENTICATION = 'verificationPasswordAuthentication';
|
||||
case VERIFICATION_OTP_AUTHENTICATION = 'verificationOtpAuthentication';
|
||||
|
||||
|
@ -85,16 +75,11 @@
|
|||
case SETTINGS_DELETE_PASSWORD = 'settingsDeletePassword';
|
||||
case SETTINGS_SET_OTP = 'settingsSetOtp';
|
||||
case SETTINGS_DELETE_OTP = 'settingsDeleteOtp';
|
||||
case SETTINGS_SET_DISPLAY_NAME = 'settingsSetDisplayName';
|
||||
case SETTINGS_DELETE_DISPLAY_NAME = 'settingsDeleteDisplayName';
|
||||
case SETTINGS_SET_DISPLAY_PICTURE = 'settingsSetDisplayPicture';
|
||||
case SETTINGS_DELETE_DISPLAY_PICTURE = 'settingsDeleteDisplayPicture';
|
||||
case SETTINGS_SET_EMAIL = 'settingsSetEmail';
|
||||
case SETTINGS_DELETE_EMAIL = 'settingsDeleteEmail';
|
||||
case SETTINGS_SET_PHONE = 'settingsSetPhone';
|
||||
case SETTINGS_DELETE_PHONE = 'settingsDeletePhone';
|
||||
case SETTINGS_SET_BIRTHDAY = 'settingsSetBirthday';
|
||||
case SETTINGS_DELETE_BIRTHDAY = 'settingsDeleteBirthday';
|
||||
case SETTINGS_ADD_INFORMATION_FIELD = 'settingsAddInformationField';
|
||||
case SETTINGS_GET_INFORMATION_FIELDS = 'settingsGetInformationFields';
|
||||
case SETTINGS_UPDATE_INFORMATION_FIELD = 'settingsUpdateInformationField';
|
||||
case SETTINGS_DELETE_INFORMATION_FIELD = 'settingsDeleteInformationField';
|
||||
case SETTINGS_UPDATE_INFORMATION_PRIVACY = 'settingsUpdateInformationPrivacy';
|
||||
|
||||
case SETTINGS_ADD_SIGNING_KEY = 'settingsAddSigningKey';
|
||||
case SETTINGS_GET_SIGNING_KEYS = 'settingsGetSigningKeys';
|
||||
|
@ -138,16 +123,14 @@
|
|||
self::SETTINGS_SET_PASSWORD => SettingsSetPassword::execute($request, $rpcRequest),
|
||||
self::SETTINGS_UPDATE_PASSWORD => SettingsUpdatePassword::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_PASSWORD => SettingsDeletePassword::execute($request, $rpcRequest),
|
||||
self::SETTINGS_SET_DISPLAY_NAME => SettingsSetDisplayName::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_DISPLAY_NAME => SettingsDeleteDisplayName::execute($request, $rpcRequest),
|
||||
self::SETTINGS_SET_DISPLAY_PICTURE => SettingsSetDisplayPicture::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_DISPLAY_PICTURE => SettingsDeleteDisplayPicture::execute($request, $rpcRequest),
|
||||
self::SETTINGS_SET_EMAIL => SettingsSetEmailAddress::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_EMAIL => SettingsDeleteEmailAddress::execute($request, $rpcRequest),
|
||||
self::SETTINGS_SET_PHONE => SettingsSetPhoneNumber::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_PHONE => SettingsDeletePhoneNumber::execute($request, $rpcRequest),
|
||||
self::SETTINGS_SET_BIRTHDAY => SettingsSetBirthday::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_BIRTHDAY => SettingsDeleteBirthday::execute($request, $rpcRequest),
|
||||
self::SETTINGS_SET_OTP => SettingsSetOtp::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_OTP => SettingsDeleteOtp::execute($request, $rpcRequest),
|
||||
|
||||
self::SETTINGS_ADD_INFORMATION_FIELD => SettingsAddInformationField::execute($request, $rpcRequest),
|
||||
self::SETTINGS_GET_INFORMATION_FIELDS => SettingsGetInformationFields::execute($request, $rpcRequest),
|
||||
self::SETTINGS_UPDATE_INFORMATION_FIELD => SettingsUpdateInformationField::execute($request, $rpcRequest),
|
||||
self::SETTINGS_UPDATE_INFORMATION_PRIVACY => SettingsUpdateInformationPrivacy::execute($request, $rpcRequest),
|
||||
self::SETTINGS_DELETE_INFORMATION_FIELD => SettingsDeleteInformationField::execute($request, $rpcRequest),
|
||||
|
||||
self::SETTINGS_ADD_SIGNING_KEY => SettingsAddSigningKey::execute($request, $rpcRequest),
|
||||
self::SETTINGS_GET_SIGNING_KEYS => SettingsGetSigningKeys::execute($request, $rpcRequest),
|
||||
|
@ -277,14 +260,14 @@
|
|||
$methods = [
|
||||
self::SETTINGS_ADD_SIGNING_KEY,
|
||||
self::SETTINGS_GET_SIGNING_KEYS,
|
||||
self::SETTINGS_SET_DISPLAY_NAME,
|
||||
self::SETTINGS_SET_DISPLAY_PICTURE,
|
||||
self::SETTINGS_ADD_INFORMATION_FIELD,
|
||||
self::SETTINGS_GET_INFORMATION_FIELDS,
|
||||
self::SETTINGS_UPDATE_INFORMATION_FIELD,
|
||||
self::SETTINGS_UPDATE_INFORMATION_PRIVACY,
|
||||
self::SETTINGS_DELETE_INFORMATION_FIELD,
|
||||
self::SETTINGS_SET_PASSWORD,
|
||||
self::SETTINGS_UPDATE_PASSWORD,
|
||||
self::SETTINGS_SET_OTP,
|
||||
self::SETTINGS_SET_EMAIL,
|
||||
self::SETTINGS_SET_PHONE,
|
||||
self::SETTINGS_SET_BIRTHDAY,
|
||||
self::RESOLVE_PEER,
|
||||
|
||||
self::ADDRESS_BOOK_ADD_CONTACT,
|
||||
|
@ -292,48 +275,6 @@
|
|||
self::ADDRESS_BOOK_GET_CONTACTS,
|
||||
];
|
||||
|
||||
// Prevent the user from deleting their display name if it is required
|
||||
if(!Configuration::getRegistrationConfiguration()->isDisplayNameRequired())
|
||||
{
|
||||
$methods[] = self::SETTINGS_DELETE_DISPLAY_NAME;
|
||||
}
|
||||
|
||||
// Prevent the user from deleting their password if it is required
|
||||
if(!Configuration::getRegistrationConfiguration()->isPasswordRequired())
|
||||
{
|
||||
$methods[] = self::SETTINGS_DELETE_PASSWORD;
|
||||
}
|
||||
|
||||
// Prevent the user from deleting their display picture if it is required
|
||||
if(!Configuration::getRegistrationConfiguration()->isDisplayPictureRequired())
|
||||
{
|
||||
$methods[] = self::SETTINGS_DELETE_DISPLAY_PICTURE;
|
||||
}
|
||||
|
||||
// Prevent the user from deleting their OTP if it is required
|
||||
if(!Configuration::getRegistrationConfiguration()->isOtpRequired())
|
||||
{
|
||||
$methods[] = self::SETTINGS_DELETE_OTP;
|
||||
}
|
||||
|
||||
// Prevent the user from deleting their Phone Number if it is required
|
||||
if(!Configuration::getRegistrationConfiguration()->isPhoneNumberRequired())
|
||||
{
|
||||
$methods[] = self::SETTINGS_DELETE_PHONE;
|
||||
}
|
||||
|
||||
// Prevent the user from deleting their email address if it is required
|
||||
if(!Configuration::getRegistrationConfiguration()->isEmailAddressRequired())
|
||||
{
|
||||
$methods[] = self::SETTINGS_DELETE_EMAIL;
|
||||
}
|
||||
|
||||
// Prevent the user from deleting their birthday if it is required
|
||||
if(!Configuration::getRegistrationConfiguration()->isBirthdayRequired())
|
||||
{
|
||||
$methods[] = self::SETTINGS_DELETE_BIRTHDAY;
|
||||
}
|
||||
|
||||
return $methods;
|
||||
}
|
||||
|
||||
|
@ -391,33 +332,18 @@
|
|||
}
|
||||
|
||||
// If the flag `SET_DISPLAY_NAME` is set, then the user has to set a display name
|
||||
if($session->flagExists(SessionFlags::SET_DISPLAY_NAME))
|
||||
if($session->flagExists([
|
||||
SessionFlags::SET_DISPLAY_NAME,
|
||||
SessionFlags::SET_FIRST_NAME,
|
||||
SessionFlags::SET_MIDDLE_NAME,
|
||||
SessionFlags::SET_LAST_NAME,
|
||||
SessionFlags::SET_BIRTHDAY,
|
||||
SessionFlags::SET_PHONE,
|
||||
SessionFlags::SET_EMAIL,
|
||||
SessionFlags::SET_URL
|
||||
]))
|
||||
{
|
||||
$methods[] = self::SETTINGS_SET_DISPLAY_NAME;
|
||||
}
|
||||
|
||||
// If the flag `SET_DISPLAY_PICTURE` is set, then the user has to set a display picture
|
||||
if($session->flagExists(SessionFlags::SET_DISPLAY_PICTURE))
|
||||
{
|
||||
$methods[] = self::SETTINGS_SET_DISPLAY_PICTURE;
|
||||
}
|
||||
|
||||
// If the flag `SET_EMAIL` is set, then the user has to set an email address
|
||||
if($session->flagExists(SessionFlags::SET_EMAIL))
|
||||
{
|
||||
$methods[] = self::SETTINGS_SET_EMAIL;
|
||||
}
|
||||
|
||||
// If the flag `SET_PHONE` is set, then the user has to set a phone number
|
||||
if($session->flagExists(SessionFlags::SET_PHONE))
|
||||
{
|
||||
$methods[] = self::SETTINGS_SET_PHONE;
|
||||
}
|
||||
|
||||
// If the flag `SET_BIRTHDAY` is set, then the user has to set a birthday
|
||||
if($session->flagExists(SessionFlags::SET_BIRTHDAY))
|
||||
{
|
||||
$methods[] = self::SETTINGS_SET_BIRTHDAY;
|
||||
$methods[] = self::SETTINGS_ADD_INFORMATION_FIELD;
|
||||
}
|
||||
|
||||
return $methods;
|
||||
|
|
71
src/Socialbox/Enums/Types/InformationFieldName.php
Normal file
71
src/Socialbox/Enums/Types/InformationFieldName.php
Normal file
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
namespace Socialbox\Enums\Types;
|
||||
|
||||
enum InformationFieldName : string
|
||||
{
|
||||
/**
|
||||
* The display name of the peer
|
||||
*/
|
||||
case DISPLAY_NAME = 'DISPLAY_NAME';
|
||||
|
||||
/**
|
||||
* The display picture of the peer, the value is a resource ID hosted on the server
|
||||
*/
|
||||
case DISPLAY_PICTURE = 'DISPLAY_PICTURE';
|
||||
|
||||
/**
|
||||
* The first name of the peer
|
||||
*/
|
||||
case FIRST_NAME = 'FIRST_NAME';
|
||||
|
||||
/**
|
||||
* The middle name of the peer
|
||||
*/
|
||||
case MIDDLE_NAME = 'MIDDLE_NAME';
|
||||
|
||||
/**
|
||||
* The last name of the peer
|
||||
*/
|
||||
case LAST_NAME = 'LAST_NAME';
|
||||
|
||||
/**
|
||||
* The email address of the peer
|
||||
*/
|
||||
case EMAIL_ADDRESS = 'EMAIL_ADDRESS';
|
||||
|
||||
/**
|
||||
* The phone number of the peer
|
||||
*/
|
||||
case PHONE_NUMBER = 'PHONE_NUMBER';
|
||||
|
||||
/**
|
||||
* The birthday of the peer
|
||||
*/
|
||||
case BIRTHDAY = 'BIRTHDAY';
|
||||
|
||||
/**
|
||||
* The peer's personal/public URL
|
||||
*/
|
||||
case URL = 'URL';
|
||||
|
||||
/**
|
||||
* Validates the value of the field
|
||||
*
|
||||
* @param string $value The value to validate
|
||||
* @return bool Returns true if the value is valid, false otherwise
|
||||
*/
|
||||
public function validate(string $value): bool
|
||||
{
|
||||
return match ($this)
|
||||
{
|
||||
InformationFieldName::DISPLAY_NAME => strlen($value) >= 3 && strlen($value) <= 50,
|
||||
InformationFieldName::LAST_NAME, InformationFieldName::MIDDLE_NAME, InformationFieldName::FIRST_NAME => strlen($value) >= 2 && strlen($value) <= 50,
|
||||
InformationFieldName::EMAIL_ADDRESS => filter_var($value, FILTER_VALIDATE_EMAIL),
|
||||
InformationFieldName::PHONE_NUMBER => preg_match('/^\+?[0-9]{1,3}-?[0-9]{3}-?[0-9]{3}-?[0-9]{4}$/', $value),
|
||||
InformationFieldName::BIRTHDAY => preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $value),
|
||||
InformationFieldName::URL => filter_var($value, FILTER_VALIDATE_URL),
|
||||
default => true,
|
||||
};
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue