WordPress Arka Uç – Özel Giriş Akışı

Forumlar WordPress Geliştirme WordPress Arka Uç – Özel Giriş Akışı

  • Post
    admin
    Anahtar yönetici

    Ne elde etmek istiyorum:
    Cep telefonu numarasına göre giriş yapın ve kullanıcı her giriş yaptığında numarasına bir OTP gönderilecektir. OTP hizmeti harici bir sunucuya bağlı, yani harici bir veritabanım var ve bu veritabanında oturum açma ve doğrulama uç noktaları var ve üzerinde etkinleştirilmiş bir OTP hizmeti var.

    Genel iş akışı şu şekildedir:

    1. kullanıcı telefon numarasını girer ve oturum açmayı tıklar.
    2. oturum açma uç noktasını tüketirse, bu uç nokta kullanıcının numarasına bir OTP gönderir.
    3. yanıt başarılı ise, OTP kodu alanını gösterin ve kullanıcı Kod alanını doldurup gönderdikten sonra.
    4. Doğrulama uç noktasını ateşleyin,
    5. yanıt başarılı olursa, o zaman onu WordPress’te oturum aç.

    Şimdiye kadar ne denedim:

    1- Formu HTML ve javascript üzerinde oluşturdu ve API uç noktalarını test etti. ancak kodu WordPress girişine nasıl bağlayacağımı çözemedim.

     //set up the verification API
                var settings = {
                  url: "https:------------------------------------/login/verify",
                  method: "POST",
                  timeout: 0,
                  headers: {
                    "Content-Type": "application/json",
                  },
                  data: JSON.stringify({
                    phoneNumber: tempPhone,
                    code: tempOTP,
                  }),
                };
    
                //-------fire verify api --------------------------
                $.ajax(settings)
                  .done(function (response) {
                    console.log("Can Login");
    
                    event.preventDefault();
    
                    //----------------------------Do WordPress Login............
    
    
                  })
                  .error(function (jqXHR) {
                    event.preventDefault();
                    console.log("failed");
                    ErrorHandule(jqXHR);
                  });
              });
    

    2- JetformBuilder’ı kullanarak yeni bir form oluşturmaya çalıştım ve onu forma bağlayan bir eylem ekledim, sadece bu form üzerinde test etmeye başlamak için ama sanırım komut dosyası çalışmıyor.

    // Login hoocks------------------------------------------------------------------
    add_action( 'jet-form-builder/custom-action/Send_OTP', function() {
    
        // Create a new form using JetFormsBuilder.
        $form = new Jet_Form( 'test_login' );
    
        // Add a phone number field to the form.
        $form->add_field( array(
            'name' => 'phone_number',
            'label' => 'Phone Number',
            'type' => 'text',
        ) );
    
        // Add a submit button to the form.
        $form->add_submit_button( 'Login' );
    
        // Hook the form submission to the custom function.
        $form->add_action( 'jet_form_submit', 'custom_login_form_submit' );
    
    } );
    
    
    function custom_login_form_submit( $form ) {
    
        // Get the phone number from the form submission.
        $phone_number = $form->get_field_value( 'phone_number' );
    
        // Make a call to the login endpoint on the external server.
        $response = wp_remote_post(
            'http://142.93.112.93:3000/auth/login/sendOTP',
            array(
                'body' => array(
                    'phone_number' => $phone_number,
                ),
            )
        );
    
        // Check if the response was successful.
        if ( wp_remote_retrieve_response_code( $response ) === 200 ) {
    
            // Get the OTP from the response.
            $otp = wp_remote_retrieve_body( $response );
    
            // Display an OTP field on the login form.
            $form->add_field( array(
                'name' => 'otp',
                'label' => 'OTP',
                'type' => 'text',
            ) );
    
        } else {
    
            // Display an error message.
            $form->add_error( 'Error logging in.' );
    
        }
    
    }
    
    if ( isset( $_POST['otp'] ) ) {
    
        // Make a call to the verify endpoint on the external server.
        $response = wp_remote_post(
            'https://example.com/api/verify',
            array(
                'body' => array(
                    'phone_number' => $phone_number,
                    'otp' => $_POST['otp'],
                ),
            )
        );
    
        // Check if the response was successful.
        if ( wp_remote_retrieve_response_code( $response ) === 200 ) {
    
            // Log the user into WordPress.
            wp_signon( array(
                'user_login' => $phone_number,
                'user_password' => null,
                'remember' => true,
            ) );
    
        } else {
    
            // Display an error message.
            echo 'Error verifying OTP.';
    
        }
    
    }
    
    

    1 için, işlevi nasıl kullanabilirim wp_signon bu bağlamda?

    2 için emin olmadığım birkaç şey var, mesela $form = new Jet_Form( 'test_login' ); `Jet_Form’ içine form adını girmeli miyim? veya form kimliği? veya başka bir şey? Belgelerine baktım ama çözemedim.

    Aşamadığım son bir mantıklı şey daha var, WordPress sadece kullanıcı adı veya e-posta ile giriş yapmamıza izin veriyorsa, telefon numarası ile giriş yapmayı nasıl mümkün hale getirebilirim??? ve hiç şifre yok mu?

  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.