Peran dan Hak Akses Pengguna di Laravel

Pada kesempatan ini, saya akan membagikan tutorial lengkap tentang bagaimana menerapkan peran dan hak akses pengguna di Laravel. Tutorial ini akan dibagi menjadi beberapa sesi karena proyek ini akan dimulai dari pembuatan proyek Laravel sampai ke pembuatan tahap pembatasan hak akses modul.

Pendahuluan

Banyak sekali package yang ditawarkan komunitas Laravel untuk menerapkan peran dan hak akses, tapi kali ini saya memilih spatie/laravel-permission sebagai manajemen peran dan hak akses di aplikasi Laravel.

Manajemen peran dan hak akses pengguna di setiap aplikasi sangat diperlukan. Tujuannya adalah untuk membatasi akses pengguna ke modul atau fitur yang ada di aplikasi berdasarkan grup pengguna.

Kita ambil contoh; Dalam sebuah aplikasi blog terdapat 2 modul utama yaitu Modul Kategori dan Modul Tulisan. Kedua modul tersebut dapat diakses secara bebas oleh grup Admin. Adapun grup Author yang hanya dapat mengakses modul tulisan saja.

Dari contoh itu, menandakan bahwa aplikasi membutuhkan manajemen peran pengguna. Bagaimana jika Admin memberikan izin ke grup Author untuk mengakses Modul Kategori, dengan catatan mereka hanya dapat mengubah saja tanpa bisa menghapus kategori yang sudah ada? Disinilah kita perlu menerapkan yang namanya hak akses.

Memulai dan Instalasi

Panduan ini akan dimulai dari pembuatan proyek baru aplikasi Laravel. Jika ingin menggunakan proyek yang sudah ada, Anda cukup mengikuti langkah-langkah untuk mengkonfigurasi spatie/laravel-permission saja.

1. Membuat Proyek Laravel

Anda dapat menjalankan perintah seperti dibawah ini untuk membuat proyek Laravel. Anda juga dapat membaca cara Membuat Aplikasi Dasar dengan Laravel.

$ laravel new tutorial-laravel-permission

Konfigurasi Basis Data

Setelah selesai menjalankan perintah diatas, konfigurasikan koneksi basis data MySQL dengan melakukan perubahan pada file .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=33061
DB_DATABASE=laravel
DB_USERNAME=trooper
DB_PASSWORD=secret

Aktifkan Otentikasi Bawaan

Sekarang kita akan mengktifkan fitur otentikasi bawaan Laravel. Jalankan perintah dibawah ini untuk mengaktifkan:

$ php artisan make:auth

Laravel akan menambahkan beberapa file yan diperlukan untuk otentikasi bawaan tersebut. Anda dapat memeriksa apakah otentikasi bawaan sudah aktif atau belum, dengan cara membuka aplikasi melalui browser dan link login dan register akan ditampilkan. Seperti gambar yang ditampilkan dibawah ini:

Baca Juga:  Mengenal Laravel PHP Framework Lebih Dekat
Laravel Login dan Register

2. Instal Package Permission

Pada tahap ini, kita akan menginstal package spatie/laravel-permission menggunakan composer. Jalankan perintah dibawah ini:

$ composer require spatie/laravel-permission

Setelah selesai menambahkan package diatas, ada beberapa file yang perlu dikonfigurasi diantaranya: config/app.php dan app/User.php.

Service Provider

Tambahkan Service Provider dengan cara mengubah file config/app.php dengan:

'providers' => [
    ...
    Spatie\Permission\PermissionServiceProvider::class,
];

Package tersebut akan mempengaruhi basis data Anda dengan menambahkan beberapa tabel baru. Jika Anda ingin mengubah tabel-tabel tersebut, Anda dapat menjalankan perintah publish package:

$ php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"

Setelah file migrasi berhasil di publish, Anda dapat menjalankan perintah dibawah ini untuk memproses migrasi baru ke basis data Anda:

$ php artisan migrate

Penyesuaian Schema (Opsional)

Jika Anda ingin mengubah nama tabel yang dibuatkan otomatis, Anda dapat mempublish konfigurasi package dengan menjalankan perintah dibawah ini:

$ php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"

Setelah menjalankan perintah diatas, Anda akan mendapatkan file konfigurasi baru config/permission.php. Anda dapat mengubah nilai konfigurasi pada file tersebut.

Setting Model app/User.php

Sebelum menggunakan package ini, Anda harus melakukan konfigurasi pada file code/app/User.php. Model tersebut akan memiliki fungsi untuk menjalankan fitur spatie/laravel-permission.

use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;

    ...
}

Kesimpulan

Mengakhiri sesi ini, kita telah menyelesaikan pembuatan proyek Laravel dan memasang paket spatie/laravel-permission. Dalam sesi berikutnya kita akan membuat blog sederhana sebagai modul dalam proyek ini.