Tanggal :11 September 2024
membuat sistem role sederhana di Laravel

Membuat Sistem Role Mandiri di Laravel

Assalamualaikum Warohmatulloh Wabarokatuh, setelah sebelumnya bikin video tentang membuat sitem role mandiri di Laravel. Ternyata ada yang minta untuk versi tulisannya, jadi langsung aja nih kita buat versi tulisannya.

Instalasi Laravel

Pertama kita musti punya proyek Laravel dulu dong ya kan biar bisa bikinnya, oke langsung aja masuk ke folder yang pengen digunakan untuk proyeknya. Lalu jalankan perintah pada terminal :

laravel new role

atau jika tidak menggunakan Laravel Installer bisa langsung aja pakai composer.

composer create-project laravel/laravel role --prefer-dist

Setelah selesai instalasinya bisa jalankan php artisan serve jika memang hendak menggunakan php built in server.

Yang lain bisa gunakna XAMPP, Laragon, Valet, Docker apa aja yang penting hati kalian senang :P.

Membuat Autentikasi Dengan Laravel Breeze

Oke selanjutnya kita buat fitur fitur autentikasi semisal register, login dengan menggunakan starter kit dari Laravel, Laravel Breeze. Langsung instal aja kawan.

composer require laravel/breeze --dev

Setelah berhasil mengunduh Laravel Breeze, lanjut.

php artisan breeze:install

Perintah di atas akan menginisiasi fitur autentikasi, yang selanjutnya perlu menjalankan perintah di bawah ini untuk aset asetnya.

npm install && npm run dev

Migration & Factory

Selanjutnya sebelum membuat tabel & menjalankan migration. Kita perlu mengubah migration untuk tabel users agar kita bisa mendefinisikan role user.

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->string('role')->default('user');
        $table->rememberToken();
        $table->timestamps();
    });
}

Selanjutnya buat database dan lakukan konfigurasi pada proyek Laravel, kemudian jalankan migrationnya.

php artisan migrate

Kemudian biar praktis untuk mendapatkan data user kita gunakan saja factory, kita bisa eksekusi melalui tinker.

php artisan tinker

Kita buat data user sebanyak 5 aja.

App\Models\User::factory()->count(5)->create();

Setelah sukses kita akan ubah secara manual melalui database administrator nilai dari 1 data user agar punya role “admin”.

Membuat Sistem Role Mandiri di Laravel
gambar tabel users

Membuat Middleware Untuk Membatasi Akses User

Selanjutnya adalah membuat middleware yang bertugas untuk mengecek request yang datang dan memastikan hanya admin saja yang bisa mengaksesnya.

Tapi sebelum itu mari kita buat constant untuk rolenya terlebih dahulu pada model User. Gunanya apa? agar nanti dalam kode kita tidak perlu menulis stringnya secara langsung yang mana rawan typo ataupun salah pada huruf kapital.

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    const ROLE_USER = 'user';
    const ROLE_ADMIN = 'admin';

    ....
}

Barulah kita buat middlewarenya dengan nama AdminMiddleware.

php artisan make:middleware AdminMiddleware

Lalu perbarui kode pada method handle().

use App\Models\User;

public function handle(Request $request, Closure $next)
{
    if ($request->user()->role == User::ROLE_ADMIN) {
        return $next($request);
    }

    abort(401);
}

Selanjutnya daftarkan middleware pada App\Http\Kernel.php di bagian $routeMiddleware.

protected $routeMiddleware = [
    ....
    'admin' => \App\Http\Middleware\AdminMiddleware::class,
];

Setelahnya mari kita buat sebuah halaman untuk mengetes jika middleware ini sudah berfungsi bagaimana semestinya.

Route::get('admin', function () {
    return 'Admin Page';
})->middleware('auth', 'admin');

Pengujian

Sekarang waktunya kita menguji apa yang sudah kita lakukan. Caranya cukup mudah, login sebagai user dan sebagai admin, kemudian akses /admin, seharusnya user dengan role admin bisa akses halaman tersebut, sedangkan user dengan role user akan dilarikan ke halaman ini.

Sekian cara sederhana membuat sistem role mandiri di Laravel semoga membawa manfaat buat kita semua, versi video bisa tonton di sini.

Video Tutorial Membuat Sistem Role Mandiri di Laravel

Wassalamualaikum Warohmatulloh Wabarokatuh

Hai semua, saya Amirul seorang Software Engineer, suka membuat konten pembelajaran berupa artikel, video tutorial maupun podcast

Tinggalkan Balasan