Membuat Verifikasi Email dan Reset Password di Laravel 8

wahyunanangwidodo

wahyunanangwidodo Senin, 19 April 2021

Membuat Verifikasi Email dan Reset Password di Laravel 8

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+.

Membuat Verifikasi Email dan Reset Password di Laravel 8

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
MAIL_FROM_ADDRESS=noreply@mail.com
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.

Membuat Verifikasi Email dan Reset Password di Laravel 8
MariaDB [newbreeze]> select id, name, email, email_verified_at from users;
+----+------+---------------+-------------------+
| id | name | email         | email_verified_at |
+----+------+---------------+-------------------+
|  1 | me   | test@mail.com | NULL              |
+----+------+---------------+-------------------+
1 row in set (0.000 sec)
Membuat Verifikasi Email dan Reset Password di Laravel 8

Setelah klik button verifikasi kita langsung masuk ke dashboard user.

Membuat Verifikasi Email dan Reset Password di Laravel 8
MariaDB [newbreeze]> select id, name, email, email_verified_at from users;
+----+------+---------------+---------------------+
| id | name | email         | email_verified_at   |
+----+------+---------------+---------------------+
|  1 | me   | test@mail.com | 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.

Membuat Verifikasi Email dan Reset Password di Laravel 8
Membuat Verifikasi Email dan Reset Password di Laravel 8

Silahkan klik button "Reset Password" dan mengatur ulang kata sandi.

Membuat Verifikasi Email dan Reset Password di Laravel 8

Selesai

Kita sampai disini, pembuatan verifikasi email dan reset password telah selesai. Silahkan dicoba.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel

Berlangganan

Berlangganan untuk mendapat pemberitahuan artikel terbaru via email.