Membuat Sendiri Fitur dan Formulir Registrasi

Yugo
Laravel Indonesia
Published in
4 min readApr 21, 2017

Laravel sudah menyediakan fitur autentikasi untuk daftar, masuk (login), sampai dengan setel ulang sandi lewat (password). Hanya dengan perintah php artisan make:auth, kita sudah dapat menggunakan semua fitur tersebut tanpa perlu menambahkan skrip satu baris pun.

Walau demikin, beberapa di antara kita bisa jadi lebih suka membuat fitur autentikasi dari awal. Alasannya bisa bermacam-macam, misal: menggunakan tabel yang berbeda dengan bawaan Laravel. Alasan lainya mungkin ada banyak fitur yang ingin ditambahkan pada proses registrasi.

Oh ya, modifikasi fitur registrasi sangat dimungkinkan dan dimudahkan pada Laravel. Salah satu contoh modifikasi pada fitur antentikasi ada pada pos berikut.

Pada dasarnya, membuat fitur registrasi pada Laravel tak ada bedanya dengan menambahkan data baru pada tabel. Yang perlu diperhatikan adalah, ada perlakuan khusus terhadap data sandi lewat yang akan disimpan. Tentunya, sandi lewat harus di-hash sebelum disimpan ke dalam tabel. Selain untuk validasi saat login nanti, hash sandi lewat juga berfungsi untuk keamanan.

Tidak perlu ambil pusing soal hash sandi lewat ini, karena Laravel sudah menyediakan fungsinya dengan nama bcrypt().

Sebagai info, dalam pembuatan fitur registrasi ini kita tetap menggunakan tabel user yang terdapat dalam Laravel. Struktur tabelnya dapat dilihat pada berkas 2014_10_12_000000_create_users_table.php dalam direktori database/migrations.

Membuat Test

Sebagai info, saya menggunakan Laravel Dusk untuk test. Kalian bisa melewati langkah ini jika tidak ingin menggunakan fitur test dalam aplikasi.

Buat test baru dengan nama SignupTest menggunakan Artisan.

$ php artisan dusk:make SignupTest

Berkas SignupTest.php disimpan dalam direktori tests/Browser.

Dalam class test tersebut, akan dibuat dua method untuk melakukan berbagai pengujian. Yaitu:

  1. Ujicoba halaman registrasi (/signup) dapat diakses.
  2. Ujicoba data valid dan proses registrasi berhasil.

Skrip lengkap alur test di atas dapat dilihat di bawah.

Membuat View

Untuk menggunakan template bawaan yang disediakan Laravel, kita harus mengaktifkan fitur autentikasi terlebih dahulu.

$ php artisan auth:make

Dalam direktori resoures/views, terdapat berkas baru dengan nama layouts/app.blade.php. Nah, dari fitur autentikasi yang kita generate barusan, hanya template-nya saja yang akan kita gunakan.

Untuk menon-aktifkan fitur autentikasi bawaan Laravel, buka berkas routes/web.php dan hapus bagian skrip di bawah.

Auth::routes();

Jangan upa untuk mengubah tautan register dan login pada berkas app.blade.php yang terletak dalam direktori resources/views/layouts agar aplikasi tidak terjadi kesalahan. Seperti, route login atau route register tidak ditemukan misalnya.

Buat direktori dan berkas view baru dengan signup/form.blade.php dalam direktori resources/views. Perhtikan penamaan setiap field-nya agar tidak bingung ketika membaca controller untuk proses datanya.

Apabila diakses melalui peramban (browser), maka tampilannya akan nampak seperti gambar berikut.

Formulir registrasi

Mendifinisikan Route

Definisikan dua buah route dengan path yang sama, tapi HTTP verb yang berbeda. Seperti disinggung pada sub bagian di atas, kita akan menambahkan route dengan path /signup.

Route::get('signup', 'SignupController@form')->name('signup.form'); Route::post('signup', 'SignupController@signup')->name('signup.store');

Route dengan HTTP verb GET akan menampilkan formulir registrasi, sedangkan route dengan verb POST akan memproses data berupa validasi dan menyimpannya ke dalam tabel user.

Membuat Controller

Berdasarkan definisi route, kita akan membuat satu buah controller dengan nama SignupController. Dalam controller tersebut terdapat dua buah method dengan nama form() dan store(). Method form() berfungsi untuk menampilkan formulir registrasi, sedangkan method store() berfungsi untuk membuat validasi dan menyimpan data user.

Ujicoba Aplikasi

Ada tiga langkah untuk ujicoba aplikasi:

  1. Menjalankan migration.
  2. Ujicoba dengan unit test.
  3. Mencobanya langsung melalui peramban (browser).

Menjalankan Migration

Ubah konfigurasi pangkalan data (database) pada berkas .env, dan sesuaikan dengan pengaturan pangkalan data di mesin lokal. Jalankan migration untuk membuat tabel user.

$ php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table

Unit Test

Jika langkah test di atas kalian lewati, maka lewati juga langkah ini.

Jalankan PHPUnit melalui terminal dari direktori root dengan perintah berikut.

$ php artisan dusk

Ujicoba Melalui Peramban

Jalankan perintah php artisan serve, kemudian akses tautan localhost:8000/signup. Dari situ, kalian bisa mencoba sendiri fitur yang telah dibuat, apakah sudah sesuai atau masih perlu ada perubahan.

Konklusi

Dengan perubahan sistem autentikasi ini, ada banyak kesalahan yang ada pada aplikasi nantinya. Seperti route login, register, logout, dan setel ulang sandi lewat tidak berfungsi. Kalian bisa menghapusnya jika dirasa cukup menggangu, atau menggantinya sekalian dengan fitur baru yang dibuat dari awal.

Fitur registrasi di atas juga masih dapat dikembangkan sesuai dengan kebutuhan bisnis. Semisal, pada bagian penyimpanan user, ditambahkan proses pengiriman email ke user tersebut untuk verifikasi alamat email. Tentunya, saya bisa bilang begini karena di tulisan berikutnya, saya akan mengimplementasikan sistem verifikasi email pada fitur registrasi.

Terakhir, selamat mencoba!
Jangan sungkan untuk bertanya. Bagikan juga jika bermanfaat. 😉

Originally published at www.laravel.web.id on April 21, 2017.

--

--