Membuat OTP SMS Di Laravel : Firebase

Apa Itu OTP?

OTP adalah singkatan dari “One-Time Password”. Ini adalah sistem otentikasi yang memungkinkan pengguna untuk masuk ke jaringan atau layanan menggunakan kata sandi unik yang hanya dapat digunakan sekali. Sistem ini mencegah beberapa bentuk pencurian identitas dengan memastikan bahwa pasangan nama pengguna / kata sandi yang tertangkap tidak dapat digunakan kembali. Biasanya, nama pengguna pengguna tetap sama, dan kata sandi satu kali diganti setiap kali masuk 1. Kode sandi satu kali (OTP) adalah bentuk otentikasi yang kuat, memberikan perlindungan yang jauh lebih baik untuk eBanking, jaringan perusahaan, dan sistem lain yang mengandung data sensitive.

Apa itu Laravel?

Laravel adalah sebuah framework PHP yang menyediakan antarmuka yang mudah dan elegan untuk membuat dan menjalankan query database. Laravel dapat digunakan untuk melakukan sebagian besar operasi database di aplikasi Anda dan berfungsi dengan sempurna dengan semua sistem database yang didukung oleh Laravel. Laravel menggunakan binding parameter PDO untuk melindungi aplikasi Anda dari serangan injeksi SQL. Anda tidak perlu membersihkan atau menyaring string yang dikirimkan ke query builder sebagai binding query.

Langkah-Langkah :

  • Buat terlebih dahulu projek pada firebase nya
  • Setelah di buat langsung pilih authentication pada halaman firebase anda
  • Setelah itu langsung kita memilih phone karena kita mau ngirim otp melalui sms
  • Setup Controller nya untuk return view nya
<?php


namespace App\Http\Controllers;



use Illuminate\Http\Request;


class FirebaseController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        return view('firebase');
    }
}
  • Setelah Itu buat codingan return view nya dan setup js nya sesuai berikut
<html>
  <head>
    <title>Phone Number Authentication using Firebase In Laravel </title>
    <!-- CSS only -->
    <link
      rel="stylesheet"
      href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" />
    <!-- Js only -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  </head>
  <body>
    <div class="container">
      <div class="jumbotron">
        <div class="container text-center">
          <p>Phone Number Authentication using Firebase In Laravel</p>
        </div>
      </div>

      <div class="alert alert-danger" id="error" style="display: none"></div>
      <div class="card">
        <div class="card-header">Enter Phone Number</div>
        <div class="card-body">
          <div
            class="alert alert-success"
            id="sentSuccess"
            style="display: none"></div>
          <form>
            <label>Phone Number:</label>
            <input
              type="text"
              id="number"
              class="form-control"
              placeholder="+91********" />
            <div id="recaptcha-container"></div>
            <button
              type="button"
              class="btn btn-success"
              onclick="phoneSendAuth();">
              SendCode
            </button>
          </form>
        </div>
      </div>
      <div class="card" style="margin-top: 10px">
        <div class="card-header">Enter Verification code</div>
        <div class="card-body">
          <div
            class="alert alert-success"
            id="successRegsiter"
            style="display: none"></div>
          <form>
            <input
              type="text"
              id="verificationCode"
              class="form-control"
              placeholder="Enter verification code" />
            <button
              type="button"
              class="btn btn-success"
              onclick="codeverify();">
              Verify code
            </button>
          </form>
        </div>
      </div>
    </div>
    <script src="https://www.gstatic.com/firebasejs/6.0.2/firebase.js"></script>
    <script>
      var firebaseConfig = {
        apiKey: "API KEY NYA DISINI ",
        authDomain: "AUTH DOMAIN DISINI",
        projectId: "PROJECT ID",
        storageBucket: "storage bucket disini",
        messagingSenderId: "740488583372",
        appId: "1:740488583372:web:0ba73a70f7b8b2d4b80a69",
        measurementId: "G-0RHPYTR95S",
      };

      firebase.initializeApp(firebaseConfig);
    </script>
    <script type="text/javascript">
      window.onload = function () {
        render();
      };

      function render() {
        window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier(
          "recaptcha-container"
        );
        recaptchaVerifier.render();
      }

      function phoneSendAuth() {
        var number = $("#number").val();

        firebase
          .auth()
          .signInWithPhoneNumber(number, window.recaptchaVerifier)
          .then(function (confirmationResult) {
            window.confirmationResult = confirmationResult;
            coderesult = confirmationResult;
            console.log(coderesult);

            $("#sentSuccess").text("Message Sent Successfully.");
            $("#sentSuccess").show();
          })
          .catch(function (error) {
            $("#error").text(error.message);
            $("#error").show();
          });
      }

      function codeverify() {
        var code = $("#verificationCode").val();

        coderesult
          .confirm(code)
          .then(function (result) {
            var user = result.user;

            $("#successRegsiter").text("you are register Successfully.");
            $("#successRegsiter").show();
          })
          .catch(function (error) {
            $("#error").text(error.message);
            $("#error").show();
          });
      }
    </script>
  </body>
</html>

Subscribe

Related articles

Memahami Microservices dengan Laravel

Microservices adalah pendekatan dalam pengembangan perangkat lunak di mana...

Tailwind CSS: Panduan Lengkap dan Keunggulannya

Tailwind CSS adalah salah satu framework CSS yang semakin...

Bagaimana sih cara menjadi Web Developer?

Memulai Karier sebagai Web Developer Meskipun sudah mengetahui berbagai keterampilan...

Laravel 11 : Send Mail by Gmail SMTP

Mengirim Email Menggunakan Gmail SMTP di Laravel 11 Mengirim email...

Cara mendapatkan Kredensial token email

Mendapatkan Credential Token Email di Laravel Dalam aplikasi web modern,...

LEAVE A REPLY

Please enter your comment!
Please enter your name here