Menambahkan Autentikasi User (Login & Register)
Laravel menyediakan sistem autentikasi bawaan yang aman dan siap pakai.
Untuk proyek web berita skala kecil–menengah, Laravel Breeze adalah pilihan yang ringan, cepat, dan mudah dipahami.
Dengan autentikasi ini, aplikasi dapat membedakan:
- Pengguna publik → hanya membaca berita
- Editor / Admin → mengelola konten berita
Tujuan Pembelajaran
Setelah mempelajari bagian ini, peserta mampu:
- Menginstal sistem login & register Laravel
- Memahami alur autentikasi Laravel
- Menambahkan role user (admin, editor, user)
- Membatasi akses halaman menggunakan middleware
A. Instalasi Laravel Breeze
Jalankan perintah berikut di terminal:
composer require laravel/breeze --dev
php artisan breeze:install
npm install
npm run dev
php artisan migrate
Hasil Instalasi
Perintah di atas otomatis membuat:
- Tabel users
- Route login / register / logout
- Middleware auth
- Tampilan login & register berbasis Blade
B. Menambahkan Role pada Tabel Users
Role digunakan untuk membedakan hak akses pengguna.
1. Membuat Migration
Buat file migrasi baru:
php artisan make:migration add_role_to_users_table --table=users
2. Isi File Migration
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('role')->default('editor'); // atau 'user' jika kamu mau
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('role');
});
}
Jalankan Migration:
php artisan migrate
Role yang digunakan:
- admin → akses penuh
- editor → kelola berita
- user → hanya melihat berita
C. Membatasi Akses dengan Middleware Role
1. Membuat Middleware
php artisan make:middleware RoleMiddleware
Gunakan di routes
Di routes/web.php:
use App\Http\Controllers\PostController;
// Hanya admin & editor yang bisa kelola post
Route::middleware(['auth', 'role:admin,editor'])->group(function () {
Route::resource('posts', PostController::class)->except(['show']);
});
// Publik tetap bisa lihat berita
Route::get('/posts/{post}', [PostController::class, 'show'])->name('posts.show');
Alur Hak Akses User
User Publik
└── Lihat Berita
Editor
├── Login
└── CRUD Berita
Admin
├── Login
├── CRUD Berita
└── Kelola User (opsional)
