Membuat Sendiri Fitur dan Formulir Login

Yugo
Laravel Indonesia
Published in
3 min readApr 26, 2017

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.

Formulir login

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.

--

--