Scaffolding ~4
1
1
1
1
Kita akan membuat fitur Authentication untuk proyek toko online ini menggunakan fitur bawaan Laravel. Buka terminal / cmd lalu ketik perintah-perintah berikut:
1. install laravel/ui package Mulai Laravel versi 6.0, semua authentication assets dijadikan terpisah dari core Laravel. Kita harus menginstallnya dengan perintah berikut:
composer require laravel/ui
2. buat authentication fitur / auth scaffold
php artisan ui vue --auth
Apabila berhasil dijalankan maka kamu akan melihat tampilan seperti di bawah ini:
3. compile file-file asset / javascript
npm install && npm run dev
Apabila berhasil dijalankan maka kamu akan melihat tampilan seperti di bawah ini:
Dengan menjalankan perintah-perintah di atas maka file-file yang diperlukan untuk Authentication termasuk halaman login akan digenerate.
Untuk menjalankan perintah npm kamu harus sudah menginstall NodeJS (sudah termasuk npm) di komputermu, apabila kamu tidak menggunakan docker (laradock) kamu cukup ikuti petunjuk instalasi di situs resminya yaitu di https://nodejs.org
Apabila kamu menggunakan laradock, ikuti langkah-langkah berikut:
1. buka file .env yang ada di folder laradock (bukan folder project laravel nya)
2. cari dan ubah nilai WORKSPACE_INSTALL_NODE menjadi true, lalu simpan file .env tersebut.
3. build ulang container workspace dengan perintah docker-compose build workspace
Selanjutnya kita cukup jalankan perintah artisan migrate yang akan menjalaknkan dua file migrations yang terkait dengan Authentication yaitu file yang berakhiran dengan nama create_users_table.php dan create_password_resets_table.php. File ini sudah ada sejak pertama kali kita membuat project Laravel baru.
Langsung saja kita jalankan migration yang akan mengeksekusi dua file tadi. Kembali buka terminal / cmd mu lalu ketik
php artisan migrate
1 2 3 4
Jika berhasil dijalankan maka akan muncul tampilan seperti di bawah ini di terminal / cmd
Apabila perintah tersebut berhasil dijalankan, maka kini aplikasimu sudah memiliki fitur user authentication termasuk halaman login, register dan reset password.
Perhatian! Apabila ketika menjalankan perintah php artisan migrate kamu mengalami error terkait key too long, itu artinya kamu harus sedikit menyesuaikan settingan Schema builder. Untuk melakukannya buka file app/Providers/AppServiceProvider.php lalu tambahkan kode Schema::defaultStringLength(191); pada method boot() seperti ini
public function boot() {
Schema::defaultStringLength(191);
}
Dengan perintah di atas kini kamu bisa melakukan registrasi dengan membuka di url http://larashop.test/register. Setelah kamu submit, kini kamu bisa mencoba untuk melakukan Authentication dengan cara login ke aplikasi pada url http://larashop.test/login.
Pahami bahwa yang dimaksud http://larashop.test Bagi pengguna XAMPP adalah:
http://localhost/larashop/public atau
http://localhost/larashop bila sudah dikonfigurasi untuk menghilangkan public di url
Buka http://larashop.test maka kamu akan mendapatkan dua menu baru di atas seperti ini tampilannya:
Taraaa, semudah itu untuk membuat user authentication di Laravel, ga sampe lima menit langsung jadi. Tapi mungkin kamu bertanya bagaimana keajaiban ini terjadi? Tenang, ini bukanlah magic, untuk itu mari kita
1
bahas lebih detail apa yang terjadi setelah kita menjalankan perintah php artisan ui vue --auth.
Supaya kita paham cara kerja Authenticationnya terutama jika kita ingin memodifikasi Authenticationnya.
Ingat, setiap fitur yang ada di Laravel sebetulnya hanyalah kombinasi antara MVC, model view controller. Apa yang dilakukan oleh perintah di atas hanyalah membuatkan komponen MVC tersebut untukmu. Perintah di atas akan mengenerate file-file / kode berikut ini
1. File views antara lain:
resources/views/layouts/app.blade.php;
resources/views/auth/passwords/email.blade.php; resources/views/auth/passwords/reset.blade.php;
resources/views/auth/login.blade.php;
resources/views/auth/register.blade.php;
resources/views/auth/home.blade.php. 2. Sebuah controller yaitu HomeController.php
3. Kode routing untuk Authentication pada file routes/web.php yaitu
Auth::routes();
Apa saja fungsi-fungsi dari file yang digenerate tadi?
File / Kode Penjelasan
resources/views/layouts/app.blade.php
Merupakan file layout view yang dapat digunakan oleh view lainnya. Pada layout ini, terdapat sebuah kode untuk
menghasilkan top navigation atau navigasi atas yang akan menampilkan link login dan register jika pengguna belum login.
Navigasi ini akan berubah menjadi nama lengkap pengguna dan link logout jika pengguna sudah login ke aplikasi.
resources/views/auth/passwords/email.blade.php
Merupakan view yang digunakan untuk menampilkan form email saat forgot password.
resources/views/auth/login.blade.php Merupakan view yang digunakan untuk menampilkan form login.
resources/views/auth/register.blade.php Merupakan view yang digunakan untuk menampilkan form registrasi pengguna.
resources/views/auth/home.blade.php
Merupakan view yang digunakan sebagai contoh halaman khusus pengguna yang sudah login ke aplikasi.
Kode Auth::routes(); pada file routes/web.php
Digunakan untuk menyediakan route user authentication antara lain:
/login,/register,/password/reset.
File / Kode Penjelasan
app/Http/Controllers/HomeController.php
Berisi sebuah action index untuk menampilkan view home. Controller ini menggunakan middleware auth sehingga hanya bisa diakses oleh user yang sudah login ke aplikasi
Selain kode yang digenerate di atas, proses user authentication juga membutuhkan file-file yang sudah ada sejak pertama kali kita membuat project Laravel baru, yaitu:
File / kode Penjelasan
app/User.php
Merupakan model user, di sini kita bisa mengubah
konfigurasi dari model user aplikasi.
app/Http/Controllers/Auth/ForgotPasswordController.php
Merupakan controller untuk mengelola request berkaitan dengan lupa password.
app/Http/Controllers/Auth/LoginController.php
Merupakan controller untuk mengelola request berkaitan dengan login pengguna
app/Http/Controllers/Auth/RegisterController.php
Merupakan controller untuk mengelola request berkaitan dengan registrasi pengguna
app/Http/Controllers/Auth/ResetPasswordController.php
Merupakan controller untuk mengelola request berkaitan dengan reset password
xxxxxx_create_users_table.php Migration untuk membuat tabel users dan strukturnya
xxxxx_create_password_resets_table.php
Migration untuk membuat tabel password_resets dan strukturnya.