cnbu12oZsPUsXwMqS8ozdUYI5DesA4e6nbQsVzgG
Code Blogger Firebase (Database)
Sharing Code Blogger dengan Firebase (database)
Cara mudah menghubungkan Blog dengan Database, disini anda akan mempelajari memaksimalkan kekuatan Firebase dan Blogger

Membuat halaman Login dengan Firebase by Email dan Google Account

hi, kali ini admin akan membagikan source code bagaimana membuat halaman page untuk login user di blogger, halaman ini menggunakan Login by Email dan Google account.
Login by email akan membutuhkan konfirmasi dari user dimana link konfirmasi akan di email ke user oleh server dan harus dikonfirmasi oleh user, kemudian user bisa memasuki halaman khusus untuk user.
code ini bisa anda tempatkan di halaman page ataupun post atau di widget javascript dihalaman layout. mohon diperhatikan cara tata letak penempatan kode kode dibawah ini
buat halaman baru/page di blogger dan copy paste kode berikut:
Beri judul page tersebut dan simpan

<div id="userListContainer">
  <table id="userListTable">
    <thead>
      <tr>
        <th>User ID</th>
        <th>Name</th>
        <th>Email</th>
        <th>Registration Date</th>
        <!-- Tambahkan kolom lain sesuai kebutuhan -->
      </tr>
    </thead>
    <tbody id="userListBody">
      <!-- Data pengguna akan ditampilkan di sini -->
    </tbody>
  </table>
</div>

<script>
 
  // Dapatkan referensi ke elemen tbody di tabel
  var userListBody = document.getElementById('userListBody');

  // Dapatkan data pengguna saat halaman dimuat
  firebase.auth().onAuthStateChanged(function (user) {
    if (user) {
      // Hapus data sebelumnya jika ada
      userListBody.innerHTML = '';

      // Tambahkan baris baru untuk setiap pengguna
      var newRow = userListBody.insertRow();
      newRow.insertCell().textContent = user.uid;
      newRow.insertCell().textContent = user.displayName || 'N/A';
      newRow.insertCell().textContent = user.email || 'N/A';

      // Dapatkan tanggal pertama kali terdaftar
      var creationTime = new Date(user.metadata.creationTime);
      newRow.insertCell().textContent = creationTime.toDateString();
      // Tambahkan kolom lain sesuai kebutuhan
      const displayName = user.displayName;
	  document.getElementById('namaUser').value = displayName;
  
   	  const email = user.email;
      document.getElementById('nomorUser').value = email;

    } else {
      // Pengguna tidak diotentikasi
      userListBody.innerHTML = '<tr><td colspan="4">User not authenticated.Please Login or Register</td></tr>';
    }
  });

</script>
  

  <style>

    /* Gaya untuk tombol Login, Register, dan Logout */

    .action-button {

      background-color: #ff6529;

      color: #fff;

      border: none;

      padding: 10px 20px;

      margin: 5px;

      cursor: pointer;

      font-weight: bold;

      border-radius: 5px;

    }

    .action-button:hover {

      background-color: #c9572a;

    }

  </style>



  <!-- Tombol untuk membuka dialog login -->

  <button class="action-button" id="tampilkanLogin">Login</button>

  <!-- Tombol untuk membuka dialog register -->

  <button class="action-button" id="tampilkanRegister">Register</button>

<br>Atau<br>
<button class="action-button" id="tampilkanGoogle" onclick="signInWithGoogle()">Sign in with Google</button>

  <!-- Tombol logout (awalnya tersembunyi) -->

  <button class="action-button" id="tampilkanLogout" style="display: none;">Logout</button>


<script>
 // Google Sign-In function
        function signInWithGoogle() {
            const provider = new firebase.auth.GoogleAuthProvider();
            firebase.auth().signInWithPopup(provider)
            .then((result) => {
                // This gives you a Google Access Token.
                const credential = result.credential;
                // The signed-in user info.
                const user = result.user;
                console.log(user);
            }).catch((error) => {
                // Handle Errors here.
                const errorCode = error.code;
                const errorMessage = error.message;
                // The email of the user's account used.
                const email = error.email;
                // The firebase.auth.AuthCredential type that was used.
                const credential = error.credential;
                console.error(errorMessage);
            });
        }

 // Sign out function
        function signOut() {
            firebase.auth().signOut().then(() => {
                console.log("User signed out successfully");
            }).catch((error) => {
                console.error("Error signing out:", error);
            });
        }
  
</script>

  <!-- Tampilkan profil pengguna -->

  <div id="profilPengguna" style="display: none;">



  <h3>Profil User</h3>


<!-- Tampilkan profil pengguna 
/  <p id="namaProfil"></p> -->
    


  <img id="gambarProfil" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQGhLSSNu1pkrxUVfXCyEdCgeQZfnwv2F819w&usqp=CAU" alt="Foto Profil" style="max-width: 100px;">
<br/>
    <br/>

<input id="namaProfil" name="name" required="required" type="text" readonly/> 
<input id="emailProfil" name="email" required="required" type="text" readonly/> 
  
<br/>
<br/>

  </br>  
</br>
lanjutkan ke pasang lowongan <a href="/p/form-pasang.html">klik disini</a>

   <!--<p id="emailProfil"></p> -->

</br>
</br>
</br>

  <button class="action-button" id="gantiNamaProfil">Ganti Nama</button>



  <button class="action-button" id="gantiFotoProfil">Ganti Foto Profil</button>


</div>




  <script>

    // Konfigurasi Firebase Anda

    // Mendapatkan elemen tombol login

    const tombolLogin = document.getElementById('tampilkanLogin');
    const tombolGoogle = document.getElementById('tampilkanGoogle');



    // Mendapatkan elemen tombol register

    const tombolRegister = document.getElementById('tampilkanRegister');



    // Mendapatkan elemen tombol logout

    const tombolLogout = document.getElementById('tampilkanLogout');



    // Menambahkan event listener untuk menghandle klik pada tombol login

    tombolLogin.addEventListener('click', () => {

      Swal.fire({

        title: 'Login',

        html:

          '<input type="email" id="login-email" class="swal2-input" placeholder="Email">' +

          '<input type="password" id="login-password" class="swal2-input" placeholder="Password">',

        showCancelButton: true,

        confirmButtonText: 'Login',

        cancelButtonText: 'Batal',

        showCloseButton: false,

        preConfirm: () => {

          const email = Swal.getPopup().querySelector('#login-email').value;

          const password = Swal.getPopup().querySelector('#login-password').value;



          // Melakukan proses login dengan Firebase Authentication

          return firebase.auth().signInWithEmailAndPassword(email, password)

            .then(() => {

              if (firebase.auth().currentUser.emailVerified) {

                // Login berhasil, tampilkan tombol logout dan profil

                tampilkanProfil();

                Swal.fire('Login Berhasil', 'Anda berhasil login.', 'success');

              } else {

                Swal.fire('Login Gagal', 'Anda belum verifikasi email. Silakan cek email Anda dan verifikasi akun Anda.', 'error');

                firebase.auth().signOut(); // Logout jika email belum diverifikasi

              }

            })

            .catch((error) => {

              Swal.showValidationMessage('Login gagal. Harap periksa kembali email dan password Anda.');

            });

        }

      });

    });



    // Menambahkan event listener untuk menghandle klik pada tombol register

    tombolRegister.addEventListener('click', () => {

      Swal.fire({

        title: 'Register',

        html:

          '<input type="text" id="register-name" class="swal2-input" placeholder="Nama">' +

          '<input type="email" id="register-email" class="swal2-input" placeholder="Email">' +

          '<input type="password" id="register-password" class="swal2-input" placeholder="Password">' +

          '<input type="password" id="confirm-password" class="swal2-input" placeholder="Konfirmasi Password">',

        showCancelButton: true,

        confirmButtonText: 'Register',

        cancelButtonText: 'Batal',

        showCloseButton: false,

        preConfirm: () => {

          const name = Swal.getPopup().querySelector('#register-name').value;

          const email = Swal.getPopup().querySelector('#register-email').value;

          const password = Swal.getPopup().querySelector('#register-password').value;

          const confirmPassword = Swal.getPopup().querySelector('#confirm-password').value;



          // Validasi konfirmasi password

          if (password !== confirmPassword) {

            Swal.showValidationMessage('Konfirmasi password tidak cocok.');

            return false;

          }



          // Melakukan proses registrasi dengan Firebase Authentication

          return firebase.auth().createUserWithEmailAndPassword(email, password)

            .then((userCredential) => {

              // Set nama pengguna di profil Firebase

              return userCredential.user.updateProfile({

                displayName: name

              })

              .then(() => {

                // Kirim email verifikasi

                return firebase.auth().currentUser.sendEmailVerification()

                  .then(() => {

                   // tampilkanProfil();
                  firebase.auth().signOut();
                  
                  tampilkanLoginRegister();

                    Swal.fire('Registrasi Berhasil', 'Silakan cek email Anda untuk verifikasi akun Anda.', 'success');

                  })
                

                  .catch((error) => {

                    Swal.fire('Error', 'Gagal mengirim email verifikasi. Silakan coba lagi nanti.', 'error');

                  });

              })

              .catch((error) => {

                Swal.fire('Error', 'Gagal mengatur nama pengguna.', 'error');

              });

            })

            .catch((error) => {

              Swal.showValidationMessage('Registrasi gagal. Harap periksa kembali email dan password Anda.');

            });

        }

      });

    });



    // Menambahkan event listener untuk menghandle klik pada tombol logout

    tombolLogout.addEventListener('click', () => {

      firebase.auth().signOut()

        .then(() => {

          tampilkanLoginRegister();

          Swal.fire('Logout Berhasil', 'Anda berhasil logout.', 'success');

        })

        .catch((error) => {

          Swal.fire('Error', 'Gagal logout. Silakan coba lagi nanti.', 'error');

        });

    });



    // Fungsi untuk menampilkan tombol logout dan profil

    function tampilkanProfil() {


      
      tombolLogin.style.display = 'none';

      tombolRegister.style.display = 'none';
      
      tombolGoogle.style.display = 'none';

      tombolLogout.style.display = 'inline-block';



      // Mendapatkan informasi profil pengguna

      const user = firebase.auth().currentUser;

      const displayName = user.displayName;

      const email = user.email;

      const photoURL = user.photoURL; // URL foto profil (jika ada)



      // Menampilkan profil pengguna

      //document.getElementById('namaProfil').textContent = 'Nama: ' + displayName;
      
      document.getElementById('namaProfil').value = displayName;

     // document.getElementById('emailProfil').textContent = 'Email: ' + email;
   
      document.getElementById('emailProfil').value = email;
      

      if (photoURL) {

        document.getElementById('gambarProfil').src = photoURL;

      }



      document.getElementById('profilPengguna').style.display = 'block';
      
      
    }



    // Fungsi untuk menampilkan tombol login dan register

    function tampilkanLoginRegister() {

      tombolLogin.style.display = 'inline-block';

      tombolRegister.style.display = 'inline-block';
      tombolGoogle.style.display = 'inline-block';

      tombolLogout.style.display = 'none';

      document.getElementById('profilPengguna').style.display = 'none';

    }

    

    // Menambahkan event listener untuk tombol "Ganti Nama"

document.getElementById('gantiNamaProfil').addEventListener('click', () => {

  const newName = prompt('Masukkan nama baru:');

  if (newName !== null && newName.trim() !== '') {

    const user = firebase.auth().currentUser;

    user.updateProfile({

      displayName: newName

    }).then(() => {

      document.getElementById('namaProfil').textContent = 'Nama: ' + newName;

      Swal.fire('Nama Berhasil Diubah', '', 'success');

    }).catch((error) => {

      Swal.fire('Error', 'Gagal mengubah nama. Silakan coba lagi nanti.', 'error');

    });

  }

});



// Menambahkan event listener untuk tombol "Ganti Foto Profil"

document.getElementById('gantiFotoProfil').addEventListener('click', () => {

  const fileInput = document.createElement('input');

  fileInput.type = 'file';

  fileInput.accept = 'image/*';

  fileInput.style.display = 'none';



  // Trigger input file saat diklik

  fileInput.addEventListener('change', unggahFotoProfil);



  document.body.appendChild(fileInput);

  fileInput.click();



  // Hapus elemen input file setelah digunakan

  fileInput.remove();

});



// Fungsi untuk mengunggah foto profil

function unggahFotoProfil() {

  const fileInput = document.createElement('input');
  fileInput.type = 'file';
  fileInput.accept = 'image/*';
  fileInput.style.display = 'none';

  const user = firebase.auth().currentUser;



  // Pastikan ada file yang dipilih

  if (fileInput.files.length > 0) {

    const file = fileInput.files[0];

    const storageRef = firebase.storage().ref('profil/' + user.uid + '/' + file.name);



    // Unggah gambar ke Firebase Storage

    storageRef.put(file).then((snapshot) => {

      snapshot.ref.getDownloadURL().then((downloadURL) => {

        // Simpan URL gambar di profil pengguna

        user.updateProfile({

          photoURL: downloadURL

        }).then(() => {

          // Tampilkan foto profil yang baru di halaman

          document.getElementById('gambarProfil').src = downloadURL;

          Swal.fire('Foto Profil Berhasil Diubah', '', 'success');

        }).catch((error) => {

          Swal.fire('Error', 'Gagal mengatur foto profil. Silakan coba lagi nanti.', 'error');

        });

      });

    });

  }

}



    // Memeriksa status otentikasi saat halaman dimuat

    firebase.auth().onAuthStateChanged(function(user) {

      if (user) {

        tampilkanProfil();

      } else {

        tampilkanLoginRegister();

      }

    });

  </script>
  
  

Copy paste kode dibawah ini dan tempel di Theme/Custom Edit html dibawah <head>dan simpan
  <script src='https://cdn.jsdelivr.net/npm/lightgallery/dist/js/lightgallery.min.js'/>
  <script src='https://cdn.jsdelivr.net/npm/lg-thumbnail/dist/lg-thumbnail.min.js'/>
  <link href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css' rel='stylesheet'/>
  <script src='https://www.gstatic.com/firebasejs/9.0.2/firebase-app-compat.js'/>
  <script src='https://www.gstatic.com/firebasejs/9.0.2/firebase-auth-compat.js'/>
  <script src='https://cdn.jsdelivr.net/npm/sweetalert2@10'/>
  <script src='https://www.gstatic.com/firebasejs/9.6.1/firebase-storage-compat.js'/>
  <script src='https://www.gstatic.com/firebasejs/9.6.0/firebase-firestore-compat.js'/>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js' type='text/javascript'/>
  <script src='//cdn.firebase.com/js/client/2.2.1/firebase.js' type='text/javascript'/>

    <!-- Include Firebase SDK -->
    <script>
        // Masukkan kode firebaseConfig dibawah ini
  const firebaseConfig = {
  apiKey: &quot;AIzaSy....&quot;,
  authDomain: &quot;karirid...com&quot;,
  databaseURL: &quot;https://.....&quot;,
  projectId: &quot;karir...&quot;,
  storageBucket: &quot;karir....com&quot;,
  messagingSenderId: &quot;...&quot;,
  appId: &quot;1:843...:web:063...&quot;,
  measurementId: &quot;G-5...&quot;
};
      
  // Inisialisasi Firebase
  firebase.initializeApp(firebaseConfig);

  // Mendapatkan referensi Firestore
  const firestore = firebase.firestore();
      
  // Mendapatkan referensi autentikasi Firebase
  const auth = firebase.auth();
      
const storage = firebase.storage();
      </script>
Perhatikan kode agar disesuaikan dengan project firebase anda

    <!-- Include Firebase SDK -->
    <script>
        // Masukkan kode firebaseConfig dibawah ini
  const firebaseConfig = {
  apiKey: &quot;AIzaSy....&quot;,
  authDomain: &quot;karirid...com&quot;,
  databaseURL: &quot;https://.....&quot;,
  projectId: &quot;karir...&quot;,
  storageBucket: &quot;karir....com&quot;,
  messagingSenderId: &quot;...&quot;,
  appId: &quot;1:843...:web:063...&quot;,
  measurementId: &quot;G-5...&quot;
};
diganti dengan script pemberian Firebase

Masuk ke Firebase anda dan ke Project anda kemudian pilih menu Authentication Signin Methode di Enable Email dan Google account nya

Ubah Template Authentication agar server dapat mengirim email konfirmasi seperti dibawah
Jangan lupa untuk memberi askes website/domain anda di firebase pilih setting kemudian Authorize domain, add domain
Dan SELESAI
hasil setelah User melakukan login dapat dicek di Authentication User


Lihat Demo
Jika ada pertanyaan silahkan gunakan koment dibawah

Post a Comment