Perkenalan Laravel 11 dan Spatie Role Permissions

Dalam era digital yang serba cepat ini, kebutuhan untuk memiliki sebuah website yang cepat dan juga aman menjadi aspek yang sangat penting. Banyak perusahaan yang sedang berlomba-lomba mengejar trend terbaru untuk tetap relevan dan kompetitif dalam menjangkau lebih banyak customer terbaru. Salah satu framework php yang banyak digunakan untuk membangun aplikasi web yang cepat dan aman adalah Laravel versi 11.

Apa Itu framework Laravel?

Laravel adalah framework PHP yang dirancang untuk pengembangan aplikasi web dengan sintaks yang ekspresif dan elegan. Laravel membuat pengembangan website menjadi menyenangkan bagi web developer dengan menyederhanakan tugas-tugas utama yang dilakukan dalam sebagian besar proyek web, seperti autentikasi, routing, sesi, dan juga caching.

Laravel cocok banget dipake untuk perusahaan kecil yang sedang mencoba membangun bisnis online seperti software as a service yang terintegrasi dengan payment gateway midtrans atau xendit (cukup popular di indonesia).

Kapan Menggunakan Laravel?

Laravel sangat cocok digunakan ketika Anda membutuhkan pengembangan aplikasi yang cepat dan efisien. Dengan berbagai fitur bawaan dan ekosistem yang kaya, Laravel memudahkan pengembang untuk membuat aplikasi web yang mudah diperbesar (scalable) dan terstruktur dengan baik sehingga mudah di-maintenance. Kita dapat menggunakan Laravel untuk berbagai jenis proyek, mulai dari aplikasi kecil hingga aplikasi bisnis yang kompleks.

Ide projek menarik yang bisa dibangun dengan laravel

Jika kamu ingin coba belajar laravel maka kami memiliki beberapa rekomendasi projek yang cocok digunakan sebagai bahan latihan dan portfolio pertama kita sebagai berikut:

  • website ujian online (CBT)
  • website jual beli mobil bekas
  • website apotek online
  • website booking cuci mobil
  • website jual beli barang bekas

Seringnya Projek Membutuhkan User Roles

Dalam pengembangan aplikasi website yang modern, sering kali ada kebutuhan untuk mengelola hak akses pengguna yang berbeda-beda. Misalnya, dalam aplikasi e-commerce, Anda mungkin memiliki pengguna dengan peran sebagai admin, penjual, dan pembeli. Masing-masing peran ini memiliki hak akses yang berbeda untuk berbagai fitur dalam aplikasi.

Contoh User Roles Sederhana

Beberapa contoh user roles yang umum dalam sebuah aplikasi antara lain:

  • Admin: Memiliki akses penuh untuk mengelola seluruh konten dan pengguna dalam aplikasi.
  • Editor: Memiliki akses untuk mengedit dan mempublikasikan konten.
  • User: Memiliki akses terbatas sesuai dengan fitur yang diizinkan untuk pengguna biasa.
  • Guest: Pengguna yang belum terdaftar, biasanya hanya memiliki akses untuk melihat konten tertentu.

Membuat User Roles dengan Spatie

Untuk mengelola user roles dengan lebih cepat dan efisien, kita bisa menggunakan package Spatie Laravel Permission. Package ini menyediakan cara yang mudah dan cepat untuk mengelola peran dan izin pengguna dalam aplikasi Laravel. Oh ya package spatie juga sudah dipercaya oleh jutaan developer di seluruh dunia untuk projek kecil hingga besar.

Membuat Seeder Permission

Langkah pertama adalah membuat seeder untuk menyimpan role dan permissions. Seeder ini akan memasukkan data permissions ke dalam database secara otomatis saat dijalankan. Berikut adalah contoh seeder untuk permissions:

<?php

namespace Database\\Seeders;

use App\\Models\\User;
use Illuminate\\Database\\Console\\Seeds\\WithoutModelEvents;
use Illuminate\\Database\\Seeder;
use Spatie\\Permission\\Models\\Permission;
use Spatie\\Permission\\Models\\Role;

class RolePermissionSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        //
        $permissions = [
            'manage countries',
            'manage cities',
            'manage hotels',
            'manage hotel bookings',
            'checkout hotels',
            'view hotel bookings',
        ];

        foreach($permissions as $perm){
            Permission::firstOrCreate([
                'name' => $perm
            ]);
        }

        $customerRole = Role::firstOrCreate([
            'name' => 'customer'
        ]);

        $customerPermissions = [
            'checkout hotels',
            'view hotel bookings',
        ];

        $customerRole->syncPermissions($customerPermissions);

        $superAdminRole = Role::firstOrCreate([
            'name' => 'super_admin'
        ]);

        $user = User::create([
            'name' => 'Super Admin',
            'email' => '[email protected]',
            'avatar' => 'images/dummyavatar.png',
            'password' => bcrypt('123qwe123')
        ]);

        $user->assignRole($superAdminRole);

    }
}

Role Berhasil Dibuat pada database

Setelah seeder dijalankan, role dan permissions akan otomatis dibuat dalam tabel database proyek Anda. Berikut contoh penggunaan seeder dalam Laravel:


php artisan db:seed --class=RolePermissionSeeder

Aktifkan Fitur Gate untuk Super Admin

Untuk memastikan bahwa super admin memiliki akses ke semua fitur, kita dapat mengaktifkan fitur gate dalam Laravel. Berikut adalah contoh implementasi gate untuk super admin:


use Illuminate\\Support\\Facades\\Gate;

Gate::before(function ($user, $ability) {
    return $user->hasRole('super_admin') ? true : null;
});

Dengan mengaktifkan gate ini, pengguna dengan peran super_admin akan memiliki akses penuh ke semua fitur dalam web/aplikasi (routes).

Kesimpulan

Laravel 11 dengan Spatie Role Permissions menyediakan cara yang cepat dan efisien untuk mengelola hak akses pengguna dalam aplikasi web. Dengan fitur-fitur yang ada, Anda dapat dengan mudah membuat dan mengelola user roles, serta memastikan aplikasi Anda tetap cepat dan aman. Menggunakan package seperti Spatie Laravel Permission tidak hanya mempercepat proses pengembangan, tetapi juga memberikan fleksibilitas yang lebih besar dalam mengelola hak akses pengguna.

Jika kamu ingin belajar lebih banyak materi laravel 11 dan spatie maka silahkan cek kelas-kelas terbaru kami pada website BuildWithAngga, sampai jumpa di kelas!