Panduan Membuat Login Multi User di Laravel

Panduan Membuat Login Multi User di Laravel - Inovasicode.com
Panduan Membuat Login Multi User di Laravel - Inovasicode.com

Panduan Membuat Login Multi User di Laravel – Dalam pengembangan aplikasi web, sistem login multi user adalah salah satu fitur penting untuk mengelola akses berdasarkan peran pengguna. Dengan menggunakan Laravel, Anda dapat dengan mudah membuat sistem login multi user yang aman dan efisien. Artikel ini akan memberikan panduan langkah demi langkah untuk membuat login multi user di Laravel, termasuk pembuatan tabel role, middleware CheckRole, dan implementasi pada rute aplikasi.

 

Langkah-Langkah Membuat Login Multi User di Laravel

1. Membuat Field role_id di Tabel users

Langkah pertama adalah menambahkan field role_id pada tabel users untuk mengidentifikasi peran setiap pengguna.

a. Menambahkan Field role_id

Gunakan perintah berikut untuk membuat file migrasi baru:

php artisan make:migration add_role_id_to_users_table --table=users  

Edit file migrasi yang dibuat di folder database/migrations:

public function up()  
{  
    Schema::table('users', function (Blueprint $table) {  
        $table->unsignedBigInteger('role_id')->after('id')->nullable();  
        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');  
    });  
}  
  
public function down()  
{  
    Schema::table('users', function (Blueprint $table) {  
        $table->dropForeign(['role_id']);  
        $table->dropColumn('role_id');  
    });  
}  

Jalankan migrasi:

php artisan migrate  

 

2. Membuat Tabel roles

Tabel roles akan digunakan untuk menyimpan informasi mengenai peran pengguna.

a. Membuat Migrasi untuk Tabel roles

Gunakan perintah berikut:

php artisan make:migration create_roles_table  

Edit file migrasi:

public function up()  
{  
    Schema::create('roles', function (Blueprint $table) {  
        $table->id();  
        $table->string('name')->unique();  
        $table->timestamps();  
    });  
}  
  
public function down()  
{  
    Schema::dropIfExists('roles');  
}  

Jalankan migrasi:

php artisan migrate  

b. Menambahkan Data Role Default

Gunakan seeder untuk mengisi data awal ke tabel roles.

php artisan make:seeder RoleSeeder  

Edit file RoleSeeder:

use Illuminate\Database\Seeder;  
use App\Models\Role;  
  
class RoleSeeder extends Seeder  
{  
    public function run()  
    {  
        Role::create(['name' => 'Admin']);  
        Role::create(['name' => 'User']);  
    }  
}  

Jalankan seeder:

php artisan db:seed --class=RoleSeeder  

3. Membuat Middleware CheckRole

Middleware CheckRole digunakan untuk memfilter akses berdasarkan peran pengguna.

a. Membuat Middleware Baru

Gunakan perintah berikut:

php artisan make:middleware CheckRole  

Edit file CheckRole.php:

namespace App\Http\Middleware;  
  
use Closure;  
use Illuminate\Http\Request;  
  
class CheckRole  
{  
    public function handle(Request $request, Closure $next, $role)  
    {  
        if (!$request->user() || $request->user()->role->name !== $role) {  
            abort(403, 'Unauthorized action.');  
        }  
        return $next($request);  
    }  
}  

b. Mendaftarkan Middleware

Tambahkan middleware ke file app/Http/Kernel.php:

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

4. Implementasi Middleware pada Rute

Gunakan middleware CheckRole pada rute untuk membatasi akses berdasarkan peran pengguna.

a. Menambahkan Relasi Role pada Model User

Edit file app/Models/User.php:

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

b. Membuat Rute dengan Middleware

Tambahkan middleware pada rute di file routes/web.php:

use App\Http\Controllers\AdminController;  
use App\Http\Controllers\UserController;  
  
Route::middleware(['auth', 'checkRole:Admin'])->group(function () {  
    Route::get('/admin/dashboard', [AdminController::class, 'index']);  
});  
  
Route::middleware(['auth', 'checkRole:User'])->group(function () {  
    Route::get('/user/dashboard', [UserController::class, 'index']);  
});  

 

Kesimpulan

Dengan mengikuti panduan ini, Anda dapat membangun sistem login multi user di Laravel yang aman dan fleksibel. Fitur ini memungkinkan Anda untuk mengelola akses berdasarkan peran pengguna, memastikan aplikasi tetap terorganisir dan efisien.

Implementasi sistem login multi user ini mencakup pembuatan tabel role, penambahan field role_id di tabel users, middleware CheckRole, dan integrasinya pada rute. Dengan langkah-langkah ini, Anda dapat menghadirkan pengalaman pengguna yang lebih terstruktu