Skip to content
logo

Kotak Kode Pemograman

Sharing tentang bahasa pemograman

  • WordPress
    • Plugin
  • Tutorial
    • PHP
  • Laravel
  • Tools Webbsite
  • Desain
  • Source Code
  • Web Developer
  • Toggle search form

Cara Membuat Role User di Laravel 12 Tanpa Menggunakan Package dan Menampilkan Menu di Blade Sesuai Role User

Posted on 20/07/2025 By kotakkode No Comments on Cara Membuat Role User di Laravel 12 Tanpa Menggunakan Package dan Menampilkan Menu di Blade Sesuai Role User

Cara Membuat Role User di Laravel Tanpa Menggunakan Package dan Menampilkan Menu di Blade Sesuai Role User

Berikut adalah panduan langkah demi langkah untuk membuat role user di Laravel tanpa memanfaatkan package eksternal:


Langkah 1: Buat Tabel roles dan user_roles

1.1 Membuat Tabel roles

Buat tabel roles untuk menyimpan daftar role yang tersedia:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateRolesTable extends Migration
{
    public function up()
    {
        Schema::create('roles', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('description')->nullable();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('roles');
    }
}

1.2 Membuat Tabel user_roles

Buat tabel user_roles untuk menyimpan relasi antara pengguna dan role:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUserRolesTable extends Migration
{
    public function up()
    {
        Schema::create('user_roles', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('role_id');
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
        });
    }

    public function down()
    {
        Schema::dropIfExists('user_roles');
    }
}

Langkah 2: Buat Model Role dan UserRole

2.1 Membuat Model Role

Model ini digunakan untuk mengelola data role:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    protected $fillable = ['name', 'description'];

    public function users()
    {
        return $this->belongsToMany(User::class, 'user_roles');
    }
}

2.2 Membuat Model UserRole

Model ini bertugas mengelola relasi antara user dan role:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class UserRole extends Model
{
    protected $table = 'user_roles';

    protected $fillable = ['user_id', 'role_id'];

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function role()
    {
        return $this->belongsTo(Role::class);
    }
}

Langkah 3: Tambahkan Relasi Role ke Model User

Tambahkan relasi role ke model User untuk menyambungkan dengan roles. Berikut implementasinya:

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    // ...

    public function roles()
    {
        return $this->belongsToMany(Role::class, 'user_roles');
    }

    public function hasRole($role)
    {
        return $this->roles()->where('name', $role)->exists();
    }
}

Langkah 4: Buat Middleware untuk Memeriksa Role

Buat middleware bernama CheckRole untuk memverifikasi apakah pengguna memiliki role tertentu atau tidak:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckRole
{
    public function handle(Request $request, Closure $next, $role)
    {
        if (!$request->user()->hasRole($role)) {
            abort(403, 'Unauthorized action.');
        }

        return $next($request);
    }
}

Catatan:
Jangan lupa mendaftarkan middleware ini di file Kernel.php pada bagian $routeMiddleware:

protected $routeMiddleware = [
    // ...
    'role' => \App\Http\Middleware\CheckRole::class,
];

Langkah 5: Tampilkan Menu di Blade Sesuai Role

Anda dapat menampilkan menu yang spesifik untuk setiap role pada template Blade. Berikut contohnya dalam file layouts/app.blade.php:

<nav>
    <ul>
        @if(auth()->user()->hasRole('admin'))
            <li><a href="{{ route('admin.dashboard') }}">Dashboard</a></li>
        @endif

        @if(auth()->user()->hasRole('user'))
            <li><a href="{{ route('user.profile') }}">Profile</a></li>
        @endif
    </ul>
</nav>

Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda berhasil:

  1. Membuat tabel untuk role dan relasi pengguna dengan role.
  2. Membuat model untuk mengelola data role dan relasi.
  3. Menambahkan relasi ke dalam model User.
  4. Membuat middleware untuk membatasi akses berdasarkan role.
  5. Menampilkan menu yang berbeda di Blade sesuai role pengguna.

Teknik ini memungkinkan Anda untuk mengelola role pengguna tanpa menggunakan package tambahan. 🎉

Laravel, Laravel 12

Post navigation

Previous Post: Tahap Pengembangan 17
Next Post: Cara aktivasi Windows 10 100% Permanen

Related Posts

Laravel 403 Forbidden Upload to resfull API Laravel
Cara install laravel Laravel
Solusi CURL ERROR 60: SSL Certificate Problem di LARAVEL atau di curl PHP Laravel
Membuat migration dan seeder Laravel otomatis dari database Laravel
Cara membuat Value selected Dropdown di halaman edit blade laravel Blade
Update data secara bersamaan di Laravel Controller

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Copyright © 2026 Kotak Kode Pemograman.

Powered by PressBook Grid Blogs theme