Untuk menerapkan autentikasi pengguna dasar di Laravel menggunakan package Spatie Laravel Permission, kamu bisa mengikuti langkah-langkah berikut. Spatie Laravel Permission memungkinkan kamu untuk mengelola peran dan izin secara fleksibel dalam aplikasi Laravel kamu.
1. Instalasi Laravel
Jika belum menginstal Laravel, jalankan perintah berikut:
composer create-project --prefer-dist laravel/laravel blog
2. Instalasi Package Laravel UI dan Spatie Laravel Permission
Instal package Laravel UI untuk scaffolding autentikasi dan Spatie Laravel Permission untuk manajemen peran dan izin:
composer require laravel/ui
composer require spatie/laravel-permission
3. Setup Laravel UI untuk Autentikasi
Jalankan perintah berikut untuk mengatur scaffolding autentikasi:
php artisan ui bootstrap --auth
Kemudian, install dependencies NPM dan compile assets:
npm install && npm run dev
4. Publikasi dan Migrasi Spatie Laravel Permission
Publikasikan file konfigurasi dan migrasi untuk Spatie Laravel Permission:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
Jalankan migrasi:
php artisan migrate
5. Konfigurasi Model User
Tambahkan trait HasRoles ke model User (app/Models/User.php):
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use Notifiable, HasRoles;
// ...
}
6. Konfigurasi Middleware
Edit file app/Http/Kernel.php untuk menambahkan middleware role:
protected $routeMiddleware = [
// ...
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
];
7. Membuat Role dan Permission
kamu bisa membuat peran dan izin dalam seeder atau menggunakan tinker. Contoh seeder (database/seeders/DatabaseSeeder.php):
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class DatabaseSeeder extends Seeder
{
public function run()
{
$roleAdmin = Role::create(['name' => 'admin']);
$roleUser = Role::create(['name' => 'user']);
Permission::create(['name' => 'edit articles']);
Permission::create(['name' => 'delete articles']);
$roleAdmin->givePermissionTo('edit articles');
$roleAdmin->givePermissionTo('delete articles');
}
}
Jalankan seeder:
php artisan db:seed
8. Menetapkan Role ke Pengguna
kamu bisa menetapkan peran ke pengguna di seeder, controller, atau menggunakan tinker. Contoh menetapkan peran di seeder:
use App\Models\User;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
class DatabaseSeeder extends Seeder
{
public function run()
{
$roleAdmin = Role::create(['name' => 'admin']);
$roleUser = Role::create(['name' => 'user']);
$admin = User::create([
'name' => 'Admin User',
'email' => 'admin@example.com',
'password' => bcrypt('password'),
]);
$admin->assignRole('admin');
}
}
9. Melindungi Route dengan Middleware
kamu dapat melindungi route menggunakan middleware role atau permission. Contoh:
Route::group(['middleware' => ['role:admin']], function () {
Route::get('/admin', [AdminController::class, 'index']);
});
10. Verifikasi Implementasi
Verifikasi bahwa autentikasi bekerja dengan mencoba login sebagai pengguna dengan berbagai peran dan memeriksa akses ke route yang dilindungi.
Dengan langkah-langkah di atas, kamu telah mengatur autentikasi dasar dengan Laravel menggunakan package Spatie Laravel Permission. kamu dapat membuat, menetapkan, dan memeriksa peran dan izin pengguna untuk mengelola akses ke berbagai bagian aplikasi kamu.