Refactor and enhance session flags, enums, and RPC methods.
This commit is contained in:
parent
de07928689
commit
01253d5115
6 changed files with 506 additions and 98 deletions
|
@ -12,18 +12,63 @@
|
|||
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
|
||||
|
||||
// Verification, verification requirements
|
||||
case VER_PRIVACY_POLICY = 'VER_PRIVACY_POLICY'; // Peer has to accept the privacy policy
|
||||
case VER_TERMS_OF_SERVICE = 'VER_TERMS_OF_SERVICE'; // Peer has to accept the terms of service
|
||||
case VER_COMMUNITY_GUIDELINES = 'VER_COMMUNITY_GUIDELINES'; // Peer has to acknowledge the community guidelines
|
||||
case VER_EMAIL = 'VER_EMAIL'; // Peer has to verify their email
|
||||
case VER_SMS = 'VER_SMS'; // Peer has to verify their phone number
|
||||
case VER_PHONE_CALL = 'VER_PHONE_CALL'; // Peer has to verify their phone number via a phone call
|
||||
case VER_IMAGE_CAPTCHA = 'VER_IMAGE_CAPTCHA'; // Peer has to solve an image captcha
|
||||
case VER_TEXT_CAPTCHA = 'VER_TEXT_CAPTCHA'; // Peer has to solve a text captcha
|
||||
case VER_EXTERNAL_URL = 'VER_EXTERNAL_URL'; // Peer has to visit an external URL
|
||||
|
||||
// Login, require fields
|
||||
case VER_PASSWORD = 'VER_PASSWORD'; // Peer has to enter their password
|
||||
case VER_OTP = 'VER_OTP'; // Peer has to enter their OTP
|
||||
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
|
||||
|
||||
/**
|
||||
* Determines whether the current value corresponds to a registration method flag.
|
||||
*
|
||||
* @return bool True if the value is a registration method flag, otherwise false.
|
||||
*/
|
||||
public function isRegistrationFlag(): bool
|
||||
{
|
||||
return in_array($this->value, [
|
||||
self::SET_PASSWORD->value,
|
||||
self::SET_OTP->value,
|
||||
self::SET_DISPLAY_NAME->value,
|
||||
self::VER_PRIVACY_POLICY->value,
|
||||
self::VER_TERMS_OF_SERVICE->value,
|
||||
self::VER_EMAIL->value,
|
||||
self::VER_SMS->value,
|
||||
self::VER_PHONE_CALL->value,
|
||||
self::VER_IMAGE_CAPTCHA->value
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether the current value corresponds to an authentication method flag.
|
||||
*
|
||||
* @return bool True if the value is an authentication method flag, otherwise false.
|
||||
*/
|
||||
public function isAuthenticationFlag(): bool
|
||||
{
|
||||
return in_array($this->value, [
|
||||
self::VER_IMAGE_CAPTCHA->value,
|
||||
self::VER_PASSWORD->value,
|
||||
self::VER_OTP->value
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an array of SessionFlags to a comma-separated string of their values.
|
||||
|
@ -60,13 +105,12 @@
|
|||
*/
|
||||
public static function isComplete(array $flags): bool
|
||||
{
|
||||
$flags = array_map(function ($flag) {
|
||||
return is_string($flag) ? SessionFlags::from($flag) : $flag;
|
||||
}, $flags);
|
||||
|
||||
// todo: refactor this to use the isRegistrationFlag & isAuthenticationFlag methods
|
||||
$flags = array_map(function ($flag) {return is_string($flag) ? SessionFlags::from($flag) : $flag;}, $flags);
|
||||
$flags = array_map(fn(SessionFlags $flag) => $flag->value, $flags);
|
||||
|
||||
if (in_array(SessionFlags::REGISTRATION_REQUIRED->value, $flags)) {
|
||||
if (in_array(SessionFlags::REGISTRATION_REQUIRED->value, $flags))
|
||||
{
|
||||
$flagsToComplete = [
|
||||
SessionFlags::SET_PASSWORD->value,
|
||||
SessionFlags::SET_OTP->value,
|
||||
|
@ -80,7 +124,9 @@
|
|||
];
|
||||
return !array_intersect($flagsToComplete, $flags); // Check if the intersection is empty
|
||||
}
|
||||
if (in_array(SessionFlags::AUTHENTICATION_REQUIRED->value, $flags)) {
|
||||
|
||||
if (in_array(SessionFlags::AUTHENTICATION_REQUIRED->value, $flags))
|
||||
{
|
||||
$flagsToComplete = [
|
||||
SessionFlags::VER_PASSWORD->value,
|
||||
SessionFlags::VER_OTP->value
|
||||
|
@ -88,6 +134,7 @@
|
|||
return !array_intersect($flagsToComplete, $flags); // Check if the intersection is empty
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,11 +26,34 @@
|
|||
case ACCEPT_PRIVACY_POLICY = 'acceptPrivacyPolicy';
|
||||
case GET_TERMS_OF_SERVICE = 'getTermsOfService';
|
||||
case ACCEPT_TERMS_OF_SERVICE = 'acceptTermsOfService';
|
||||
case GET_COMMUNITY_GUIDELINES = 'getCommunityGuidelines';
|
||||
case ACCEPT_COMMUNITY_GUIDELINES = 'acceptCommunityGuidelines';
|
||||
|
||||
case VERIFICATION_EMAIL = 'verificationEmail';
|
||||
case VERIFICATION_ANSWER_EMAIL = 'verificationAnswerEmail';
|
||||
|
||||
case VERIFICATION_SMS = 'verificationSms';
|
||||
case VERIFICATION_ANSWER_SMS = 'verificationAnswerSms';
|
||||
|
||||
case VERIFICATION_PHONE_CALL = 'verificationPhoneCall';
|
||||
case VERIFICATION_ANSWER_PHONE_CALL = 'verificationAnswerPhoneCall';
|
||||
|
||||
case VERIFICATION_GET_IMAGE_CAPTCHA = 'verificationGetImageCaptcha';
|
||||
case VERIFICATION_ANSWER_IMAGE_CAPTCHA = 'verificationAnswerImageCaptcha';
|
||||
|
||||
case VERIFICATION_GET_TEXT_CAPTCHA = 'verificationGetTextCaptcha';
|
||||
case VERIFICATION_ANSWER_TEXT_CAPTCHA = 'verificationAnswerTextCaptcha';
|
||||
|
||||
case VERIFICATION_GET_EXTERNAL_URL = 'verificationGetExternalUrl';
|
||||
case VERIFICATION_ANSWER_EXTERNAL_URL = 'verificationAnswerExternalUrl';
|
||||
|
||||
case SETTINGS_SET_PASSWORD = 'settingsSetPassword';
|
||||
case SETTINGS_SET_OTP = 'settingsSetOtp';
|
||||
case SETTINGS_SET_DISPLAY_NAME = 'settingsSetDisplayName';
|
||||
case SETTINGS_SET_DISPLAY_PICTURE = 'settingsSetDisplayPicture';
|
||||
case SETTINGS_SET_EMAIL = 'settingsSetEmail';
|
||||
case SETTINGS_SET_PHONE = 'settingsSetPhone';
|
||||
case SETTINGS_SET_BIRTHDAY = 'settingsSetBirthday';
|
||||
|
||||
/**
|
||||
* Executes the appropriate operation based on the current context and requests provided.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue