Лучший способ выполнить аутентификацию телефона firebase на стороне клиента и создать учетную запись в базе данных на сервере - PullRequest
1 голос
/ 13 июля 2020

Моя форма:

<form class="signup" >
   <p style="display:inline-block;">Signup or </p>
   <p class="showcursor"style="display:inline-block;color:orange;" onclick="showlogin()">login to your account</p>
   </br>
   <input name="phone" type="text" placeholder="Enter Phone number">
   <input name="name" type="text" placeholder="Enter name">
   <input name="email" type="text" placeholder="Enter email">
   <input name="password1" type="text" placeholder="Enter password">
   <input name="password2" type="text" placeholder="Retype password">
   <button class="signin" id="otp" type="button" onclick="signup()" style="display:inline-block;"><b>Continue</b></button>
</form>

Мои сценарии:

function signup() {

    var formdata = new FormData(document.getElementsByClassName("signup")[0]);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'cartserver.php', true); //Here I check if the phone number already exists

    // Set up handler for when request finishes
    xhr.onload = function() {
        if (xhr.status === 200) {
            //File(s) uploaded

            var arr = JSON.parse(this.responseText);

            if (arr[0] == 1) {
                onSignInSubmit(arr[2]); //here passing the phone number
            } else {
                alert(arr[1]);
            }

        } else {
            alert("Check your connection!");
        }
    };
    formdata.append("id", 1);

    xhr.send(formdata);


}



function onSignInSubmit(phone) {
    var phoneNumber = phone;
    var appVerifier = window.recaptchaVerifier;
    firebase
        .auth()
        .signInWithPhoneNumber(phoneNumber, appVerifier)
        .then(function(confirmationResult) {
            window.confirmationResult = confirmationResult;
        })
        .catch(function(error) {
            console.log(error);
        });
}

function submitPhoneNumberAuthCode() { //when user submits the code
    var code = document.getElementById("code").value;
    confirmationResult
        .confirm(code)
        .then(function(result) {

                var formdata = new FormData(document.getElementsByClassName("signup")[0]);
                var xhr = new XMLHttpRequest();
                xhr.open('POST', 'createaccount.php', true); //create his account




                xhr.onload = function() {
                    if (xhr.status === 200) {
                        //File(s) uploaded
                        alert(this.responseText);

                    }
                };
                xhr.send(formdata);
            }
            .catch(function(error) {
                console.log(error);
            });
        }

Моя проблема в том, что предположим, что пользователь вводит правильный код, но при этом меняет номер телефона, затем учетную запись создается с другим номером телефона, также если пользователь изменяет javascript и помещает код создания учетной записи в функцию перехвата ошибок, учетная запись создается снова.

...