Pernah nggak kamu habiskan 2–3 hari hanya untuk bikin sistem login yang "cukup aman"? Validasi form, hashing password, session management, reset password via email — semua terasa kayak membangun kastil dari nol pakai batu satu-satu. Capek, bro.
Nah, di artikel ke-21 dari seri 50 Artikel Belajar Laravel ini, kita akan bahas autentikasi Laravel Breeze — paket resmi dari tim Laravel yang dirancang khusus buat kamu yang ingin sistem login modern, aman, dan bisa langsung jalan tanpa drama. Breeze bukan cuma shortcut; ini adalah best practice yang dikemas dengan elegan.
Siapkan terminal kamu, karena kita akan hands-on dari awal sampai sistem login kamu bener-bener berjalan. ☕
Apa itu Laravel Breeze?
Laravel Breeze adalah starter kit autentikasi minimal yang disediakan resmi oleh Laravel. Ia menyediakan fitur login, registrasi, reset password, verifikasi email, dan konfirmasi password — semuanya sudah terintegrasi dengan Tailwind CSS dan siap untuk dikustomisasi sesuai kebutuhan proyekmu.
🏗️ Kenapa Pakai Laravel Breeze untuk Autentikasi?
Bayangkan kamu mau bangun rumah. Ada dua pilihan: beli bata satu-satu terus susun sendiri, atau pakai prefab modular yang tinggal disambung. Kualitasnya sama bagus, tapi efisiensinya beda jauh. Itulah analogi Laravel Breeze vs bikin autentikasi dari scratch.
| Fitur | Manual | Laravel Breeze | Laravel Jetstream |
|---|---|---|---|
| ⏱️ Setup Time | 2–3 hari | ~5 menit | ~15 menit |
| 🎨 Kustomisasi | Sangat Bebas | Mudah | Terbatas |
| ⚡ Kompleksitas | Tinggi | Rendah ✅ | Menengah |
| 🛡️ Fitur Tim & 2FA | Perlu koding extra | ❌ Tidak ada | ✅ Tersedia |
| 📚 Cocok untuk | Proyek custom besar | Belajar & proyek ringan | SaaS / produksi |
Fakta Menarik
Laravel Breeze didownload lebih dari 2 juta kali per bulan di Packagist. Ini bukan sekadar starter kit — ini standar industri untuk proyek Laravel modern yang membutuhkan autentikasi cepat dan bersih.
🚀 Cara Install Autentikasi Laravel Breeze Step by Step
Oke, cukup teorinya. Mari kita langsung terjun ke praktik! Pastikan kamu sudah punya project Laravel yang fresh. Kalau belum, cek artikel sebelumnya di seri ini ya.
Prasyarat
Pastikan kamu sudah memiliki: PHP 8.1+, Composer, Node.js & NPM, dan project Laravel baru yang terhubung ke database. Database migration dasar (tabel users) harus sudah tersedia.
Install Package Laravel Breeze via Composer
Jalankan perintah berikut di root direktori project Laravel kamu:
$ composer require laravel/breeze --dev
Jalankan Perintah Instalasi Breeze
Setelah package terinstall, jalankan artisan command untuk scaffold autentikasi:
$ php artisan breeze:install
# Kamu akan ditanya pilihan stack:
# ❯ Blade with Alpine (Recommended untuk pemula)
# Livewire (TALL Stack)
# React with Inertia
# Vue with Inertia
# API only
💡 Untuk seri ini, pilih Blade with Alpine — paling ringan dan mudah dipahami untuk pemula.
Jalankan Migrasi Database
Breeze menambahkan migration untuk tabel password reset token. Jalankan migrasi:
$ php artisan migrate
Install & Build Assets (NPM)
Breeze menggunakan Tailwind CSS. Kamu perlu install dependency Node dan build asset-nya:
$ npm install
$ npm run dev
Tips Pro
Saat development, gunakan npm run dev untuk hot-reload. Ketika deploy ke production, ganti dengan npm run build agar asset di-minify dan lebih ringan.
🔍 Memahami Struktur File Autentikasi Laravel Breeze
Setelah instalasi selesai, Breeze akan generate sejumlah file dan direktori baru. Mari kita bedah satu per satu agar kamu paham — bukan sekadar copy-paste!
📁 Struktur File yang Dibuat Breeze
app/Http/Controllers/Auth/
├── AuthenticatedSessionController.php // Handle Login
├── ConfirmablePasswordController.php // Konfirmasi Password
├── EmailVerificationController.php // Verifikasi Email
├── NewPasswordController.php // Reset Password Baru
├── PasswordResetLinkController.php // Kirim Link Reset
└── RegisteredUserController.php // Registrasi User
resources/views/auth/
├── login.blade.php
├── register.blade.php
├── forgot-password.blade.php
└── reset-password.blade.php
routes/auth.php // Semua route autentikasi
Salah satu file terpenting yang perlu kamu pahami adalah routes/auth.php. Mari lihat isinya:
// Route untuk Guest (belum login)
Route::middleware('guest')->group(function () {
// Halaman & proses registrasi
Route::get('register', [RegisteredUserController::class, 'create'])
->name('register');
Route::post('register', [RegisteredUserController::class, 'store']);
// Halaman & proses login
Route::get('login', [AuthenticatedSessionController::class, 'create'])
->name('login');
Route::post('login', [AuthenticatedSessionController::class, 'store']);
// Forgot & Reset Password
Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])
->name('password.request');
Route::post('forgot-password', [PasswordResetLinkController::class, 'store'])
->name('password.email');
});
// Route untuk User yang Sudah Login
Route::middleware('auth')->group(function () {
// Logout
Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])
->name('logout');
});
Insight Penting
Perhatikan penggunaan middleware 'guest' dan 'auth'. Middleware 'guest' berarti hanya bisa diakses oleh pengguna yang belum login, sedangkan 'auth' hanya untuk yang sudah login. Ini yang disebut "penjaga gerbang" — kita akan bahas lebih dalam di Artikel 22!
🛠️ Kustomisasi & Proteksi Route dengan Autentikasi Breeze
Sistem autentikasi yang sudah terinstall belum cukup kalau kamu tidak tahu cara melindungi route-mu. Bayangkan punya pintu depan rumah tapi tidak ada kunci — percuma dong! Ini cara melindungi halaman dashboard agar hanya bisa diakses user yang sudah login:
// Halaman publik — bisa diakses siapa saja
Route::get('/', function () {
return view('welcome');
});
// 🔒 Halaman yang HANYA bisa diakses user yang login
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
// Atau gunakan group untuk banyak route sekaligus:
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::get('/orders', [OrderController::class, 'index'])->name('orders.index');
Route::get('/settings', [SettingController::class, 'index'])->name('settings');
});
Kamu juga bisa mengakses data user yang sedang login dari mana saja menggunakan helper auth():
// Di PHP / Controller
$user = auth()->user(); // Objek user
$userId = auth()->id(); // ID user
$isLoggedIn = auth()->check(); // true/false
// Di Blade Template
@auth
<p>Halo, {{ auth()->user()->name }}!</p>
@endauth
@guest
<a href="{{ route('login') }}">Silakan Login</a>
@endguest
Tips Kustomisasi View
Semua tampilan autentikasi ada di resources/views/auth/. Karena menggunakan Tailwind CSS, kamu bebas mengubah tampilan login dan register sesuai branding projekmu — cukup edit file Blade-nya langsung!
Insight: Redirect Setelah Login
Secara default, setelah login user akan diarahkan ke /dashboard. Kamu bisa mengubah redirect ini di app/Http/Controllers/Auth/AuthenticatedSessionController.php atau dengan mengubah konstanta HOME di RouteServiceProvider.php.
Autentikasi Laravel Breeze: Solusi Cerdas yang Wajib Dikuasai
✅ Laravel Breeze adalah starter kit autentikasi resmi Laravel yang menyediakan login, registrasi, reset password, dan verifikasi email dalam satu paket ringkas.
✅ Hanya butuh 4 perintah — composer install, artisan breeze:install, migrate, npm build — dan sistem autentikasi kamu siap jalan.
✅ Gunakan middleware 'auth' untuk melindungi route dan helper auth() untuk mengakses data user.
✅ Seluruh view tersedia di resources/views/auth/ dan siap dikustomisasi dengan Tailwind CSS.
Dengan menguasai autentikasi Laravel Breeze, kamu sudah punya fondasi keamanan yang kuat untuk setiap proyek web. Langkah selanjutnya? Pelajari Middleware — si penjaga gerbang yang akan kita bedah tuntas di artikel berikutnya!
Tags Artikel
No comments:
Post a Comment