0

0

0

share


#laravel#php#Tutorial#Controller

Reactions0 Reactions

0 Komentar

Memulai Web Development dengan Laravel - Mensisipkan Middleware di Dalam Request

Profile

Muhammad Arslan15 April 2017

Memulai Web Development dengan Laravel - Mensisipkan Middleware di Dalam Request

Sesuai dengan namanya, middleware adalah suatu kode yang menjadi penengah bagi suatu aksi sebelum aksi diselesaikan. Di Laravel middleware digunakan untuk menangani proses request dari client sebelum akhirnya memberikan response kepada client.

Beberapa contoh middleware yang biasa digunakan adalah untuk memeriksa apakah client memiliki token yang diperlukan, memeriksa role suatu client apakah admin atau bukan, memeriksa apakah client memiliki sejumlah kriteria tertentu seperti umur, dan lainnya sesuai kebutuhan aplikasi.

Sekarang kita akan mencoba menggunakan middleware sederhana.

##Persiapan dan Instalasi

Diasumsikan kamu telah memasang Laravel di mesin kamu dan sudah dapat diakses melalui web browser. Sekarang kita tinggal hanya membuat controller saja untuk keperluan demo saja.

Kita beri nama controller yang akan digunakan dengan nama DemoMiddlewareController.php:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Redis;

class DemoMiddlewareController extends Controller {

	public function index() {

		echo "Ini adalah index";
	}


	public function about() {

		echo "Ini adalah about";
	}

	public function contact() {

		echo "Ini adalah contact";
	}

}

Sekarang silahkan tambahkan juga route untuk DemoMiddlewareController di dalam routes/web.php:

// contoh middleware
Route::get("/demo-middleware", "DemoMiddlewareController@index");

Route::group(["prefix"=>"demo-middleware", "middleware"=>["check_credential"]], function () {
	Route::get("/about", "DemoMiddlewareController@about");
	Route::get("/contact", "DemoMiddlewareController@contact");
});

##Membuat Middleware

Untuk membuat middleware di Laravel, kamu dapat menggunakan artisan command berikut:

$ php artisan make:middleware CheckCredential

Seketika maka akan terbentuk file dengan CheckCredential.php di dalam app\Http\Middleware. Berikut adalah isi dari kode file tersebut:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckCredential
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
    	 // your logic is here...
    	 
        return $next($request);
    }
}

Sekarang mari kita tambahkan sedikit kode untuk memperlihatkan bagaimana middleware bekerja:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckCredential
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        if ( $request->header('token') == "" && $request->header('email') == "" )
        {
            return redirect('demo-middleware');
        }

        return $next($request);
    }
}

Pada kode diatas, kamu dapat melihat bahwa ketika melakukan request harus disisipi header token dan email agar dapat melakukan request. Bila kosong maka akan di-redirect ke halaman demo-middleware/index.

##Menggunakan Middleware

Untuk menggunakan middeweare cukup mudah. Kamu hanya perlu mendaftarkannya di dalam app\Http\Kernel.php pada bagian routeMiddleware. Silahkan tambahkan CheckCredential ke dalam array tersebut dengan alias check_credential:

..................

	/**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'check_credential' => \App\Http\Middleware\CheckCredential::class,
    ];
}