Bikin Aplikasi Eksklusif! Cara Tambah Login Google & Data Privat di Lovable AI (ZenFocus Part 3)

Selamat! Jika Anda mengikuti artikel sebelumnya, Anda sudah punya aplikasi ZenFocus yang terhubung ke database Supabase.

Saat ini, aplikasi Anda seperti Papan Tulis Umum di Balai Desa. Siapapun yang membuka link aplikasi Anda bisa melihat tugas "Beli Susu" Anda. Lebih parah lagi, jika orang lain menghapus tugas Anda, data itu hilang selamanya.

Solusinya? Kita butuh Authentication (Login) dan Authorization (Privasi).

Di tutorial ini, kita akan mengubah "Papan Tulis Umum" tadi menjadi "Buku Harian Pribadi". Kita akan menambahkan fitur Login Google dan memastikan setiap user hanya bisa melihat datanya sendiri.


Persiapan: Strategi "Kunci & Gembok"

Sebelum menyuruh AI bekerja, kita (sebagai Arsitek) harus menyiapkan sistem keamanannya dulu di Supabase. Ini disebut RLS (Row Level Security).

Bayangkan RLS seperti sistem kartu akses di apartemen. Semua orang bisa masuk gedung (aplikasi), tapi kartu Anda hanya bisa membuka pintu kamar Anda sendiri (data Anda).


Langkah 1: Aktifkan Fitur Login (Di Supabase)

Lakukan ini secara manual di Dashboard Supabase untuk menghemat kuota chat Lovable.

  • Buka project ZenFocus Anda di Supabase.
Database ZenFocus-DB
  • Di menu kiri, klik icon Authentication.
Sidebar Supabase
Menu Authentication

Pilih Providers. Cari Google, lalu aktifkan (Enable).

Catatan: Untuk mengaktifkan Google, Anda perlu "Client ID" dari Google Cloud Console. Jika ini terlalu rumit untuk pemula, aktifkan saja "Email" (di menu Providers > Email). Tutorial ini tetap bekerja apapun metode loginnya.

Apabila ingin mengikutinya, anda bisa cek di akhir artikel ini.

Auth Providers
  • Pastikan statusnya Enabled dan klik Save.
  • Uncheck confirm email (khusus untuk latihan saja) lalu klik save changes.
Pengaturan User Signups

Langkah 2: Pasang "Gembok" di Database (RLS)

Ini langkah terpenting. Kita harus memberitahu tabel tasks bahwa ia milik pribadi.

  • Masuk ke Table Editor, pilih tabel tasks.
Table Editor
  • Kita butuh kolom untuk menyimpan ID pemilik. Klik tanda + (New Column).
    • Name: user_id
    • Type: uuid
    • Default Value: Klik icon gear/settings, pilih auth.uid().
    • Klik Save.
Tabel new column
  • Sekarang, lihat bagian atas tabel. Klik tombol RLS is disabled (atau No active RLS policies) -> Klik Enable RLS.
Menu RLS
  • Klik Add RLS Policy -> Pilih Quick Start (atau templates).
Menu RLS Policy
  • Pilih template: "Enable users to view their own data only"
    • Intinya, kita ingin aturan: auth.uid() = user_id.
    • Ulangi untuk kebijakan INSERTUPDATE, dan DELETE dengan logika yang sama.
Template Policy
  • Save policy tersebut.

Bingung? Tidak masalah. Jika langkah 4 & 5 terlalu teknis, cukup pastikan kolom user_id sudah ada. Kita bisa minta tolong Lovable membereskan sisanya lewat prompt nanti.


Langkah 3: Operasi "Satpam Digital" (Di Lovable)

Kembali ke Lovable. Wajib lanjutkan di Session Chat ZenFocus yang lama!

Kita akan meminta Lovable untuk:

  1. Membuat halaman Login.
  2. Memastikan setiap tugas baru ditandai dengan ID pengguna.
  3. Menyaring data agar hanya tampil milik pengguna yang sedang login.

Copy-paste prompt sakti ini:

I want to add User Authentication to this app using Supabase Auth.Requirements:Login Page: Create a login screen as the main entry point. Use the Supabase Auth UI component (support Email & Google).Protection: The Dashboard (Timer & Task List) should only be accessible after login. If not logged in, redirect to Login Page.Data Privacy (Critical):I have added a 'user_id' column to the 'tasks' table in Supabase.Update the 'Fetch Tasks' logic: Only fetch tasks where user_id matches the current logged-in user.Update the 'Add Task' logic: When inserting a new task, automatically attach the current user's ID to the 'user_id' column.Logout: Add a small 'Logout' button in the header (top right).

  • Apabila lovable AI meminta untuk modify database, klik allow.
Prompt Lovable AI
  • Tunggu hingga proses selesai.
Tampilan login

Langkah 4: Uji Coba (The Moment of Truth)

Setelah Lovable selesai menulis kode, mari kita buktikan apakah privasi benar-benar terjaga.

Skenario Tes:

  1. User A: Buka preview aplikasi. Anda akan dihadang halaman Login. Daftar/Login menggunakan email [email protected].
  2. Input Data: Buat tugas baru: "Rapat jam 9".
  3. Logout: Klik tombol logout.
  4. User B: Login lagi menggunakan email berbeda, misal [email protected].
  5. Cek Data: Apakah Anda melihat tugas "Rapat jam 9" milik Andi?
    • Jika TIDAK, selamat! Sistem keamanan Anda berhasil. Budi punya ruang kerjanya sendiri.
  6. Login Ulang User A: Masuk lagi sebagai Andi. Tugas "Rapat jam 9" harusnya muncul kembali.

Langkah Opsional : Mendapatkan Client ID Google OAuth 2.0

  1. Pergi ke https://console.developers.google.com/
  2. Buat proyek baru, untuk kali ini kita akan menamainya dengan ZenFocus.
Google Console
  • Klik Create
Form Pembuatan Proyek
  • Arahkan cursor ke sidebar kiri (di bawah tulisan API) lalu klik credentials.
Sidebar APIs & Service
  • Klik OAuth client ID (jika anda diminta untuk permintaan consent, ikuti saja perintahnya)
Create Credentials Dropdown

Konfigurasi Consent Screen (Langkah Tambahan):

  • Menu: APIs & Services > OAuth consent screen.
  • Pilih External > Create.
  • Isi App Name ("ZenFocus") dan Email Developer. Save & Continue sampai selesai.
  • Klik Create OAuth client, lalu isikan formnya. Jika sudah klik create
Oauth Overview Menu
Form Create Oauth client ID

Untuk mendapatkan Authorized redirect URIs, kalian kalian perlu ke Supabase > Authentication > Providers > Lalu klik Google, salin Callback URL

Google Authentication Settings di Supabase
  • Salin Client ID dan Client Secret ke Supabase Providers, lalu klik Save
Tombol Enable

Tips: Jangan Sampai "Bocor"

Dalam dunia software engineering, keamanan data adalah harga mati.

  • Peringatan RLS: Langkah 2 (Mengaktifkan RLS di Supabase) adalah kunci mutlak. Jika Anda hanya memfilter lewat kode Lovable (Frontend) tapi lupa mengaktifkan RLS di Supabase (Backend), hacker  masih bisa mencuri data orang lain lewat backdoor.
  • Prompting Bahasa Inggris: Perhatikan prompt di atas menggunakan istilah spesifik seperti redirect, fetch, dan insert. Ini memastikan Lovable menggunakan fungsi Supabase yang tepat, bukan fungsi buatan sendiri yang rawan bug.

Kesimpulan: Anda Baru Saja Naik Level!

Selamat! "ZenFocus" kini bukan lagi sekadar proyek mainan.

  • Part 1: Kita belajar UI/UX (Tampilan).

https://buildwithangga.com/tips/panduan-lengkap-lovable-ai-cara-membuat-web-apps-tanpa-coding-untuk-pemula-2025

  • Part 2: Kita belajar Database (Memori).

https://buildwithangga.com/tips/modal-0-rupiah-cara-bikin-aplikasi-lovable-punya-ingatan-dengan-supabase-panduan-hemat-kuota

  • Part 3: Kita belajar Security (Privasi). (artikel ini)

Aplikasi Anda kini memiliki fitur dasar yang sama dengan aplikasi startup bernilai miliaran rupiah.

Apa Selanjutnya?

Aplikasi sudah canggih, tapi masih berjalan di alamat lovable.app yang panjang. Di artikel berikutnya, kita akan membahas langkah terakhir: "Cara Meng-online-kan Aplikasi Lovable dengan Domain Sendiri (.com) agar Terlihat Profesional".

Siap menjadi founder startup? Lanjut ke Part 4