Melanjutkan pdkt sebelumnya tentang bagaimana mudahnya membuat fitur register dan login pada laravel 5.4, kali ini kita akan mencoba membuat fitur tersebut dengan sedikit sentuhan yang lebih menarik dari sebelumnya.
Keajaiban Make Auth
Laravel hadir dengan artisan command yang sangat menawan, salah satunya adalah artisan command yang dapat membuat fitur user authentication dan password reset untuk kita. Juga akan membuat route sekaligus views dalam sekali sentuhan. Controllers telah ada pada tempatnya. Sekali kita menjalankan perintah tersebut maka sistem otentikasi yang kita inginkan telah jadi. Tapi kita akan menelusuri semuanya secara bertahap sampai mengerti proses dan bagaimana cara kerjanya. Ketikkan perintah dibawah ini pada command line :
php artisan make:auth
Anda akan mendapatkan hasil seperti berikut
Secara otomatis laravel akan membuat banyak file view, membuat route ke controller, dan akan kita bahas satu persatu beberapa saat lagi. Tapi sekarang jika anda mengunjungi localhost/daengweb.id/public atau localhost:8000 maka akan tampak seperti berikut :
Jadi sekarang anda dapat menuju ke halaman register dan membuat user. Pada halaman register akan terlihat seperti ini
Silahkan lakukan pendaftaran pada halaman di atas, setelah itu anda akan melihat username yang anda daftarkan akan login secara otomatis.
Anda dapat melakukan logout pada dropdown list yang terletak di pojok kanan atas, kemudian gunakan login link yang akan mengarahkan anda pada login page untuk melakukan login kembali sehingga anda dapat melihat apakah itu bekerja atau tidak.
Anda dapat menemukan semua file blade yang telah di generate pada folder auth yang berada di dalam folder resources/views :
Seperti yang anda lihat, tidak hanya views register dan login tapi kita juga menemukan views untuk melakukan reset password yang terletak di dalam folder passwords. Bersamaan dengan itu, laravel juga membuat folder layouts yang didalamnya terdapat file app.blade.php .
Mungkin membutuhkan waktu tapi anda harus meluangkannya untuk memahami bagaimana sistem otentikasi di atas bekerja. Penting bagi anda untuk mengetahuinya karena akan membantu anda kedepannya dalam memodifikasinya. Seperti yang akan kita lakukan, saat akan menambahkan socialite dan memodifikasi table user, tapi hal tersebut belum akan kita kerjakan untuk saat ini.
Sampai disini, sebagian dari kita mungkin akan mencoba mengingat-ingat dan menghafalkannya. Tapi sebaiknya anda tidak perlu melakukannya, cukup memahami konsepnya dan bagaimana cara dia bekerja.
Selanjutnya, mari kita mulai dengan file route baru yang telah dibuat. Jika anda membuka file routes, yang terletak di routes/web.php , anda akan menemukan dua baris tambahan seperti berikut :
Auth::routes();
Route::get('/home', 'HomeController@index');
Jadi Ketika anda sudah login, jika anda mengunjungi url berikut :
localhost/daengweb.id/public/home atau localhost:8000/home
Maka anda akan berada disini :
Dan jika anda mencoba mengakses uri home di atas dalam kondisi sudah logout, maka anda akan di arahkan ke form login
Saat ini, secara default app akan mengarahkan anda ke ‘/home’ ketika dalam kondisi login. Itu karena terdapat sebuah properti bernama redirectTo pada LoginController yang di set ke ‘/home’. Kita akan melihat ini, tapi sebelum itu mari kita lihat bagaimana auth dan password routes bekerja.
Pada file route web.php , kita akan menemukan sebaris code dibawah ini :
Auth::routes();
routes method adalah bagian dari Auth facade, yang memanggil sebuah instance dari Router class method :
public static function routes()
{
static::$app->make('router')->auth();
}
Ini akan memberitahu app untuk membuat sebuah instance dari router class auth method. Jika kita melihat lebih jauh kedalam framework, kita dapat menemukan Router class yang memanggil auth method dan berlokasi di dalam folder vendor :
Tepatnya dengan path : vendor/laravel/framework/src/Illuminate/Routing/Router.php . Dan di dalam file tersebut, anda dapat menemukan auth method, yang memiliki auth routes:
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');
}
Beberapa diantaranya, terdapat route yang menggunakan method name untuk memberikan nama pada route:
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
Penamaan route sangat berguna saat kita ingin memanggil atau menggunakan route method pada bagian code yang lain, biasanya digunakan pada controller. Tapi untuk contoh penggunaannya tidak akan kita bahas pada kesempatan kali ini, saya hanya sekedar menunjukkannya saja.
Pada bagian yang lain, jika melihat route login misalnya, anda bisa melihat bahwa kita membutuhkan Auth\ sebelum nama controller, dan itu disebabkan kita memiliki folder Auth di dalam folder controllers. Jadi ketika anda membuat sebuah folder di dalam folder controllers, maka penulisan routenya akan menjadi seperti berikut :
NamaFolder\ControllerName@method
Dan sedikit catatan, kita jangan melakukan perubahan pada file vendor karena jika kita melakukannya, setiap kita akan menjalan composer update, maka file tersebut akan ditimpa. Juga berarti jika anda ingin membangun sistem auth anda sendiri atau mengubah routing, anda seharusnya tidak menempatkan routes disini. Akan tetapi letakkan perubahan route anda pada file web.php yang terletak didalam folder routes.
Tampaknya cukup melebar pembahasan kita, padahal point yang ingin saya sampaikan adalah penggunakan php artisan make:auth tapi point lebih yang ingin saya tekankan adalah bukan hanya dapat menggunakan fungsi dari sebuah framework dan dapat berjalan dengan baik, tapi juga sebaiknay kita mempelajari cara kerjanya agar suatu saat nnti saat kita membutuhkan custom function kita dapat membuatnya sendiri. Jadi cukup sampai disini, semoga bermanfaat.
Comments