- Langkah 1 - Install Laravel Spatie Permission
- Langkah 2 - Publish Konfigurasi
- Langkah 3 - Konfigurasi Model User
- Langkah 4 - Register Middleware
- Kesimpulan
Sekarang kita akan belajar bagaimana cara melakukan installasi dan konfigurasi Laravel Spatie Permission di dalam aplikasi yang sedang kita kembangkan
Langkah 1 - Install Laravel Spatie Permission
composer require spatie/laravel-permission:6.10.1

Langkah 2 - Publish Konfigurasi
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
Dari perintah di atas, kita akan mendapatkan 2 file baru, yaitu:
config/permission.php
database/migrations/2024_12_14_023311_create_permission_tables.php
Jika kita lihat, di dalam file migration Laravel Spatie Permission akan membuat 5 table, yaitu :
roles
permissions
role_has_permissions
model_has_roles
model_has_permissions
Langkah 3 - Konfigurasi Model User
Kita lanjutkan untuk menambahkan Traits HasRoles milik Laravel Spatie Permission di dalam Model User. Ini digunakan agar kita bisa menggunakan fitur dan relasi yang ada di dalam Laravel Spatie Permission melalui Model User.
Silahkan buka file app/Models/User.php, kemudian ubah kode-nya menjadi seperti berikut ini :
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
/** @use HasFactory<\Database\Factories\UserFactory> */
use HasFactory, Notifiable, HasRoles;
/**
* The attributes that are mass assignable.
*
* @var list<string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var list<string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
public function getUserPermissions()
{
return $this->getAllPermissions()->mapWithKeys(fn($permission) => [$permission['name'] => true]);
}
}
Di atas kita import Traits dari Laravel Spatie, kurang lebih seperti berikut ini :
use Spatie\Permission\Traits\HasRoles;
kemudian kita gunakan Traits tersebut di dalam Model Class User, kurang lebih seperti berikut ini :
use HasFactory, Notifiable, HasRoles;
kita menambahkan method baru dengan nama getPermissionArray, method tersebut akan kita gunakan untuk mendapatkan list permissions berdasarkan user yang sedang login.
public function getUserPermissions()
{
return $this->getAllPermissions()->mapWithKeys(fn($permission) => [$permission['name'] => true]);
}
Langkah 4 - Register Middleware
Agar Laravel Sptie Permission dapat digunakan di dalam aplikasi, maka kita perlu melakukan register middleware. Silahkan buka file bootstrap/app.php, kemudian tambahkan kode berikut ini di dalam withMiddleware.
Jika file bootstrap/app.php ditulis secara lengkap, kurang lebih seperti berkut ini :
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Kesimpulan
Pada artikel ini, kita telah belajar Installasi Laravel Spatie Permission. Jika teman-teman ada kendala saat belajar, silahkan bisa bertanya melalui kolom komentar atau group Telegram SantriKoding.
Semoga bermanfaat! 😊
Artikel ini dibaca sebanyak 10.375 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...