WordPress.org

Make WordPress Core

Ticket #15706: multisite-fuzzy-limited-domains-15706.patch

File multisite-fuzzy-limited-domains-15706.patch, 1.9 KB (added by djcp, 7 years ago)
  • wp-includes/ms-functions.php

     
    519519        $limited_email_domains = get_site_option( 'limited_email_domains' );
    520520        if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) {
    521521                $emaildomain = substr( $user_email, 1 + strpos( $user_email, '@' ) );
    522                 if ( in_array( $emaildomain, $limited_email_domains ) == false )
     522                $matched_domain = false;
     523                foreach( $limited_email_domains as $limited_domain ) {
     524                        if( substr( $limited_domain, 0, 2 ) == '*.' ){
     525                                //Allow all subdomains for this limited domain. Nick off the '*.' and do a more expansive match.
     526                                $local_limited_domain = substr( $limited_domain, 2 );
     527                                if( substr( $emaildomain, strlen( $emaildomain ) - strlen( $local_limited_domain ) ) == $local_limited_domain ) {
     528                                        $matched_domain = true;
     529                                } 
     530                        } else {
     531                                // Direct domain match
     532                                if ( $emaildomain == $limited_domain )
     533                                        $matched_domain = true;
     534                        }
     535                }
     536                if( $matched_domain == false ) {
    523537                        $errors->add('user_email', __('Sorry, that email address is not allowed!'));
     538                }
    524539        }
    525540
    526541        // Check if the username has been used already.
  • wp-admin/network/edit.php

     
    122122                        $limited_email = array();
    123123                        foreach ( (array) $limited_email_domains as $domain ) {
    124124                                        $domain = trim( $domain );
    125                                 if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) )
     125                                if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.\*])+$|', $domain ) )
    126126                                        $limited_email[] = trim( $domain );
    127127                        }
    128128                        update_site_option( 'limited_email_domains', $limited_email );