November 2023
Informasi seputar tutorial pemrograman, web developer, windows, linux, networking, android, software dan hardware komputer, dan perkembangan teknologi

 

Setelah Install Repository PPA
Error Setelah Install Repository PPA


{getToc} $title={Table of Contents}

Terkadang dalam menginstall repository PPA pada Linux, kita mendapatkan kendala dalam instalasi key repo (Linux package signing Key) yang menyebabkan kita tidak bisa melakukan install aplikasi yang berkaitan dengan repo tersebut.


Seperti dalam kasus Kami saat menginstall PPA untuk install Google Chrome, Kami mendapatkan error saat melakukan apt-update sebagaimana gambar di atas.


Dapat kita lihat bahwa dalam foto tersebut, kami mempunyai dua masalah, yaitu pesan  "Key is stored in legacy trusted.gpg keyring" dan "Doesn't Support Architecture 'i386' ". Untuk menyelesaikan permasalahan tersebut, kita harus menyelesaikannya satu persatu. Error ini terkadang bisa saja hanya terjadi salah satunya saja pada kalian. Jadi, kalian dapat menesuaikannya saja atau bertanya di kolom komentar. 

 

Error "Key Is Stored In Legacy Trusted.gpg Keyring"

 Pesan  "Key is stored in legacy trusted.gpg keyring" ditandai dengan munculnya pesan error seperti ini saat melakukan apt-update.


W: https://dl.google.com/linux/chrome/deb/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

 

Key Is Stored In Legacy Trusted.gpg Keyring
Pesan Key Is Stored In Legacy Trusted.gpg Keyring

Cara Menghilangkan Pesan "Key Is Stored In Legacy Trusted.gpg Keyring"

Sebenarnya Ini bukan sebuah kesalahan, tapi adalah pesan peringatan.  Jika tidak suka melihat pesan peringatan, kita dapat melakukan dua metode berikut. 

1. Cara Pertama: Mengimport Key Code

 Cara ini adalah cara terbaik yang bisa dilakukan. Namun cara ini agak sedikit susah. Jika terdapat kendala, silahkan bertanya pada kolom komentar. 


1) Tampilkan semua GPG Key yang ada pada linux kita dengan perintah:



$ sudo apt-key list



sudo apt-key list
output sudo apt-key list


2) Mencari Kunci Yang Terkait Dengan Pesan Peringatan

Langkah selanjutnya adalah mencari kunci yang terkait dengan pesan peringatan. Dalam kasus Kami, Kami bermasalah dengan paket Google Chrome. Untuk penyelesaiannya, kita harus mencari Key yang berkaitan dengan Google atau Chrome. 


8 digit key
Perkiraan Key yang bermasalah

Seperti pada contoh, Kami menemukan 2 Key yang berkaitan dengan Google. Setelah mendapatkannya kita akan mengambil 8 digit terakhir dari PUB Key tersebut seperti yang terseleksi pada gambar. Adapun key yang kita dapatkan adalah 7FAC 5991 dan D38B 4796.


3) Import Key Ke Trusted.gpg.d

Langkah selanjutnya, hapus spasi dari 8 digit PUB Key tersebut lalu kita impor kunci GPG ke dalam file khusus di  direktori /etc/apt/trusted.gpg.d dengan perintah:



$ sudo apt-key export 7FAC5991 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/google-chrome.gpg
$ sudo apt update


export 7FAC5991
Import Key 7FAC5991

Setelah dicoba, ternyata masih belum bisa menghapus pesan peringatan tersebut. Kita akan mencoba menghapusnya dengan mengimport key ke dua:



$ sudo apt-key export D38B4796 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/google-chrome.gpg
$ sudo apt update


Export Key D38B4796
Import Key D38B4796

Akhirnya kita berhasil mengimport key kedua dan berhasil menghapus  pesan  "Key is stored in legacy trusted.gpg keyring


2. Cara Ke Dua: Copy GPG Ke Direktori Trusted.gpd.d

 Jika Anda merasa tidak nyaman melakukan semua hal di atas secara manual, Kita juga dapat mengkopi file etc/apt/trusted.gpg ke direktori /etc/apt/trusted.gpg.d/. Cara ini memang dapat dilakukan dengan cepat, tapi sedikit ekstrim karena akan mengabaikan pendataan key GPP yang ada dalam sistem operasi linux.


Untuk metode ini, kita hanya perlu membuka terminal dan memasukkan perintah:


$ sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d
$ sudo apt update

 

Memperbaiki Error "Doesn't Support Architecture 'i386' "

 Pesan Doesn't Support Architecture 'i386'  disebabkan karena sistem linux keliru dalam membaca arsitektur perangkat kita. Hal ini biasanya terjadi karena kita pernah menginstall aplikasi berbasis 32 bit sebelumnya, dan sekarang kita menggunakan arsitektur 64 bit. Meski sudah menghapus aplikasi berbasis 32 bit, namun mungkin masih ada konfigurasi sistem yang tersisa yang mengindikasikan kita masih menggunakan arsitektur 32 bit.


Pesan Doesn't Support Architecture 'i386'  juga merupakan pesan peringatan. Langkah untuk menghapusnya adalah menambahkan arsitektur yang spesifik ke dalam repository kita. Adapun langkah-langkahnya adalah sebagai berikut:


1. Masuk Ke /etc/apt/sources.list.d

Direktori /etc/apt/sources.list.d adalah direktori yang menyimpan daftar repositori aplikasi linux kita. Untuk masuk kesana, jalankan perintah berikut


$ cd /etc/apt/sources.list.d


2. Tampilkan daftar repositori yang ada dengan perintah:

$ ls


3.  Edit Repositori tersebut dengan editor kesayangan anda:




$ gedit google-chrome.list


4. Tambahkan Arsitektur 64 bit pada Repository

Langkah selanjutnya adalah sisipkan arsitektur dan path key terkait ke dalam repo


[arch={{ arsitektur}} signed-by={{path key GPG }}]


hasilnya akan seperti ini:


deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main


Edit Repository Google Chrome
Edit Repository Google Chrome

5. Lakukan apt-update dan Install

Setelah menjalankan perintah-perintah di atas, coba kita ketikkan perintah update dan perintah install paket. Dan ternyata tidak ada lagi pesan peringatan tersebut.

install google chrome


Kesimpulan

Setelah melakukan langkah-langkah diatas. Kita telah berhasil menangani pesan "Key is stored in legacy trusted.gpg keyring" dan  " Doesn't Support Architecture 'i386'  ".


Semoga tutorial ini dapat bermanfaat bagi kita semua. Jika terdapat kendala dalam penerapannya, silahkan bertanya pada kolom komentar. Saya akan berusaha menjawab secepat yang saya bisa.



Informasi seputar tutorial pemrograman, web developer, windows, linux, networking, android, software dan hardware komputer, dan perkembangan teknologi

Cara Install Google Chrome di Linux
Google Chrome Linux

{getToc} $title={Table of Contents}

 Google Chrome adalah sebuah web browser gratis yang di kembangkan oleh Google Inc. dengan lisensi Google Chrome Terms of Service.

Google Chrome adalah web browser yang paling banyak digunakan di seluruh dunia. Lebih dari 65% pengguna internet secara global menggunakan Google Chrome untuk berselancar di internet. Menurut saya pribadi, Google Chrome merupakan browser internet terbaik berbagai fitur, tata letak, kesederhanaan, kecepatan, stabil dan keamanannya.

Selain Google Chrome, Linux mempunyai browser yang secara tampilan hampir sama dengan Google Chrome, yaitu Chromium Browser. Chromium Browser merupakan versi opensource dari Google Chrome yang dikembangkan oleh komunitas. Chromium Browser biasanya langsung tersedia pada repositori linux sehingga dapat dengan lebih mudah di install lewat terminal. Namun, terkadang Chromium Browser mempunyai kendala dalam beberapa hal sehingga bagi penulis pribadi lebih memilih menggunakan  Google Chrome.

Ada dua cara resmi yang dapat digunakan untuk menginstal Google Chrome, yaitu  menggunakan PPA atau langsung mengunduh dan menginstal paket '.deb'. Kami akan menunjukkan kedua cara tersebut sehingga Anda dapat memilih metode apa pun yang Anda rasa lebih mudah.

1. Install Google Chrome menggunakan PPA

PPA (Personal Package Archive) adalah penyedia repositori yang dapat digunakan untuk menginstall paket linux yang tidak tersedia secara bawaan OS.

Menggunakan repositori PPA menurut saya lebih baik dilakukan karena akan secara otomatis menginstal dan mengkonfigurasi pengaturan yang diperlukan agar browser Chrome kita selalu terupdate.

Sebelum menginstall, kita harus menambahkan PPA Google Chrome ke daftar repositori kita dengan perintah:


$ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
$ sudo apt update

 

Untuk informasi terkait repositori diatas dapat dilihat pada https://www.google.com/linuxrepositories/

Dalam PPA di atas tersedia tiga versi Google Chrome yang dapat kita install, yaitu stable, beta, and unstable. Jadi kita dapat menginstall versi apa pun yang Anda inginkan dengan perintah:


  $ sudo apt-get install google-chrome-stable    [Stable Release]
  $ sudo apt-get install google-chrome-beta      [Beta Release]
  $ sudo apt-get install google-chrome-unstable  [Unstable Release] 


2. Instal Google Chrome Menggunakan Paket Deb

Paket .deb Google Chrome dapat di download melalui tautan https://www.google.co.in/chrome/

Supaya terlihat lebih keren, kita akan menginstall paket .deb melalui terminal. berikut perintahnya:


$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
 
Setelah terinstall, kita dapat menjalankan google chrome dengan perintah

  $ google-chrome-stable
  

Cara Menghapus Google Chrome dari Linux Ubuntu/Kali Linux

Untuk menghapus sepenuhnya Google Chrome dari Ubuntu dan Kali Linux, kita  dapat menggunakan perintah berikut:


  $ sudo dpkg -r google-chrome-stable
  Atau
  $ sudo apt purge google-chrome-stable
  


Perintah ini akan menghapus Google Chrome sepenuhnya dari Ubuntu atau Kali Linux Anda bersama dengan file konfigurasinya.

Penutup

Demikian tutorial cara menginstall Google Chrome Pada Linux Ubuntu dan Kali Linux. Semoga tutorial ini dapat bermanfaat bagi kita semua. Sukses terus buat kita semua ;)




Informasi seputar tutorial pemrograman, web developer, windows, linux, networking, android, software dan hardware komputer, dan perkembangan teknologi
Fitur Show Hidden Password Menggunakan Bootstrap 5
Membuat Fitur Show Hidden Password Menggunakan Bootstrap 5 Pada Form Login

{getToc} $title={Table of Contents}

Sekilas Tentang Fitur Show Hidden Password

Fitur show hidden password adalah suatu fitur yang mengizinkan user melihat inputan karakter yang diketikkan pada form seperti form login atau form registrasi. Secara default, saat kita mengetikkan karakter pada inputan bertipe password, karakter yang terlihat hanyalah simbol bintang saja. Dengan adanya fitur ini, user dapat memiliki opsi untuk melihat karakter yang telah diketikkan atau tidak.

Fitur ini bersifat opsional, namun tentu sangat bermanfaat bagi user yang ingin melihat inputan passwordnya. Tentu saja tujuannya untuk meminimalisir gagal login karena password yang typo saat diketikkan. Apalagi untuk user yang menggunakan password yang panjang atau kombinasi, tentu fungsi ini akan sangat membantu.


Bagaimana Fitur Show Hidden Password Bekerja?

Konsep dari fitur show hidden password ini adalah mengganti tipe password menjadi text pada inputan form. Seperti disinggung diatas bahwa tipe inputan password hanya memunculkan karakter bintang saat diketikkan. Untuk menampilkan karakter yang telah diketikkan, dapat dilakukan dengan cara mengganti tipe inputan dengan text.

Yang menjadi kendalanya adalah bagaimana jika kita telah menggunakan Bootstrap 5 dalam resource template kita. Tentu sangat berbeda caranya jika kita menggunakan Bootstrap 3 atau Bootstrap 4 yang masih menggunakan Jquery. 


Apa Itu Jquery?

Jquery adalah sebuah library Javascript yang bertujuan untuk memudahkan dan memperingkas penggunaan javascript dalam web. Jquery dapat digunakan untuk Ajax, memanipulasi halaman html, membuat animasi pada web dan lain sebagainya.

Jquery sangat populer karena kesederhanaannya. Jquery ditandai dengan simbol $ dalam setiap penulisannya. Untuk lebih jelas tentang jquery, silahkan kunjungi website resminya di https://jquery.com/. 


Apa Itu Boostrap 5?

Bootstrap 5 adalah adalah versi terbaru Bootstrap, yang merupakan framework HTML, CSS, dan JavaScript paling populer untuk membuat situs web responsif dan mobile friendly. Bootstrap dapat didownload secara gratis melalui website resminya yaitu https://getbootstrap.com/. 

Pada Bootstrap 5 tidak menggunakan lagi jquery, tapi menggunakan javascript murni atau biasa disebut vanilla js. Tujuannya adalah demi meningkatkan kinerja website menjadi lebih baik dan lebih ringan. Tentu saja ini merupakan perubahan besar bagi pengguna bootstrap sebelumnya dimana harus kembali beralih dari jquery yang terkenal dengan kesederhanaan dan keringkasannya, ke Javascript murni yang penulisan kodenya lebih panjang. Namun tentu saja itu akan terbayarkan dengan performa website yang lebih baik.

Bagaimana Membuat Fitur Show Hidden Password Pada Bootstrap 5

Untuk membuat fitur show hidden password sebagaimana telah diuraikan di atas, kita harus melalui langkah-langkah sebagai berikut:

1. Mencari Template Login

Pertama-tama yang harus kita lakukan adalah mencari template form login untuk project kita kali ini. Untuk memudahkan, kita akan menggunakan template yang sudah saya kostum sebagai berikut:

<html lang="en">
<head>
  <meta charset="utf-8"></meta>
  <meta content="width=device-width, initial-scale=1.0" name="viewport"></meta>
  <title>Pages / Login - NiceAdmin Bootstrap Template</title>
  <link href="https://fonts.gstatic.com" rel="preconnect"></link>
  <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Nunito:300,300i,400,400i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet"></link>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"></link>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css" rel="stylesheet" >

<style>
:root {
  scroll-behavior: smooth;
}
body {
  font-family: "Open Sans", sans-serif;
  background: #f6f9ff;
  color: #444444;
}
a {
  color: #4154f1;
  text-decoration: none;
}
a:hover {
  color: #717ff5;
  text-decoration: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Nunito", sans-serif;
}
#main {
  margin-top: 60px;
  padding: 20px 30px;
  transition: all 0.3s;
}
@media (max-width: 1199px) {
  #main {
    padding: 20px;
  }
}
.card {
  margin-bottom: 30px;
  border: none;
  border-radius: 5px;
  box-shadow: 0px 0 30px rgba(1, 41, 112, 0.1);
}
.card-header,
.card-footer {
  border-color: #ebeef4;
  background-color: #fff;
  color: #798eb3;
  padding: 15px;
}
.card-title {
  padding: 20px 0 15px 0;
  font-size: 18px;
  font-weight: 500;
  color: #012970;
  font-family: "Poppins", sans-serif;
}
.card-title span {
  color: #899bbd;
  font-size: 14px;
  font-weight: 400;
}
.card-body {
  padding: 0 20px 20px 20px;
}
.logo {
  line-height: 1;
}
@media (min-width: 1200px) {
  .logo {
    width: 280px;
  }
}
.logo img {
  max-height: 26px;
  margin-right: 6px;
}
.logo span {
  font-size: 26px;
  font-weight: 700;
  color: #012970;
  font-family: "Nunito", sans-serif;
}
.iconslist {
  display: grid;
  max-width: 100%;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1.25rem;
  padding-top: 15px;
}
.iconslist .icon {
  background-color: #fff;
  border-radius: 0.25rem;
  text-align: center;
  color: #012970;
  padding: 15px 0;
}
.iconslist i {
  margin: 0.25rem;
  font-size: 2.5rem;
}
.iconslist .label {
  font-family: var(--bs-font-monospace);
  display: inline-block;
  width: 100%;
  overflow: hidden;
  padding: 0.25rem;
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #666;
}
.footer {
  padding: 20px 0;
  font-size: 14px;
  transition: all 0.3s;
  border-top: 1px solid #cddfff;
}
.footer .copyright {
  text-align: center;
  color: #012970;
}
.footer .credits {
  padding-top: 5px;
  text-align: center;
  font-size: 13px;
  color: #012970;
}
</style> 
</head>

<body>
  <main>
    <div class="container">
      <section class="section register min-vh-100 d-flex flex-column align-items-center justify-content-center py-4">
        <div class="container">
          <div class="row justify-content-center">
            <div class="col-lg-4 col-md-6 d-flex flex-column align-items-center justify-content-center">
              <div class="card mb-3">
                <div class="card-body">
                  <div class="pt-4 pb-2">
                    <h5 class="card-title text-center pb-0 fs-4">Login to Your Account</h5>
                    <p class="text-center small">Enter your username &amp; password to login</p>
                  </div>
                  <form class="row g-3 needs-validation" novalidate="">
                    <div class="col-12">
                      <label class="form-label" for="yourUsername">Username</label>
                      <div class="input-group has-validation">
                        <span class="input-group-text" id="inputGroupPrepend">@</span>
                        <input class="form-control" id="yourUsername" name="username" required="" type="text" />
                        <div class="invalid-feedback">Please enter your username.</div>
                      </div>
                    </div>
                    <div class="col-12">
                      <label class="form-label" for="yourPassword">Password</label>
                      <input class="form-control" id="yourPassword" name="password" required="" type="password" />
                      <div class="invalid-feedback">Please enter your password!</div>
                    </div>
                    <div class="col-12">
                      <div class="form-check">
                        <input class="form-check-input" id="rememberMe" name="remember" type="checkbox" value="true" />
                        <label class="form-check-label" for="rememberMe">Remember me</label>
                      </div>
                    </div>
                    <div class="col-12">
                      <button class="btn btn-primary w-100" type="submit">Login</button>
                    </div>
                    <div class="col-12">
                      <p class="small mb-0">Don't have account? <a href="pages-register.html">Create an account</a></p>
                    </div>
                  </form>
                </div>
              </div>
            </div>
          </div>
        </div>
      </section>
    </div>
  </main>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Template Form Login
Template Form Login

2. Menambahkan Icon Show Pada Form

Langkah kedua yang perlu dilakukan adalah menambahkan icon show (icon berbentuk mata) pada form login tersebut, yaitu pada input password.

<div class="col-12">
  <label class="form-label" for="yourPassword">Password</label>
  <div class="input-group mb-3">
    <input class="form-control" id="yourPassword" name="password" required="" type="password" />
    <button class="btn btn-outline-secondary show-password" type="button" >
      <i class="bi bi-eye"></i>
    </button>
    <div class="invalid-feedback">Please enter your password!</div>
</div>

tambah fitur show hidden password
Menambahkan Fitur Show Hidden Password Pada Form

3. Menambahkan Script Javascript/Vanilla JS Untuk Menjalankan Fungsi Show/Hide Password

Selanjutnya adalah menambahkan script javascript/vanilla JS setelah Tag <script bootstrap.js> dan sebelum </body>. 


<script>
let showPassword = document.querySelectorAll('.show-password')
showPassword.forEach(el => el.addEventListener('click', function(){
    var pass=this.parentElement.querySelector('input')
    var icon=this.lastElementChild
    var type = pass.getAttribute('type') === 'password' ?'text' : 'password'
    var eye = icon.classList.value === 'bi bi-eye' ? 'bi bi-eye-slash' : 'bi bi-eye'
    pass.setAttribute('type', type)
    icon.setAttribute('class', eye)
    })
);
</script>

Hasil Akhir

Adapun hasil akhir dari tutorial ini adalah terciptanya halaman login yang mempunyai fungsi show/hidden password
Berikut Source Code lengkapnya:


<html lang="en">
<head>
  <meta charset="utf-8"></meta>
  <meta content="width=device-width, initial-scale=1.0" name="viewport"></meta>
  <title>Pages / Login - NiceAdmin Bootstrap Template</title>
  <link href="https://fonts.gstatic.com" rel="preconnect"></link>
  <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Nunito:300,300i,400,400i,600,600i,700,700i|Poppins:300,300i,400,400i,500,500i,600,600i,700,700i" rel="stylesheet"></link>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"></link>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">

<style>
:root {
  scroll-behavior: smooth;
}
body {
  font-family: "Open Sans", sans-serif;
  background: #f6f9ff;
  color: #444444;
}
a {
  color: #4154f1;
  text-decoration: none;
}
a:hover {
  color: #717ff5;
  text-decoration: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Nunito", sans-serif;
}
#main {
  margin-top: 60px;
  padding: 20px 30px;
  transition: all 0.3s;
}
@media (max-width: 1199px) {
  #main {
    padding: 20px;
  }
}
.card {
  margin-bottom: 30px;
  border: none;
  border-radius: 5px;
  box-shadow: 0px 0 30px rgba(1, 41, 112, 0.1);
}
.card-header,
.card-footer {
  border-color: #ebeef4;
  background-color: #fff;
  color: #798eb3;
  padding: 15px;
}
.card-title {
  padding: 20px 0 15px 0;
  font-size: 18px;
  font-weight: 500;
  color: #012970;
  font-family: "Poppins", sans-serif;
}
.card-title span {
  color: #899bbd;
  font-size: 14px;
  font-weight: 400;
}
.card-body {
  padding: 0 20px 20px 20px;
}
.logo {
  line-height: 1;
}
@media (min-width: 1200px) {
  .logo {
    width: 280px;
  }
}
.logo img {
  max-height: 26px;
  margin-right: 6px;
}
.logo span {
  font-size: 26px;
  font-weight: 700;
  color: #012970;
  font-family: "Nunito", sans-serif;
}
.iconslist {
  display: grid;
  max-width: 100%;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1.25rem;
  padding-top: 15px;
}
.iconslist .icon {
  background-color: #fff;
  border-radius: 0.25rem;
  text-align: center;
  color: #012970;
  padding: 15px 0;
}
.iconslist i {
  margin: 0.25rem;
  font-size: 2.5rem;
}
.iconslist .label {
  font-family: var(--bs-font-monospace);
  display: inline-block;
  width: 100%;
  overflow: hidden;
  padding: 0.25rem;
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #666;
}
.footer {
  padding: 20px 0;
  font-size: 14px;
  transition: all 0.3s;
  border-top: 1px solid #cddfff;
}
.footer .copyright {
  text-align: center;
  color: #012970;
}
.footer .credits {
  padding-top: 5px;
  text-align: center;
  font-size: 13px;
  color: #012970;
}
</style> 
</head>

<body>
  <main>
    <div class="container">
      <section class="section register min-vh-100 d-flex flex-column align-items-center justify-content-center py-4">
        <div class="container">
          <div class="row justify-content-center">
            <div class="col-lg-4 col-md-6 d-flex flex-column align-items-center justify-content-center">
              <div class="card mb-3">
                <div class="card-body">
                  <div class="pt-4 pb-2">
                    <h5 class="card-title text-center pb-0 fs-4">Login to Your Account</h5>
                    <p class="text-center small">Enter your username &amp; password to login</p>
                  </div>
                  <form class="row g-3 needs-validation" novalidate="">
                    <div class="col-12">
                      <label class="form-label" for="yourUsername">Username</label>
                      <div class="input-group has-validation">
                        <span class="input-group-text" id="inputGroupPrepend">@</span>
                        <input class="form-control" id="yourUsername" name="username" required="" type="text" />
                        <div class="invalid-feedback">Please enter your username.</div>
                      </div>
                    </div>
                    <div class="col-12">
                      <label class="form-label" for="yourPassword">Password</label>
                      <div class="input-group  mb-3">
                        <input class="form-control" id="yourPassword" name="password" required="" type="password" />
                        <button class="btn btn-outline-secondary show-password" type="button" >
                          <i class="bi bi-eye"></i>
                        </button>
                        <div class="invalid-feedback">Please enter your password!</div>
                    </div>
                    <div class="col-12">
                      <div class="form-check">
                        <input class="form-check-input" id="rememberMe" name="remember" type="checkbox" value="true" />
                        <label class="form-check-label" for="rememberMe">Remember me</label>
                      </div>
                    </div>
                    <div class="col-12">
                      <button class="btn btn-primary w-100 mb-3 mt-3" type="submit">Login</button>
                    </div>
                    <div class="col-12">
                      <p class="small mb-0">Don't have account? <a href="pages-register.html">Create an account</a></p>
                    </div>
                  </form>
                </div>
              </div>
            </div>
          </div>
        </div>
      </section>
    </div>
  </main>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

<script>
let showPassword = document.querySelectorAll('.show-password')
showPassword.forEach(el => el.addEventListener('click', function(){
    var pass=this.parentElement.querySelector('input')
    var icon=this.lastElementChild
    var type = pass.getAttribute('type') === 'password' ?'text' : 'password'
    var eye = icon.classList.value === 'bi bi-eye' ? 'bi bi-eye-slash' : 'bi bi-eye'
    pass.setAttribute('type', type)
    icon.setAttribute('class', eye)
    })
);
</script>

</body>
</html>

hasil show hidden password
Hasil Penambahan Fitur Show Hidden Password

Penutup

Demikian tutorial membuat fitur show hidden password menggunakan bootstrap 5 pada form login. Semoga tutorial ini dapat bermanfaat bagi para pembaca.