Cara menggunakan php verification email

Email verification pada auth register di framework Laravel 6/7 secara default itu disable, bagaimana caranya untuk membuat verifikasi pada proses register Laravel ?

Mari kita pelajari alur register yang akan dibuat:

  • User input data yang diperlukan pada form register
  • Melihat email verifikasi untuk memverifikasi email yang valid
  • Setelah user klik tautan verifikasi, status user menjadi terverifikasi dan dialihkan ke halaman beranda atau dashboard.
  • Jika user tidak melakukan verifikasi, user tidak dapat masuk ke halaman beranda dan dilarikan ke page informasi “email belum terverifikasi”.

Scope of This Chapter

Pada tutorial ini kita akan membahas tentang Email Verification dengan SMTP dan Mailgun pada proses register Laravel, baca juga tutorial authentication pada Laravel ditautan berikut ini:

Email Verification

Step 1 — Install & Konfigurasi Project Laravel

Buat project dengan perintah composer berikut pada terminal:

Kita buat project pada folder user, htdocs, atau html.

composer create-project --prefer-dist laravel/laravel blog

atau install untuk versi tertentu dengan perintah:

composer create-project --prefer-dist laravel/laravel=7.* blog

Edit konfigurasi database pada file .env

// edit file .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=latihan_blog
DB_USERNAME=root
DB_PASSWORD=password

Untuk mempelajari instalasi dan konfigurasi pada Laravel bisa pelajari tautan berikut ini :

Untuk menjalankan perintah composer dan artisan pastikan kita sudah masuk ke folder project.

// masuk ke folder project pada linux
cd /var/www/html/blog

Step 2— Install package laravel/ui

Jalankan perintah composer berikut pada terminal:

composer require laravel/ui

Step 3— Membuat View Auth

Untuk membuat view auth dengan bootstrap jalankan perintah ini pada terminal:

php artisan ui bootstrap --auth

Setelah memilih type preset ui yang digunakan, kita perlu menginstall NPM untuk generate view dan assets yang dibutuhkan pada auth dengen perintah:

npm install && npm run dev

Step 4— Run Migrations

Pada saat instalasi Laravel, kita sudah disediakan file migrations untuk table users.

Pada table user terdapat column email_verified_at yang digunakan untuk menyimpan tanggal dan waktu alamat email diverifikasi, secara default column ini sudah disediakan oleh laravel, column ini juga digunakan untuk status verified email:

  • Jika isi column email_verified_at “null”, berarti email belum terverifikasi.
  • Jika sudah terisi tanggal dan waktu maka email status terverifikasi.
// buka file 2014_10_12_000000_create_users_table.phpuse Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}

Jalankan migration dengan perintah artisan berikut pada terminal:

php artisan migrate

Step 5— Konfigurasi SMTP Server

Untuk email verifikasi ini membutuhkan SMTP Server yang bertugas mengirim email ke user, ada banyak service yang tersedia, silahkan bisa cari di google dengan keyword “smtp server”.

Untuk proses testing bisa menggunakan service https://mailtrap.io.

website mailtrap.io

Setelah proses register akun mailtrap selesai, kemudian buat inbox dan salin credentials SMTP seperti Host, Port, Username, Password, TLS yang akan digunakan pada konfigurasi SMTP Laravel.

Buat Inboxcredentials SMTP

Edit file .env seperti baris kode berikut :

// edit file .envMAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME="${APP_NAME}"

Step 6— Edit Model User

Untuk enable email verifikasi kita juga harus implementasi MustVerifyEmail Contract pada model User. Buka file model User dan edit seperti berikut:

// edit app/User.phpnamespace App;use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}

Step 7— Tambahkan Routes Email Verifikasi

Laravel sudah menyediakan class Auth\VerificationController yang digunakan untuk mengirim tautan verifikasi dan memverifikasi email. Untuk menambahkan routes ini edit baris kode auth routes:

// edit routes/web.phpAuth::routes(['verify' => true]);

Step 8— Middleware Email Verifikasi

Tambahkan middleware verified yang sudah disediakan Laravel pada route yang diperlukan, contohnya:

Route::get('profile', function () {
// hanya user yang verified yang bisa mengakses route ini
})->middleware('verified');

Kita tambahkan verified middleware pada class HomeController

class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('verified');
}
}

jika sebelumnya sudah terdapat auth middleware pada controller ini, maka kita bisa menggabungkan kedua middleware tersebut menjadi:

// buka file HomeController.phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware(['auth', 'verified']);
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home');
}
}

Step 9— Buka route register dan email verifikasi pada browser

Jalankan perintah php artisan serve pada terminal, dan akses route register pada browser.

Halaman Register

Auth register Laravel

Halaman Verify Your Email Address

Verify Your Email Address

Cek Email Verification di Email atau Inbox Mailtrap

Email verification

Step 10 — Email Verifikasi dengan Mailgun

Jika mail driver akan menggunakan service Mailgun, maka register ke https://www.mailgun.com dan salin credentials API mailgun seperti domain dan secret key, buka file .env dan edit seperti baris kode berikut :

// edit file .envMAIL_MAILER=mailgun
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME="${APP_NAME}"
MAILGUN_DOMAIN=mg.YOUR_DOMAIN.com
MAILGUN_SECRET=YOUR_KEY_HERE

Untuk mengetahui daftar driver mail bisa lihat di file config/mail.php, dan untuk melihat konfigurasi service mailgun bisa lihat di file config/services.php

Driver mailgun ini berbasis API yang lebih sederhana dari driver SMTP, untuk menggunakan driver ini kita harus install library Guzzle HTTP melalui composer:

composer require guzzlehttp/guzzle

Tutorial Lain

Support the Author

Jika suka dengan artikel ini, bisa support saya ditautan berikut ini https://karyakarsa.com/tobidsn :)

Bagaimana cara melakukan verifikasi email?

Login ke email untuk memverifikasi akun Anda.
Saat membuat akun, Anda akan mendapatkan email dari Google. Buka email dan cari kode verifikasi..
Untuk menyelesaikan pembuatan akun, masukkan kode verifikasi jika diminta..

Apa itu verif email?

Verifikasi email adalah lapisan keamanan untuk melindungi tujuan pemasaran email Anda.

Bagaimana cara mendapatkan kode verifikasi gmail?

Ada beberapa cara untuk mendapatkan kode verifikasi..
Buka Pengaturan > [nama Anda]..
Ketuk Kata Sandi & Keamanan..
Pesan berisi "Detail Akun Tidak Tersedia". Ketuk Dapatkan Kode Verifikasi..

Kenapa kode verifikasi email tidak valid?

Salah satu penyebab kode verifikasi tidak terkirim yaitu karena nomor atau email yang kamu input atau daftarkan salah. Karena salah atau tidak benar maka kode verifikasi tidak akan kamu terima sampai kapanpun.