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 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.
Wassalamualaikum Warohmatulloh Wabarokatuh
Tinggalkan Balasan
Anda harus masuk untuk berkomentar.