Membuat Sendiri Fitur dan Formulir Login
Setelah tulisan fitur registrasi dipublikasikan, fitur selanjutnya yang akan dijabarkan adalah fitur login. Penjabaran pembuatan fitur login ini sendiri mencakup beberapa hal, antara lain route, controller, dan view.
Khusus untuk pengecekan (autentikasi) pengguna, method-nya sudah disediakan oleh Laravel melalui facade Auth.
Pada tulisan ini, kita akan membuat fitur yang secara garis besar sama persis dengan yang sudah disediakan oleh Laravel. Ada beberapa fitur yang ditambahkan nantinya. Semisal, pengecekan untuk status user yang belum diaktifkan. Mengenai status user ini, sudah dibahas pada tulisan Membuat Fitur Verifikasi Email pada Formulir Registrasi.
Membuat View
Buat berkas Blade baru dengan nama form.blade.php
pada direktori resources/views/signin
.
Membuat Controller
Selanjutnya, membuat controller dengan nama SignupController
yang berisi method untuk memuat view di atas dan method lain untuk melakukan pengecekan data pengguna (user).
Untuk percepatan, sekiranya lebih nyaman menggunakan Artisan console dalam pembuatan.
$ php artisan make:controller SignupController Controller created successfully.
Mulai dari baris ke tujuh belas sampai dengan dua puluh, kita melakukan validasi masukan dari formulir (form) login.
Proses pengecekan data valid dimulai dari baris ke dua puluh dua menggunakan method attempt()
dalam facade Auth
.
Parameter pertama dari method attempt()
berupa array berpasangan, attribute dan value. Bisa dilihat pada contoh skrip di atas, di mana saya memasangkan atribut email dengan properti email
pada objek $request
. Parameter kedua dari method tersebut berupa boolean, untuk menginstruksikan ke Laravel akan penggunaan fitur “remember me”.
Mengenai method attempt() tersebut, skripnya dapat kalian pelajari pada berkas /vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php
. Sebagai bocoran, berikut isi skrip dari method tersebut.
Mendefinisikan Route
Tambahkan dua buah route yang merujuk ke controller di atas agar dapat diakses melalui peramban (browser).
Route::get('signin', 'SigninController@form')->name('signin.form'); Route::post('attempt', 'SigninController@attempt')->name('signin.attempt');
Ujicoba
Untuk mengujinya, kalian bisa menjalankan built-in web server denga perintah php artisan serve
, kemudian mengaksesnya melalui peramban dengan URI /signin
. Jika pos-el (email) belum terdaftar, kalian bisa meregistrasikannya terlebih dahulu pada URI /signup
.
Ingat, tulisan ini berhubungan dengan dua tulisan sebelumnya soal registrasi, jadi jangan bingung soal URI baru yang saya sebutkan.
Cek Status Pengguna (User)
Di tulisan Membuat Fitur Verifikasi Email pada Formulir Registrasi, kita menambahkan field baru dengan nama status
pada tabel users
. Apabila pengguna mendaftar dan belum memverifikasi pos-el (email), maka seharusnya dia tidak bisa login. Di tabel users
sendiri, nilai status
adalah “pending” jika belum diverifikasi, dan bernilai “activated” jika sudah diverifikasi.
Tentunya, kita harus melakukan pengecekan data, di mana hanya status “activated” saja yang bisa login. Dengan memodifikasi sedikit skrip di atas, maka hasilnya adalah sebagai berikut.
$attempts = [
'email' => $request->email,
'password' => $request->password,
'status' => 'activated',
];
Di baris ke empat, kita menambahkan array bari dengan key nama field status
di tabel users
dan nilainya statis dengan isian “activated”.
Kalian bisa menambahkan field lain sebanyak yang kalian butuhkan.
Contoh Aplikasi
Contoh aplikasi bisa kalian lihat pada repositori Github. Khusus untuk tulisan ini, tidak disediakan live demo.
Originally published at www.laravel.web.id on April 26, 2017.