Laravel Inertia Spatie #2 Install Spatie Laravel Permission


Laravel Inertia Spatie #2 Install Spatie Laravel Permission

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! 😊


Syahrizal AS
Back End Developer

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami