| 381 | | if ( $banned_names && is_array( $banned_names ) ) { |
| 382 | | list( $email_local_part, $email_domain ) = explode( '@', $user_email ); |
| | 380 | /** |
| | 381 | * Checks an email address against a whitelist of allowed domains. |
| | 382 | * |
| | 383 | * This function checks against the Limited Email Domains list |
| | 384 | * at wp-admin/network/settings.php. The check is only run on |
| | 385 | * self-registrations; user creation at wp-admin/network/users.php |
| | 386 | * bypasses this check. |
| | 387 | * |
| | 388 | * @since 3.7 |
| | 389 | * |
| | 390 | * @param string $user_email The email provided by the user at registration. |
| | 391 | * @return bool Returns true when the email address is allowed. |
| | 392 | */ |
| | 393 | function is_email_address_allowed( $user_email ) { |
| | 394 | $allowed_names = get_site_option( 'limited_email_domains' ); |
| 384 | | foreach ( $banned_names as $banned_domain ) { |
| 385 | | if ( ! $banned_domain ) |
| | 396 | // Any address is allowed when no whitelist is present |
| | 397 | if ( empty( $allowed_names ) ) { |
| | 398 | $is_email_address_allowed = true; |
| | 399 | } else { |
| | 400 | $is_email_address_allowed = is_email_domain_in_list( $user_email, $allowed_names ); |
| | 401 | } |
| | 402 | |
| | 403 | return apply_filters( 'is_email_address_allowed', $is_email_address_allowed, $user_email ); |
| | 404 | } |
| | 405 | |
| | 406 | /** |
| | 407 | * Checks whether an email is on a whitelist/blacklist |
| | 408 | * |
| | 409 | * Used by is_email_address_unsafe() and is_email_address_allowed() to do |
| | 410 | * a wildcard-safe check of an email against an array of allowed/banned |
| | 411 | * domains. |
| | 412 | * |
| | 413 | * Any complete section of a URL (between the dots) can be represented by |
| | 414 | * a wildcard. Eg, 'test@foo.bar.com' will count as a match for '*.bar.com'. |
| | 415 | * |
| | 416 | * @since 3.7 |
| | 417 | * |
| | 418 | * @param string $email The email address being checked |
| | 419 | * @param array|string $domain_list Domains to check against |
| | 420 | * @return bool Returns true when the email matches one of the domains on |
| | 421 | * the list |
| | 422 | */ |
| | 423 | function is_email_domain_in_list( $email, $domain_list ) { |
| | 424 | if ( ! is_array( $domain_list ) ) { |
| | 425 | $domain_list = explode( "\n", $domain_list ); |
| | 426 | } |
| | 427 | |
| | 428 | $is_in_list = false; |
| | 429 | |
| | 430 | if ( $domain_list && is_array( $domain_list ) ) { |
| | 431 | list( $email_local_part, $email_domain ) = explode( '@', $email ); |
| | 432 | |
| | 433 | foreach ( $domain_list as $domain ) { |
| | 434 | if ( ! $domain ) { |
| 471 | | if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) { |
| 472 | | $emaildomain = substr( $user_email, 1 + strpos( $user_email, '@' ) ); |
| 473 | | if ( in_array( $emaildomain, $limited_email_domains ) == false ) |
| 474 | | $errors->add('user_email', __('Sorry, that email address is not allowed!')); |
| | 531 | $errors->add('user_email', __('Sorry, that email address is not allowed!')); |