Installer
3 years ago
AdminNotices.php
2 months ago
AjaxHandler.php
1 year ago
Autologin.php
9 months ago
BlockRegistrations.php
10 months ago
BuddyPressBbPress.php
3 years ago
DisableConcurrentLogins.php
2 years ago
EditUserProfile.php
5 months ago
ExtensionManager.php
1 month ago
FileUploader.php
3 months ago
FormPreviewHandler.php
5 months ago
FormRepository.php
1 year ago
FormShortcodeDefaults.php
1 month ago
GDPR.php
3 years ago
Geolocation.php
3 years ago
GlobalSiteAccess.php
3 years ago
ImageUploader.php
1 year ago
LoginAuth.php
1 year ago
Miscellaneous.php
3 years ago
ModifyRedirectDefaultLinks.php
18 hours ago
PPRESS_Session.php
1 year ago
PROFILEPRESS_sql.php
1 year ago
PasswordReset.php
1 year ago
ProfileUrlRewrite.php
4 years ago
RegistrationAuth.php
2 weeks ago
SendEmail.php
3 years ago
ShortcodeThemeFactory.php
5 years ago
UserAvatar.php
1 year ago
UserSignupLocationListingPage.php
3 years ago
UsernameEmailRestrictLogin.php
4 years ago
WPProfileFieldParserTrait.php
1 year ago
WelcomeEmailAfterSignup.php
1 year ago
default-email-template.php
1 year ago
index.php
3 years ago
BlockRegistrations.php
96 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ProfilePress\Core\Classes; |
| 4 | |
| 5 | class BlockRegistrations |
| 6 | { |
| 7 | public static function init() |
| 8 | { |
| 9 | add_filter('ppress_registration_validation', [__CLASS__, 'do_action'], 999999, 3); |
| 10 | add_filter('ppress_checkout_registration_validation', function ($error_bucket, $user_data) { |
| 11 | return self::do_action($error_bucket, 0, $user_data); |
| 12 | }, 999999, 2); |
| 13 | } |
| 14 | |
| 15 | /** |
| 16 | * @param string $user_email the user email |
| 17 | * @param array $bucket the array of emails to check against |
| 18 | * |
| 19 | * @return bool |
| 20 | */ |
| 21 | private static function is_email_matches($user_email, $bucket) |
| 22 | { |
| 23 | $explode = explode('@', $user_email); |
| 24 | |
| 25 | $email_domain = $explode[1]; |
| 26 | |
| 27 | preg_match('/.+@[^.]+\.(.+)/', $user_email, $matches); |
| 28 | $domain_pathinfo = pathinfo($email_domain); |
| 29 | |
| 30 | $email_tld = $matches[1] ?? $domain_pathinfo['extension'] ?? ''; |
| 31 | |
| 32 | return in_array($user_email, $bucket) || |
| 33 | in_array('@' . $email_domain, $bucket) || |
| 34 | in_array('.' . $email_tld, $bucket); |
| 35 | } |
| 36 | |
| 37 | public static function do_action($reg_errors, $form_id, $user_data) |
| 38 | { |
| 39 | if ( ! empty($user_data['user_email'])) { |
| 40 | |
| 41 | $user_email = $user_data['user_email']; |
| 42 | |
| 43 | $blocked_error_message = apply_filters( |
| 44 | 'ppress_blocked_user_email_error_message', |
| 45 | __('The email address you are registering with is not supported.', 'wp-user-avatar'), |
| 46 | $user_data, $form_id |
| 47 | ); |
| 48 | |
| 49 | $blocked_email_addresses_list = ppress_settings_by_key('blocked_email_addresses', ''); |
| 50 | |
| 51 | $allowed_email_addresses_list = ppress_settings_by_key('allowed_email_addresses', ''); |
| 52 | |
| 53 | if (empty($blocked_email_addresses_list) && ! empty($allowed_email_addresses_list)) { |
| 54 | |
| 55 | $allowed_email_addresses = array_map( |
| 56 | 'trim', |
| 57 | explode("\n", $allowed_email_addresses_list) |
| 58 | ); |
| 59 | |
| 60 | |
| 61 | if ( ! empty($allowed_email_addresses)) { |
| 62 | |
| 63 | if ( ! self::is_email_matches($user_email, $allowed_email_addresses)) { |
| 64 | $reg_errors->add('blocked_email_address', $blocked_error_message); |
| 65 | } |
| 66 | } |
| 67 | } |
| 68 | |
| 69 | if ( ! empty($blocked_email_addresses_list) && ! empty($allowed_email_addresses_list)) { |
| 70 | |
| 71 | $allowed_email_addresses = array_map('trim', explode("\n", $allowed_email_addresses_list)); |
| 72 | |
| 73 | if ( ! empty($allowed_email_addresses)) { |
| 74 | |
| 75 | if (self::is_email_matches($user_email, $allowed_email_addresses)) { |
| 76 | return $reg_errors; |
| 77 | } |
| 78 | } |
| 79 | } |
| 80 | |
| 81 | if ( ! empty($blocked_email_addresses_list)) { |
| 82 | |
| 83 | $blocked_email_addresses = array_map('trim', explode("\n", $blocked_email_addresses_list)); |
| 84 | |
| 85 | if ( ! empty($blocked_email_addresses)) { |
| 86 | |
| 87 | if (self::is_email_matches($user_email, $blocked_email_addresses)) { |
| 88 | $reg_errors->add('blocked_email_address', $blocked_error_message); |
| 89 | } |
| 90 | } |
| 91 | } |
| 92 | } |
| 93 | |
| 94 | return $reg_errors; |
| 95 | } |
| 96 | } |