Ketika kita melakukan pendaftaran / registrasi pada situs atau platform tertentu kebanyakan kita diminta untuk melakukan konfirmasi atu verifikasi dengan membuka / klik link atau tautan yang dikirim ke email yang digunakan waktu pendaftaran.
Begitu juga ketika lupa password dan kita melakukan pengaturan ulang password.
Hal seperti itu merupakan hal yang baik dan wajib rasanya jika dilakukan dengan tujuan validasi dan fasilitas yang diberikan untuk pengguna.
Verifikasi Email dan Reset Password di Laravel
Kita juga dapat membuatnya di laravel yang menyediakan fitur tersebut; dan pembuatannya juga sangat mudah.
Fitur ini dapat kita temukan atau gunakan secara otomatis menggunakan scaffold yang disediakan di laravel.
Jika ingin mencobanya, silahkan ikuti langkah-langkah di bawah.
Membuat Konfirmasi Email: Instalasi Laravel
Mari kita install laravel dan menghubungkannya dengan database.
laravel new laravel-app #atau composer create-project laravel/laravel laravel-app
Kita akan menggunakan database MySQL. Silahkan membuat databse baru dan atur pada file .env
.
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel_app DB_USERNAME=root DB_PASSWORD=
Kemudian jalankan perintah migrasi php artisan migrate
.
Membuat Autentikasi
Kita akan membuat autentikasi Starter Kits yang menyediakan scaffold untuk atuentikasi yang akan membuat route, controller dan view atau halaman seperti login dan registrasi secara otomatis.
Kita akan menggunkan scafold laravel breeze. Silahkan jalankan perintah dibawah ini dan lakukan secara berutuan.
composer require laravel/breeze --dev php artisan breeze:install npm install npm run dev php artisan serve
Setelah selesai kita bisa lihat pada browser. Kita sudah bisa langsung melakukan pendaftaran dan login; tanpa melakukan verifikasi.
Membuat Verifikasi Email
Sekarang kita masuk ke pengerjaan membuat fungsi verifikasi email. Setiap melakukan pendaftaran akan diminta untuk verifikasi email terlebih dahulu sebelum dapat masuk atau login dengan email yang digunakan.
Pembuatannya sangat mudah; kita hanya perlu mengimplementasikan modul MustVerifyEmail
pada model.
Silahkan buka model User.php
dan buat seperti dibawah ini.
<?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; class User extends Authenticatable implements MustVerifyEmail { use HasFactory, Notifiable; ... }
Kemudian kita tambahkan middleware verified
pada route yang akan melindungi dan hanya bisa dibuka setelah terverifikasi.
Silahkan buka web.php
lalu buat seperti dibawah ini.
Route::get('/dashboard', function () { return view('dashboard'); })->middleware(['auth','verified'])->name('dashboard');
Selanjutnya kita akan mencobanya menggunakan Mailtrap yang merupakan layanan smtp paslu untuk pengujian dan menerima email.
Konfigurasi Mailtrap
Pertama yang pelu kita lakukan adalah melakukan pendaftaran pada situs https://mailtrap.io/. Silahkan melakukan pendaftaran.
Setelah mendaftar, kita pilih inbox dan pada pilihan Integrations silahkan pilih Laravel 7+.
Silahkan sesuaikan konfigurasi untuk di atur pada file .env
.
//.env MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=[...] MAIL_PASSWORD=[...] MAIL_ENCRYPTION=tls [email protected] MAIL_FROM_NAME="${APP_NAME}"
Pada MAIL_FROM_ADDRESS
kita isi dengan email pengirim.
Sampai disini mari kita mencobanya. Buka http://localhost:8080/register
dan lakukan pendaftaran.
MariaDB [newbreeze]> select id, name, email, email_verified_at from users; +----+------+---------------+-------------------+ | id | name | email | email_verified_at | +----+------+---------------+-------------------+ | 1 | me | [email protected] | NULL | +----+------+---------------+-------------------+ 1 row in set (0.000 sec)
Setelah klik button verifikasi kita langsung masuk ke dashboard user.
MariaDB [newbreeze]> select id, name, email, email_verified_at from users; +----+------+---------------+---------------------+ | id | name | email | email_verified_at | +----+------+---------------+---------------------+ | 1 | me | [email protected] | 2021-04-18 22:42:49 | +----+------+---------------+---------------------+ 1 row in set (0.000 sec)
Reset Password
Tidak ada pengaturan atau metode tambahkan untuk membuat reset password. Kita bisa langsung melakukan reset password untuk menerima inbox link untuk mengatur ulang kata sandi.
Kita klik "Forgot your password?" pada halaman login atau membuka url http://localhost:8000/forgot-password
untuk memasukan email yang telah terdaftar.
Silahkan klik button "Reset Password" dan mengatur ulang kata sandi.
Selesai
Kita sampai disini, pembuatan verifikasi email dan reset password telah selesai. Silahkan dicoba.