ID ) || ! empty( $user->user_email ) || ! $errors->get_error_messages( 'empty_email' ) ) { return; } foreach ( array( 'phone', 'vk', 'yandex', 'max' ) as $p ) { if ( '' !== (string) get_user_meta( $user->ID, PRPS_Users::meta_key( $p ), true ) ) { $errors->remove( 'empty_email' ); return; } } } public static function assets( $hook ) { if ( in_array( $hook, array( 'profile.php', 'user-edit.php' ), true ) ) { wp_enqueue_style( 'prps-admin', PRPS_URL . 'assets/css/admin.css', array(), PRPS_VERSION ); } } public static function render( WP_User $user ) { $own = get_current_user_id() === (int) $user->ID; echo '

' . esc_html__( 'Вход на сайт', 'propusk' ) . '

'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( $own && isset( $_GET['prps_linked'] ) ) { echo '

' . esc_html__( 'Способ входа привязан.', 'propusk' ) . '

'; } if ( $own ) { $err = PRPS_OAuth::take_error(); if ( '' !== $err ) { echo '

' . esc_html( $err ) . '

'; } } echo ''; $rows = array( 'phone' => PRPS_Phone::pretty( (string) get_user_meta( $user->ID, PRPS_Users::PHONE, true ) ) ); foreach ( array( 'vk', 'yandex', 'max' ) as $p ) { $rows[ $p ] = (string) get_user_meta( $user->ID, PRPS_Users::meta_key( $p ), true ); } $methods = PRPS_Settings::methods(); foreach ( $rows as $p => $value ) { if ( '' === $value && ! isset( $methods[ $p ] ) ) { continue; } echo ''; } echo ''; $linked = array_keys( array_filter( $rows ) ); if ( $own && array_diff_key( $methods, array_flip( $linked ) ) ) { echo '

' . esc_html__( 'Привяжите способ входа — после этого можно входить без пароля:', 'propusk' ) . '

'; echo '
' . PRPS_Login::widget( array( 'redirect' => admin_url( 'profile.php#prps-profile' ), 'context' => 'profile', 'skip' => $linked ) ) . '
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- собрано из экранированных частей. } } public static function unlink() { $user_id = isset( $_GET['user'] ) ? absint( $_GET['user'] ) : 0; $provider = isset( $_GET['provider'] ) ? sanitize_key( wp_unslash( $_GET['provider'] ) ) : ''; check_admin_referer( 'prps_unlink_' . $user_id ); if ( ! $user_id || ! current_user_can( 'edit_user', $user_id ) || ! in_array( $provider, array( 'phone', 'vk', 'yandex', 'max' ), true ) ) { wp_die( esc_html__( 'Недостаточно прав', 'propusk' ) ); } PRPS_Users::unlink( $user_id, $provider ); wp_safe_redirect( ( get_current_user_id() === $user_id ? admin_url( 'profile.php' ) : admin_url( 'user-edit.php?user_id=' . $user_id ) ) . '#prps-profile' ); exit; } }