Membuat Authentication Laravel Sendiri menggunakan Middleware di App Engine Google Cloud Platform

   

Hai, Artikel ini ditulis agar memahami cara kerja middleware. Sejatinya Middleware Laravel merupakan penengah antara request yang masuk dengan controller yang dituju yang berpengaruh pada request dan respons dan biasanya sering kita gunakan untuk memvalidasi request masuk seperti login dan melakukan routing ke view yang dituju.

Sebelum memulai pastikan Anda sudah membaca:
[A] Membuat Authentication Login Register and Reset Password Pada Laravel
[B] Starter Template Code – Cara Cepat Memulai Code Laravel (Bag. 1)

Jika sudah, Berikut merupakan langkah-langkah membuat authentication sendiri di laravel

[1] Buat middleware dengan mengetik : php artisan make:middleware CekLogin

[2] Maka akan terlihat file CekLogin pada path/directory app/http/middleware/CekLogin.php

[3] Pastikan kita sudah membuat model data (dianggap sudah bisa membuat model data) , model data tersebut kita berinama md_user dan field terdiri dari user_id type varchar(10) , client type varchar(4) & password type varchar(10)
[4] Masukkan model ke dalam Middleware seperti pembahasan sebelumnya di Starter Template Code – Cara Cepat Memulai Code Laravel (Bag. 1) bedanya kali ini kita akan menempelkannya di Middleware, perhatikan code berikut di middleware

.....
$datauser = md_user::where('client', $request->client)
          ->where('user_id', $request->user_id)
          ->where('password', $request->password)
          ->first();
        if ($datauser->status == '1') { // actived
            return redirect('user/dashboard');
        }
        return $next($request);
.....

Logic: Jika user ditemukan dan statusnya = 1 (Aktif) maka masuk ke halaman user/dashboard, jika tidak maka abaikan.

[5] Daftarkan middleware yang kita buat pada app/Http/Kernel.php atau config/

//middleware baru kita disini
'ceklogin' => \App\Http\Middleware\CekLogin::class,

[6] Setelah didaftarkan dan kita simpan, maka middleware kita siap kita gunakan dengan cara menambah di route:


Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])
->name('home')
->middleware('ceklogin');
Route::get('/login', [App\Http\Controllers\Auth\LoginController::class, 'index'])
->name('login');

[7] Buat file pada App/Http/Controllers/Auth/LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
    public function index()
    {
        return view('Auth/login');
    }
}

Jika berhasil, maka jangan lupa lakukan deploy ke app engine google cloud seperti artikel di Create Run and Deploy Laravel Pada APP Engine Google Cloud Platform (GCP)

Semoga berhasil.

   

Wahyu Amaldi, M.Kom has written 177 articles

Hallo Pembaca,
Saya merupakan konsultan di dunia SAP dan merupakan Spesialis .Net Programming.
Saya gemar berbagi pengalaman mengenai SAP & Dunia Programming, dan jika ada sesuatu yang perlu ditanyakan, bisa hubungi saya di email berikut ini:

Email 1 : wahyu.amaldi@outlook.com
Email 2 : wahyu.amaldi@ilmuprogram.com

Semoga Artikel yang Anda baca di website ini berguna dan dapat membantu Anda dalam menemukan solusi.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>