Ограничение входа пользователя по IP-адресу в Wordpress - PullRequest
0 голосов
/ 17 марта 2020

У меня есть магазин в Woocommerce, где у нескольких клиентов есть свои индивидуальные логины и пароли. Я хочу ограничить их вход в свою учетную запись магазина только с указанного IP-адреса c, и я не хочу, чтобы они входили из внешнего мира. Так, например, IP1 ---> связанный с User1 IP2 ---> связанный с User2 IP3 ---> связанный с User3 ... и так далее ... Таким образом, это означает, что Пользователь1 может войти в свою учетную запись магазина, только когда система обнаружит IP1 в качестве своего IP.

У меня есть функция, но она обнаруживает только 1 указанного c пользователя и 1 указанный c IP-адрес. Я хочу, чтобы эта функция была изменена для массива пользователей, связанных с массивом IP-адресов, но условие состоит в том, что определенный IP-адрес должен быть связан только с одним конкретным пользователем. Это означает, что это должно работать так: IP1-> связанный с User1 Это не должно работать, как показано ниже: IP1-> не должен разрешать вход в систему для User2 или User3 или User4 ... Аналогично, IP2-> не должен разрешать вход в систему для User1 или User 3 или User4 ... Ниже приведена функция:

/**
 * Validate IP Address During Authentication - For A Given User 
 */
add_filter( 'authenticate', function( $user )
{
    // Adjust to your needs:
    $allowed_user_ip        = '127.0.0.1';
    $ip_restricted_user_id  = 1;

    // Current user's IP address
    $current_user_ip = isset( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : null;

    // Nothing to do for valid IP address
    if( $current_user_ip === $allowed_user_ip )
        return $user;

    // Nothing to do for users that are not IP restricted 
    if( 
           $user instanceof \WP_User 
        && $user->ID > 0
        && $ip_restricted_user_id != $user->ID
    )   
        return $user;

    // Add an 'Invalid IP address' error
    if( is_wp_error( $user ) )
        $user->add( 
            'invalid_ip', 
            sprintf(
            '<strong>%s</strong>: %s',
            esc_html__( 'ERROR', 'mydomain' ),
            esc_html__( 'IP address is invalid.', 'mydomain' )
        )
    ); 
    // Create a new 'Invalid IP address' error
    else
        $user = new WP_Error(
            'invalid_ip', 
            sprintf(
                '<strong>%s</strong>: %s',
                esc_html__( 'ERROR', 'mydomain' ),
                esc_html__( 'IP address is invalid.', 'mydomain' )
            )
        ); 

    return $user;
}, 100 );

Любая помощь будет принята с благодарностью.

Спасибо, J

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...