Cara Membuat Multiple User di Laravel dengan Middleware

Share:

Halo semuanya kembali lagi di sahretech. Baiklah pada kesempatan yang berbahagia kali ini saya akan berbagi tutorial laravel, tentang cara bagaimana membuat multi user dengan menggunakan middleware. Penasaran?, ayo ikuti tutorialnya berikut ini.


Middleware adalah salah satu fitur yang disediakan oleh laravel untuk membuat filter pada permintaan http atau routing ke dalam aplikasi yang kita buat. Untuk tiap status user yang berbeda, kita bisa membuat middleware yang berbeda pula, jika autentikasi user tidak berhasil maka user akan diarahkan ke halaman lain. Middleware sangat penting untuk dipelajari, pasalnya dengan fitur ini kalian jadi lebih mudah mengatur tingkatan user yang berbeda. 

Baca Artikel Lain ✨
📰 1. Cara Menggunakan Library Datatable Serverside di Laravel read more
📰 2. Cara Menampilkan Data di Laravel dengan Join Table, dengan Menggunakan Query Builder read more
📰 3. Cara Menggunakan Library Excel di Laravel Dengan Menggunakan Blade View read more


Cara Membuat Multi User di Laravel dengan Middleware

Nah, di tutorial kali ini kita akan belajar membuat sebuah projek laravel sederhana dengan menggunakan laravel 7, dimana kita akan membuat 3 tingkatan user di dalamnya. Setiap tingkatan memilki akses ke routing yang berbeda-beada. Disini juga kita akan belajar cara membuat autentikasi pada laravel 7.

Jika kalian sudah biasa menggunakan laravel dan hanya ingin mengetahui cara menggunakan midlware silahkan langsung masuk ke bagian ke-4 dan seterusnya.


1. Install Laravel

Installah sebuah fresh laravel versi 7 dengan menjalankan perintah berikut ini di terminal atau cmd kalian. composer create-project --prefer-dist laravel/laravel:^7.0 latihan_middleware  
Untuk lokasi project bebas kalian tentukan sendiri. Untuk tutorial cara instalasi laravel dapat kalian baca di link berikut ini. https://www.sahretech.com/2019/10/cara-install-laravel-di-localhost-server.html


2. Persiapan Database dan Migration

Buatlah sebuah database baru di dalam phpmyadmin dengan nama laravel. Karena nama database yang kita buat adalah laravel, maka kita tidak perlu mengedit file .env. Tapi jika kalian ingin nama database yang berbeda, kalian juga harus mengedit nama database di dalam file .env

Setelah membuat sebuah database baru, selanjutnya masuk ke dalam project latihan_middleware dan buka folder database → migrations → 2014_10_12_000000_create_users_table.php. Lalu ubahlah isi dari public function up() dengan script yang ada di bawah ini



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->enum('role', ['admin', 'penjual', 'pembeli'])->default('pembeli'); $table->rememberToken(); $table->timestamps(); });

Kemudian save, buka cmd lalu masuk ke direktori projek dan jalankan perintah berikut ini php artisan migrate perintah ini digunakan untuk memigrasi atau membuat tabel baru di dalam database.


3. Membuat Autentikasi Login

3.1. Setelah semua step di atas dijalankan, selanjutnya kita akan membuat autentikasi login pada laravel. Dimana form login, halaman login, dan proses loginnya dibuat langsung oleh laravel. Cara Membuatnya pertama masuk ke direktori project kalian lalu jalankan perintah berikut ini di cmd atau terminal. composer require laravel/ui:^2.4

3.2. Tunggu proses instalasinya sampai selesai, lalu jalankan perintah berikut ini php artisan ui vue --auth lalu jalankan lagi perintah berikut ini npm install .Dan terakhir, jalankan lagi perintah berikut ini npm run dev

Hore!, sampai tahap ini kalian sudah berhasil membuat aplikasi laravel dengan autentikasi. Silahkan jalankan project dengan mengetikkan perintah php artisan. Hasilnya akan tampil 2 menu di pojok kanan atas layar, yaitu menu login dan register. Berikut ini adalah halaman register laravel.

laravel middleware sahretech
Tampilan halaman registrasi laravel



3.3. Silahkan daftarkan 3 akun yang berbeda ke dalam aplikasi laravel kalian. Lalu buka phpmyadmin dan lihat!, datanya akan tampil seperti gambar di bawah ini. Secara default semua data yang didaftarkan rolenya adalah pembeli maka kita perlu merubah rolenya menjadi admin, penjual, dan pembeli. Karena di tahap selanjutnya kita akan membuat akses yang berbeda untuk tiap akun tersebut.

laravel middleware sahretech
Data akun laravel


Memang dalam studi kasus kali ini perubahan role user dilakukan secara manual, tapi ini sedikit gambaran bagi kalian bahwa untuk membuat multi user harus ada identifikasi role. Pemberian role bisa kalian sesuaikan dengan form dan proses yang dibuat.


4. Membuat Middleware dan Setting Middleware

4.1. Bagian ke-4 dan seterusnya adalah bagian inti dari tutorial ini. Cara membuat middleware di laravel sangat mudah sekali.  Jalankan perintah berikut ini untuk membuat middleware checkrole. php artisan make:middleware CheckRole

Maka sebuah middleware baru dengan nama CheckRole.php akan otomatis dibuat. Buka app → Http → Middelware → CheckRole.php. Lalu edit public function handle() dengan script di bawah ini


public function handle($request, Closure $next) { //jika akun yang login sesuai dengan role //maka silahkan akses //jika tidak sesuai akan diarahkan ke home $roles = array_slice(func_get_args(), 2); foreach ($roles as $role) { $user = \Auth::user()->role; if( $user == $role){ return $next($request); } } return redirect('/'); }


4.2. Kemudian, masuk ke folder app → Http → Kernel.php lalu tambahkan script di bawah ini di dalam bagian protected $routeMiddleware = [ .. ]


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


Sampai tahap ini kalian sudah selesai membuat middleware dan mensetting aturannya. Middleware kalian siap untuk dipakai di dalam file web.php. Tapi sebelum kita pasang, kita akan membuat 3 file blade yang berbeda di bawah ini.



5. Membuat 3 Buah Blade

5.1. Buat sebuah file baru dengan nama admin.blade.php di dalam folder resources/views. Lalu isi file tersebut dengan script di bawah ini.



@extends('layouts.app') @section('content')     <div class="container">         <div class="row justify-content-center"> <div class="col-md-8"> <div class="card">                     <div class="card-body"> <h1>Ini adalah halaman admin</h1> </div> </div> </div> </div> </div> @endsection


5.2. Buat sebuah file baru dengan nama penjual.blade.php di dalam folder resources/views. Lalu isi file tersebut dengan script di bawah ini.



@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-body"> <h1>Ini adalah halaman penjual</h1> </div> </div> </div> </div> </div> @endsection


5.3. Buatlah sebuah file baru denga nama pembeli.blade.php di dalam folder resources/views. Lalu isi file tersebut dengan script di bawah ini.



@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-body"> <h1>Ini adalah halaman pembeli</h1> </div> </div> </div> </div> </div> @endsection


6. Edit Halaman Home

Buka halaman home.blade.php yang terletak di dalam folder resources/views. Copy script di bawah ini dan pastekan di bawah <div class="container">
        

<a class="navbar-brand" href="{{ url('/') }}">     {{ config('app.name', 'Laravel') }} </a> <ul class="navbar-nav me-auto mb-2 mb-lg-0">     <li class="nav-item">         <a class="nav-link" aria-current="page" href="{{url('admin')}}">Halaman Admin</a>     </li>     <li class="nav-item">         <a class="nav-link" href="{{url('penjual')}}">Halaman Penjual</a>     </li>     <li class="nav-item">         <a class="nav-link" href="{{url('pembeli')}}">Halaman Pembeli</a>     </li> </ul>


7. Edit Routing

Buka file web.php, lalu tambahkan script di bawah ini di baris paling bawah file tersebut.
        

Route::get('admin', function () { return view('admin'); })->middleware('checkRole:admin'); Route::get('penjual', function () { return view('penjual'); })->middleware(['checkRole:penjual,admin']); Route::get('pembeli', function () { return view('pembeli'); })->middleware(['checkRole:pembeli,admin']);


8. Percobaan

Dalam projek ini admin dapat mengakses halaman penjual dan pembeli dan tidak sebaliknya. Middleware berfungsi untuk mengautentikasi http request yang masuk ke server. Jika user adalah admin maka routing ke halaman pembeli dan penjual dapat dilakukan dan tidak sebaliknya. Jalankan perintah php artisan untuk menjalankan project

middleware sahretech
Admin dapat mengakses halaman penjual dan pembeli



middleware sahretech
Penjual akan diarakan ke halaman depan
jika mengakses yang bukan haknya



Sekian tutorial cara mudah membuat multi user di laravel dengan middleware. Semoga bermanfaat, kurang lebihnya saya mohon maaf. Dan apabila ada pertanyaan silahkan tinggalkan di kolom komentar di bawah ini dan mari kita diskusikan bersama. Sampai jumpa di tutorial pemrograman lainnya.


11 comments:

  1. bang sya error "Trying to get property 'role' of non-object"

    ReplyDelete
    Replies
    1. terima kasih komentarnya :). rolenya gk ada, apakah tabel usersnya sudah ditambah role? ataukah setiap user sudah memiliki role, silahkan cek di databasenya?,

      Delete
  2. bang disaya kok tampilan hanya html saja tidak ada bootstrapnya?

    ReplyDelete
    Replies
    1. ini sudah dijalankan belum?
      composer require laravel/ui:^2.4
      php artisan ui vue --auth

      Delete
  3. Mau tanya mas, itu bisa di pakai kan walau kita sudah install breeze di laravel, terimakasih sebelumnya.

    ReplyDelete
  4. terimakasih ilmu nyaa, mantap betull

    ReplyDelete
  5. keren mas. tinggal di implementasi di laravel 10

    ReplyDelete

Jangan lupa kasih komentar ya!. Karena komentar kalian membantu kami menyediakan informasi yang lebih baik

Tidak boleh menyertakan link atau promosi produk saat berkomentar. Komentar tidak akan ditampilkan. Hubungi 081271449921(WA) untuk dapat menyertakan link dan promosi