Pembuatan Routing Dan Middleware pada laravel 5.4 - Rumah Coding

Latest

All About Programer & Backend Developer,

Wednesday, 12 July 2017

Pembuatan Routing Dan Middleware pada laravel 5.4

Rumah-coding.id , Routing dan Middleware pada Laravel 5.4 . Kali ini saya akan membahas lebih dalam mengenai Laravel, untuk yang belum tau laravel, boleh membaca postingan saya sebelum nya di http://www.rumah-coding.id/2017/06/pengenalan-laravel-framework.html .

Routing , Middleware dan Auth merupakan komponen penting yang harus di ketahui saat kita ingin membuat aplikasi di laravel, setelah sebelum nya saya sudah membahas mengenai struktur folder di laravel 5.4 http://www.rumah-coding.id/2017/07/memahami-struktur-folder-laravel-54.html saya sudah membahas sedikit mengenai routing, sekarang kita akan memperdalam lagi mengenai routing laravel 5.4

Routing .

Image result for routing laravel 5.4

Routing atau route merupakan jalur atau url yang kita gunakan untuk mengakses sebuah aplikasi, route ini lah yang bertugas untuk memangil controller yang kemudian di controller itu kita melakukan proses pengolahan data, bisa berupa menampilkan view, melakukan save data, update data delete maupun proses lain nya.

Routing pada laravel 5.4 terletak pada folder utama di dalam folder routes, terdapat beberapa file route disana, ada web dan juga api. Untuk url web kita meletakan route pada file web.php. Terdapat beberapa method yang di gunakan pada route laravel ini, perbedaan method ini membuat kita bisa mengunakan 1 link url tetapi berbeda method.

Beberapa method route pada laravel 5.4 sebagai berikut :
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
$uri berisi url yang ingin di daftar kan dan $callback adalah proses function yang akan di pangil. $callback bisa langsung kita tulis di route tersebut atau pun kita memangil controller dan function.

Pengunaan callback secara langsung
Route::get('user/', function ($name = 'John') {
    return $name;
});
Pengunaan callback memangil controller

Route::get('user/', 'UserController@index');
Artinya route untuk user memangil controller UserController dan function index.
Pada routing laravel kita dapat melakukan pengroupan pada setiap route tujuan nya agar lebih mempermudah bila di setiap route mempunyai url yang sama , mengunakan midleware yang sama atau pun di letakan di folder yang sama, sehinga route kita tetap terlihat rapi.

Route::group(['namespace' => 'Admin', 'prefix' => 'admin' , 'middleware' => ['user.login']], function () {
  Route::get('/', 'AdminController@index')->name('admin');
  Route::get('/dashboard', 'AdminController@dashboard');
  Route::get('/users/premium', 'UsersController@premium');
  Route::get('/users/block/', 'UsersController@block');
});

Seperti itu contoh pengunaan group pada route laravel, berikut penjelasan nya :


  • namespace -> merupakan nama folder letak controller berada, yang artinya AdminController & UserController berada di folder yang sama yaitu folder admin
  • prefix -> merupakan route url yang sama maksud nya,route yang berada di dalam group tersebut memiliki url 'admin' di depan nya, htttp://localhost:8000/admin/dashboard  & htttp://localhost:8000/admin/user/premium
  • middelware -> merupakan sebuah function yang terletak di tengah sehingga sebelum mengakses controller , middleware ini lah yang akan melakukan pengecekan terlebih dahulu, nah disini semua route yang ada dii dalam group memiliki middleware yang sama. 
nah seperti itu penjelasan singkat mengenai Routing.




Middleware .


Middleware , middleware merupakan sebuah function yang letak nya di tengah antara route dan juga controller, middleware ini bertugas untuk melakukan pengecekan terhadap segala hal sebelum route memangil function di dalam controller. Middleware biasanya di gunakan untuk melakukan pengecekan Auth, apakah user yang login boleh mengakses atau tidak, apakah user status nya sudah login, apakah user tersebut status nya admin atau tidak, middleware ini lah yang melakukan pengecekan.

Pada laravel file middleware terletak di App\http\Middleware\ 


Secara Default laravel sudah membuat file middleware , tetapi kita dapat membuat mengubah atau menambahkan middleware di dalam folder tersebut. Cara nya mudah, buat file dengan nama contoh "RedirectIfNotAdmin.php" kemudian buka file tersebut.

<?php

namespace App\Http\Middleware;

use Closure;
use App\User;
use Auth;
use Session;

class RedirectIfNotAdmin
{
  /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
  public function handle($request, Closure $next, $guard = null)
  {
    if (!Auth::guard($guard)->check()) {
      return redirect('/admin/login');
    }
    if (Auth::user()->role != 'admin') {
      Session::flash('message', 'You Dont Have Access');
      return redirect('/');
    }
    return $next($request);
  }
}
Buat seperti di atas,  penjelasan sedikit. untuk code baris
if (!Auth::guard($guard)->check()) {
      return redirect('/admin/login');
    }
di maksud kan jika gouard nya di cek atau login nya di cek dan ternyata tidak ada (belum login) maka route akan di direct ke admin/login 

if (Auth::user()->role != 'admin') {
      Session::flash('message', 'You Dont Have Access');
      return redirect('/');
}
kemudian jika user yg lagi login role nya itu tidak admin maka di direct ke halaman utama, 

return $next($request);
Terakhir jika semua nya lolos makan request nya di teruskan yang artinya kita dapat mengakses controller yang akan di panggil.

Tapi tidak sampai disitu hehehehe, ada satu hal lagi yang harus di tambahkan, yaitu kita harus meregistrasikan middleware yang baru kita buat. Dengan cara buka file kernel.php . letak nya  di App\Http\kernel.php

Kemudian cari $routeMiddleware tambahkan

'user.login' => \App\Http\Middleware\RedirectIfNotLogin::class,
lalu save, 

nah sekarang middleware sudah dapat kita gunakan dengan nama user.login   didalam route, maupun group route seperti di bawah.

Route::group(['namespace' => 'Admin', 'prefix' => 'admin' , 'middleware' => ['user.login']], function () {
  Route::get('/', 'AdminController@index')->name('admin');
  Route::get('/dashboard', 'AdminController@dashboard');
  Route::get('/users/premium', 'UsersController@premium');
  Route::get('/users/block/', 'UsersController@block');
});
Nah untuk masalah Auth kita bahas di postingan selanjut nya .


66 comments:

  1. Mantap gan, buat nambah pengetahuan...

    ReplyDelete
  2. Itu untuk mengontrol antar komputer 1 LAN gt ya gan? Atau kaya team viewer gt kerjanya?

    ReplyDelete
    Replies
    1. bukan gan, ini buat programing, jadi tugas nya mengontrol web nya

      Delete
  3. Ini kita bisa mengontrol sebuah web dengan otomatiskah??

    ReplyDelete
    Replies
    1. controller bukan mengontrol web secara otomatis, gak ada yg otomatis didunia ini gan, semua yg otomatis di buat secara manual, maksud dari controller disni adalah, untuk mengontrol website secara tidak langsung atau dari belakang.

      Delete
  4. ilmu ane belum nyampe gan.. btw nice article

    ReplyDelete
  5. Hmm ternyata gitu ya membuatnya, lumayan ada gambaran wlaupun blm paham btul

    ReplyDelete
  6. terlalu atas ini, saya dasarnyapun belum begitu hafal.

    ReplyDelete
    Replies
    1. programer gk ngafal bro, cuma perlu tau kalau function itu ada

      Delete
  7. Seperti nya laravel ini berbasi mvc yaa sama seperti ci ?? Baruu tauu thanks gan nice artikel ��

    ReplyDelete
  8. wah ilmu belum sampe sini hahah

    ReplyDelete
  9. Baru ngerti sedikit tentang routing ane gan. Dengan adanya routing dan middleware kita bisa mantau web dari balik layar gitu bukan? Setau ane sih kayak gitu

    codingnya juga udah beda nih. Jadi nambah ilmu nih ane

    ReplyDelete
  10. mantap nih blognya pembahasan tentang programmernya lengkap

    ReplyDelete
  11. mantap gan tutorialnya. izin jejak

    ReplyDelete
  12. mantab bisa ngontrol website secara tidak langsung nih

    ReplyDelete
  13. Penjelasannya detail banget jadi gak terlalu bingung ngikutinya.

    ReplyDelete
  14. Mantap jiwa gan, saya mau nyobain praktikan membuat routing ini, terimaksih gan informasinya :)

    ReplyDelete
  15. wewh rumit banget ya gan.. oke deh ane coba dulu dengan teliti..
    Thx btw

    ReplyDelete
  16. mantap jiwa gan mayan nih biar orang ga nyasar hehehe

    ReplyDelete
  17. Mantps Jiwa Gan... Ruminya juga yah...

    ReplyDelete
  18. ok dah, mantep info laravelnya gan

    ReplyDelete
  19. wah ilmu belum sampe sini haha

    ReplyDelete
  20. wah ngoding2 nih. nice post gan

    ReplyDelete
  21. masih belajar banyak ni tentang laravel, makasih tutornya gan

    ReplyDelete
  22. mantap jelas dan padat.. thanks info gan

    ReplyDelete
  23. sipp nih, penjelasannya enak banget dimengerti buat pemula kayak saya, makasih ya :D

    ReplyDelete
  24. Tengs ya ^^ bermamfaat banget

    ReplyDelete
  25. level ane belum sampe disini gan,, bdw thanks gan atas infonya

    ReplyDelete
  26. Waduh ane masih belajar nih hehe

    ReplyDelete
  27. mantap sesuai dengan yang saya butuhkan

    ReplyDelete
  28. terima kasih gan tutorialnya lengkap dan jelas

    ReplyDelete
  29. setelah liat artikel ini saya jadi pengen mengerti laravel hehe..

    ReplyDelete
  30. Pengen coba tp msih bnyk yg blum dimengerti, adakah kontak atau video tutorialnya agar lebih bisa saya pahami

    ReplyDelete
  31. nice gan :D ditunggu artikel selanjutnya

    ReplyDelete
  32. nice gan : sangat bermanfaat, ditunggu lanjutanya

    ReplyDelete
  33. Baru belajar dikit-dikit semoga paham gan

    ReplyDelete
  34. makasih artikeelnya , ijin praktek mas

    ReplyDelete
  35. Ini kita bisa mengontrol sebuah web dengan otomatis gan?

    ReplyDelete
  36. mantap gan walaupun sedikit aga ribet, makasih infonya gan

    ReplyDelete
  37. nice infonya gan, ilmu baru lagi ni gan, ijin coba

    ReplyDelete
  38. mantep nih tutorialnya mas tapi kalo boleh tau apa kegunaannya y mas ?

    ReplyDelete
  39. harus banyak banyak belajar nih ane sama admin :D

    ReplyDelete
  40. Mantap gan tutornya.
    Cuman musti pelan2 nih.. apalgi banyak scriptnya nih..
    Thanks ya..

    ReplyDelete
  41. Mantap gan tutornya.
    Cuman musti pelan2 nih.. apalgi banyak scriptnya nih..
    Thanks ya..

    ReplyDelete
  42. Wahh mantapp mastahh ilmu ane masii jauh nii hehe ijin bookmark duluu ajaa yaa 😄

    ReplyDelete
  43. Ini bahas tentang web programming ya gan?

    ReplyDelete
  44. lengkap banget gan.. lanjutkan sharing ya

    ReplyDelete
  45. Halo gan, mau nanya nih, ane udah biasa pake codeIgniter, kira2 kalo mau melajarin laravel mudah gak ya ?

    ReplyDelete
  46. Wah kelemahan ane di coding nih

    ReplyDelete
  47. wah aku belum pernah laravel nih kebiasaan main CI

    ReplyDelete
  48. belom mengerti laravel sih tapi ane pernah dengerr

    ReplyDelete