У меня есть магазин в 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