Rumahweb Journal
banner - belajar laravel bagian 20

Belajar Laravel Bagian 20 – Membuat Roles Multi Level User

Saat membuat aplikasi berbasis website, sering kali kita perlu membedakan akses antara admin, pengguna biasa, hingga mungkin moderator. Di sinilah pentingnya menerapkan sistem multi level user di website. Dengan sistem ini, setiap pengguna bisa memiliki peran (role) yang berbeda dan hanya bisa mengakses fitur sesuai haknya.

Pada sesi belajar laravel bagian ke 20 ini, kita akan belajar cara membuat sistem roles akses pengguna berdasarkan peran masing-masing user.

Selain itu, kita akan membangun fitur login yang membedakan akses tiap user, mulai dari membuat tabel database untuk menyimpan data pengguna, mengatur middleware dan proteksi route sesuai role, hingga membuat controller yang menjalankan logikanya.

Sebelum mengikuti sesi belajar Laravel ini, pastikan Anda sudah mengikuti sesi sebelumnya. Panduan ini adalah lanjutan dari materi tentang pembuatan login di Laravel. Jika belum, Anda bisa membacanya terlebih dahulu di halaman Belajar Laravel.

Apa itu Roles?

Role adalah peran yang dimiliki oleh setiap pengguna dalam sistem, misalnya admin, editor, atau user biasa. Setiap role memiliki tanggung jawab dan batasan akses yang berbeda saat menggunakan sistem.

Biasanya, setiap role memiliki satu set permission, yaitu hak akses yang menentukan apa saja yang boleh dilakukan oleh pengguna dengan peran tersebut di dalam sistem.

Promo Hosting Murah Rumahweb

Membuat Roles di Laravel

Berikut adalah step by step cara membuat roles di Laravel. Dalam panduan ini, kami menggunakan localhost dengan aplikasi Laragon.

Step 1. Membuat model dan migration data

Langkah pertama, kita akan menggunakan model dan migration data user yang sudah disediakan oleh laravel untuk membuat roles dengan field name, email, role, serta password.

Struktur migration table user yang ada pada folder database/migration dengan nama file berikut ****_**_**_*****_create_users_table.php (tanda * sesuai dengan nama file yang ada pada komputer Anda).

Membuat migration data

Struktur Models yang ada pada folder App/Models/User dengan nama file berikut: user.php.

Membuat migration models

Step 2. Membuat controller Login

Untuk dapat membuat controller, Anda dapat untuk menjalankan perintah berikut:

php artisan make:controller LoginController
Membuat controller Login

Step 3. Membuat isi dari controller login

Langkah selanjutnya, kita akan membuat function view untuk menampilkan formlogin yang akan kita buat. Berikut adalah contohnya

membuat conroller untuk view login

Step kedua, kita membuat login function untuk memproses data dari email dan password yang pengguna inputkan nantinya. Jangan lupa menambahkan berikut:

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\User;

Pada bagian atas sebelum class LoginController.

membuat controller yang memproses autentikasi login

Step ketiga, kita membuat logout function untuk memproses saat mengakhiri session login.

membuat controller logout

Step 4. Menjalankan Migrate data yang sudah dibuat

Untuk dapat menjalankan migrate data yang sudah dibuat sebelumnya, kita dapat menjalankan perintah berikut:

Bisa menggunakan php artisan migrate jika data belum di migrate dan belum dilakukan perubahan pada file migrationnya, jika sudah termigrate dan sudah melakukan perubaha pada file migrationnya bisa menggunakan php artisan migrate:fresh

migrate data

Step 5. Menambahkan Route Login serta route permission

Fungsi route di Laravel untuk mengatur URL (alamat web) ke fungsi atau controller tertentu dalam aplikasi. Di dalam file routes/web.php, tambahkan route menampilkan form login serta mengarahkan user sesuai rolesnya.

menambahkan route website

Step 6. Membuat middleware untuk roles

Fungsi middleware di Laravel melindungi route dan memeriksa izin pengguna. Untuk dapat membuat middleware, Anda dapat untuk menjalankan perintah berikut:

php artisan make:middleware CheckRole
membuat middleware

Kemudian, silahkan dapat melakukan Edit file app/Http/Middleware/CheckRole.php untuk membuat role yang diinginkan seperti berikut:

membuat handle middleware

Jangan lupa menambahkan use Illuminate\Support\Facades\Auth; diatas class CheckRole

Setelah melakukan konfigurasi Rolenya silahkan dapat menambahkan middleware yang sudah dibuat pada bootstrap/app,php Jika menggunakan laravel 11, jika menggunakan laravel 10 kebawah ditambahkan pada app/http/kernel.php.

pada bootstrap/app.php

menambahkan middleware di bootstrap/app.php

Pada app/http/kernel.php ada pada baris protected $routeMiddleware

menambahkan middleware di http/kernel.php

Step 7. Membuat tampilan view login, dan tampilan untuk superadmin serta penulis

Pada step ini, kita akan membuat tampilan view formlogin yang akan dipakai untuk menginputkan email dan password untuk loginnya. Kita juga akan membuat tampilan superadmin dan penulis untuk dapat melakukan pengujian terkait roles permissionnya. Berikut contoh skrip yang bisa Anda gunakan:

Skrip view Login

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Login</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container d-flex justify-content-center align-items-center vh-100">
        <div class="card p-4 shadow" style="width: 400px;">
            <h3 class="text-center mb-4">Login</h3>
            <form action="{{ route('login') }}" method="POST">
                @csrf
                <div class="mb-3">
                    <label for="email" class="form-label">Email</label>
                    <input type="email" name="email" class="form-control" id="email" required value="{{ old('email') }}">
                    @error('email')
                        <div class="text-danger">{{ $message }}</div>
                    @enderror
                </div>
                <div class="mb-3">
                    <label for="password" class="form-label">Password</label>
                    <input type="password" name="password" class="form-control" id="password" required>
                    @error('password')
                        <div class="text-danger">{{ $message }}</div>
                    @enderror
                </div>
                <button type="submit" class="btn btn-primary w-100">Login</button>
            </form>
        </div>
    </div>
</body>
</html>

Skrip view superadmin

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Superadmin</title>
</head>
<body>
    <h1>Dashboard Superadmin</h1>
    <p>Selamat datang, {{ Auth::user()->name }}</p>
    <form method="POST" action="{{ route('logout') }}">
        @csrf
        <button type="submit">Logout</button>
    </form>
</body>
</html>

Skrip view penulis

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Penulis</title>
</head>
<body>
    <h1>Dashboard Penulis</h1>
    <p>Selamat datang, {{ Auth::user()->name }}</p>
    <form method="POST" action="{{ route('logout') }}">
        @csrf
        <button type="submit">Logout</button>
    </form>
</body>
</html>

Step 8. Membuat seeder untuk mengirimkan data ke database

Untuk mengisi data ke dalam database dengan cepat, kita perlu membuat dahulu seeder datanya dengan menjalankan perintah berikut:

php artisan make:seeder UserSeeder

Isi seeder yang sudah dibuat sebelumnya pada database/seeders/UserSeeder.php, dengan berikut:

membuat seeder untuk mengisi data di table user

Setelah membuat seeder, silahkan dapat menjalankan perintah berikut untuk dapat mengirimkan data ke database.

php artisan db:seed --class=UserSeeder

Pengujian

Silahkan dapat menjalankan php artisan serve. untuk running website laravelnya kemudian silahkan lakukan login sesuai user yang sudah dibuat. berikut contohnya.

Berikut tampilan jika berhasil melakukan login dengan role superadmin akan diarahkan ke page /superadmin. dan ketika mencoba akses page dari penulis maka akan 403 jika skrip sesuai dan sebaliknya.

multi level user di laravel - belajar laravel
Page 403 jika tidak dizinkan akses

Penutup

Menerapkan sistem roles di Laravel adalah cara efektif untuk mengatur hak akses pengguna berdasarkan peran atau posisi mereka dalam aplikasi. Dengan sistem ini, Anda bisa mengelompokkan izin (permission) secara lebih logis dan terstruktur.

Selain itu, penggunaan roles juga meningkatkan keamanan aplikasi karena setiap pengguna hanya bisa mengakses fitur yang sesuai dengan perannya. Hal ini sangat membantu dalam mengelola otorisasi, terutama pada aplikasi berskala besar dengan banyak jenis pengguna.

Demikian artikel belajar Laravel bagian 20 tentang cara membuat roles multi level user login di Laravel. Ikuti terus sesi belajar Laravel dari Rumahweb Indonesia yang kami publikasi setiap bulan. Semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 3.7 / 5. Vote count: 3

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Arief Hidayatullah

Arief Hidayatullah adalah seorang Technical Support di Rumahweb Indonesia yang memiliki minat dan keahlian dalam pengembangan web. Dengan pengalaman dan pengetahuannya di bidang teknologi, Arief memiliki ketertarikan khusus dalam pengembangan web menggunakan Laravel, sebuah framework PHP yang populer. Dengan semangat belajar dan eksplorasi teknologi, Arief terus mengembangkan keterampilannya untuk menciptakan solusi web yang efisien dan inovatif.

banner pop up - Pindah Hosting ke Rumahweb