nafiesl / silsilah

A genealogy/family tree application, built with Laravel.
MIT License
595 stars 287 forks source link

New Feature: Login with Google #103

Open azharlihan opened 1 year ago

azharlihan commented 1 year ago

Halo mas nafies. bisakah kita menambahkan fitur untuk login menggunakan akun google?

Fitur ini berguna supaya users gak perlu untuk inget-inget lagi password, karena saya menemukan kasus banyak yang lama tidak diakses dan akhirnya lupa password.

Kenapa pilih Google? Karena saat ini hampir mayoritas orang menggunakan (setidaknya salah satu) perangkat android, email gmail yang artinya hampir semua orang memiliki akun google.

Kalo di setujui, saya akan buat PR untuk Fitur ini.

Kurang lebih secara tampilan nanti akan ada tambahan 1 tombol seperti ini

Tampilan Desktop

image

Tampilan Mobile

image

nafiesl commented 1 year ago

Halo mas @azharlihan usul yang bagus mas. Kita bisa diskusikan dulu. Ada kepikiran di saya mas:

  1. Ketika menggunakan login dengan google, otomatis user ini terdaftar sebagai user baru kan ya? Bagaimana jika ternyata dia sudah terdaftar di sistem ini, tetapi menggunakan email lain? (saya belum kebayang proses/cara mengaitkannya dengan user existing)

  2. Di sistem ini, admin bisa menambahkan email dan password untuk anggota keluarga yang sudah didaftarkannya. Bagaimana jika user lama sudah pakai email gmail yang sama dengan yang login with SSO google?

  3. Lalu ada potensi kasus lain, seseorang terdaftar dengan alamat email yahoo, lalu dia mau memakai login with google (biar mudah), gimana caranya agar bisa ganti email dengan mudah ya?

Ada masukan mas @azharlihan untuk 3 kasus di atas?

azharlihan commented 1 year ago

Terimakasih responnya mas @nafiesl. Sebelum jawab 3 poin diatas, saya mau menyampaikan terlebih dulu, rencana saya fitur ini tidak merubah database. Kolom email yang akan digunakan yaitu kolom email yang ada di tabel users.

Ide dari saya untuk poin-poin di atas seperti ini mas.

Poin 1

Ketika menggunakan login dengan google, user tidak otomatis terdaftar sebagai user baru. Fitur ini khusus untuk login saja yang artinya email dari akun google tersebut harus sudah terdaftar. Untuk pendaftaran user baru, tetap menggunakan halaman register dan untuk proses registrasinya tidak ada perubahan samasekali.

Jadi saat user baru tersebut register dan email yang ia masukkan merupakan email yang terdaftar di google, otomatis ia bisa menggunakan fitur login dengan google.

Beberapa alasan pendukung:

Contoh struktur dari SSO google:

{
  "id": "10436............",
  "nickname": null,
  "name": "Azhar Lihan",
  "email": "someemail@gmail.com",
  "avatar": "https://lh3.googleusercontent.com/a/AG...............",
  "user": {
    "sub": "10436............",
    "name": "Azhar Lihan",
    "given_name": "Azhar",
    "family_name": "Lihan",
    "picture": "https://lh3.googleusercontent.com/a/AG...............",
    "email": "someemail@gmail.com",
    "email_verified": true,
    "locale": "en",
    "id": "10436............",
    "verified_email": true,
    "link": null
  },
  "........": "........"
}

Poin 2

Sesuai poin 1 diatas, tidak ada pembuatan user baru melalui fitur login dengan google. Jadi sepertinya dengan penambahan fitur ini tidak membuat konflik email yang sama dengan yang sudah terdaftar.

Di sistem ini ada 2 kemungkinan email baru tercatat di sistem, yaitu ketiga register; dan di fitur edit profil ➡️ tab akun login. Saya lihat admin menambahkan email dan password untuk anggota keluarga yang sudah didaftarkannya melalui fitur ini juga. Untuk email yang sama ketika register sudah ada validasinya, sedangkan untuk email yang sama ketika edit profil ➡️ tab akun login sepertinya belum ada validasinya 😄

image

Poin 3

Ada beberapa solusi yang bisa diambil:

  1. Tambah fitur login dengan yahoo menggunakan yahoo socialite provider. Tapi solusi ini tidak saya rekomendasikan karena jika emailnya selain yahoo, berarti harus nambah lagi.
  2. Login dan ganti emailnya dengan email yang terdaftar di google.
  3. Minta ganti ke manager atau admin untuk mengganti emailnya dengan email yang terdaftar di google.
  4. Daftarkan email tersebut di google.

Sekedar informasi, kita bisa mendaftar akun google dengan email non-gmail semisal yahoo ataupun email custom sekalipun seperti email saya m@azharlihan.com. Dan kita bisa menggunakan seluruh produk dan fitur google dengan akun tersebut kecuali email gmail.

Daftar akun google menggunakan email non gmail:

https://github.com/nafiesl/silsilah/assets/46442361/859ac652-74fa-4fc3-9b0a-159572c3c2fd

Tampilan saat mengakses gmail menggunakan akun google non gmail

Akses gmail dengan akun google non gmail

azharlihan commented 1 year ago

Fitur ini terfikirkan oleh saya ketika saya menjadi pengelola data silsilah di keluarga besar saya. Silsilah keluarga cukup besar hingga 6 keturunan. Hampir semua data yang masuk saya yang mengisinya. Kemudian saat saya ingin memberikan akun ke pemiliknya (untuk isi keturunannya atau melengkapi profil mereka sendiri), saya meminta email, isikan email tersebut + password di profil mereka, memberitahukan lagi passwordnya, dan mereka login dengan email + password.

Skenario yang saya pikirkan saat itu adalah akan lebih sederhana jika saya hanya meminta email yang terdaftar di google, isikan email tersebut di profil mereka dan mereka tinggal klik login dengan google.

nafiesl commented 1 year ago

Halo mas @azharlihan maaf saya baru bisa kembali ke sini sekarang. Saya suka dengan konsep ini mas. Merepons point-point mas di atas:

Point 1

Ide bagus jika fitur ini hanya untuk login saja, sedangkan pendaftaran user/input anggota keluarga tetap dengan fitur yang sudah ada. Saya sepakat dengan alasan pendukungnya.

Point 2

Sepakat mas. Dan terima kasih sudah melaporkan bug validasinya. :smiley:

Point 3

OK melihat infomasi dari mas, sepertinya ini bukan issue, karena fitur ini tidak menghalangi user mengganti alamat email nya dari yahoo ke gmail.

Baik saya tunggu PR untuk login with googlenya mas.

Jazakallahu khairan :palms_up_together: