Membuat Email Verification di Laravel 8 dengan Gmail

Membuat Email Verification di Laravel 8 dengan Gmail

Admin
Admin・ 24 Februari 2021
9 min read ・ 8708 views

Laravel Email Verification - Jika sebelumnya Kami telah membagikan artikel yang membahas tentang bagaimana cara membuat verifikasi akun dengan nomor telepon, maka pada kesempatan ini Kami akan membagikan artikel yang hampir sama namun beda media. Di artikel ini, kita akan mencoba bagaimana cara membuat verifikasi akun dengan email atau mungkin lebih dikenal dengan laravel email verification.  

Sebelumnya, kita harus tahu apa tujuan membuat email verification di project yang dibuat dengan laravel 8 ini. Jadi, dengan membuat akun verification atau email verification akan mencegah user memasukkan atau mendaftarkan email abal-abal saat register.

Contoh, jika disuatu website yang mengharuskan user untuk register namun tidak disertai akun verification atau email verification, user tersebut bisa saja memasukkan email abal-abal seperti sdsd@dds.dsfds untuk bisa langsung masuk ke halaman yang telah diproteksi (mengharuskan user login). Berbeda lagi kalau website tersebut mengharuskan setiap ada user yang mendaftar atau register harus melakukan verifikasi akun terlebih dahulu, tentu akan meminimalisir user yang register dengan data atau email abal-abal.

Menyiapkan akun Gmail

Karena kita akan membuat email verification atau verifikasi akun dengan email di laravel yang menggunakan layanan Google mail sebagai mail host, jadi kita perlu menyiapkan akun gmail tersebut.

setting google account
 

Link: https://myaccount.google.com/u/1/security

Pastikan akun gmail yang akan digunakan, pada bagian Akses aplikasi yang kurang aman telah aktif atau bisa dilihat seperti gambar di atas.

Baiklah kita langsung saja memulai percobaan membuat email verification di laravel 8 dengan gmail. Dipercobaan ini kita akan memulainya dari 0 yaitu dari mulai install project laravel baru sampai kita berhasil verifikasi email. Berikut ini langkah-langkahnya:

1. Install laravel 8 dari composer

Langkah pertama yaitu menginstall project laravel baru. Disini kita menginstallnya menggunakan composer. Buka terminal, masuk ke direktori dimana kita ingin meletakkan folder project tersebut. kemudian jalankan command seperti di bawah ini.

composer create-project laravel/laravel emailverify

Dengan command di atas, kita akan menginstall project laravel baru yang akan diberi nama emailverify.

2. Install package laravel ui

Kita akan menggunakan package laravel ui untuk membuat fitur auth, dan maka dari itu kita perlu menginstall package laravel ui di project kita. Untuk menginstallnya bisa masuk ke direktori project yang baru kita install dengan command cd emailverify kemudian jalankan command di bawah ini.

composer require laravel/ui

Setelah itu, kita perlu menginstall ui menggunakan bootstrap untuk melakukan authentication. Jalankan command di bawah ini untuk menginstall ui bootstrap di project.

php artisan ui bootstrap --auth

tunggu sampai proses selesai. Jika sudah jalankan command

npm install && npm run dev

Tunggu sampai selesai. Jika ada pesan "Finished, Please run mix again", jalankan command npm install && npm run dev lagi.

3. Buat database.

Untuk menampung data user, kita perlu membuat database baru. Untuk itu silahkan buat database terlebih dahulu di xampp, laragon atau yang lainnya. Di percobaan ini, saya membuat database baru dengan nama laravel.

4. Edit file .env

Selanjutnya, edit beberapa record di file .env. Ada beberapa record yang perlu kita seusaikan, antara lain DB_DATABASE. pada DB_DATABASE masukkan nama database baru yang telah dibuat pada langkah nomor 3. Selanjutnya sesuaikan pada record di bawah ini.

MAIL_MAILER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=587
MAIL_USERNAME=email@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=email@gmail.com
MAIL_FROM_NAME="Bisabos"

Disini kita akan menggunakan smtp sebagai mailer, kemudian untuk host dan port kita menggunakan smtp.googlemail.com dan 587, untuk encryption bisa memakai tls. Pada record MAIL_USERNAME, MAIL_PASSWORD, MAIL_FROM_ADDRESS dan MAIL_FROM_NAME silahkan disesuaikan dengan akun gmail milik kalian.

Sehingga secara keseluruhan, file .env akan menjadi seperti di bawah ini.

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:m5S1Xbfrx8FIeBbl5y8gdEptmMBOI/qRVcPszWbsi2w=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=587
MAIL_USERNAME=email@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=email@gmail.com
MAIL_FROM_NAME="Bisabos"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

5. Jalankan migrate

Untuk memigrasi tabel-tabel yang telah dibuat dengan migration ke database yang telah dibuat, kita bisa menjalankan command php artisan migrate.

6. Edit file routes/web.php

Untuk mengaktifkan fitur verifikasi, kita perlu mendefinisikannya pada file web.php di folder routes. 

Cari baris

Auth::routes();

Kemudian ubah menjadi

Auth::routes(['verify' => true]);

7. Edit file Models/User.php

Pada file Models/User.php tambahkan implements MustVerifyEmail, sehingga secara keseluruhan file Models/User.php akan menjadi seperti di bawah 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;
class User extends Authenticatable implements MustVerifyEmail
{
    use HasFactory, 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',
    ];
}

8. Mengatur middleware

Untuk memberikan proteksi pada suatu halaman, kita bisa menggunakan midleware. Seperti pada percobaan ini, kita akan memproteksi halaman home agar tidak bisa diakses sebelum user memverifikasi email yang digunakan saat register. Mengatur midleware bisa diletakkan di controller maupun di route. 

Contoh middleware di controller, kita bisa menambahkan function seperti di bawah ini pada HomeController.php

public function __construct()
    {
        $this->middleware(['auth','verified']);
    }

Secara keseluruhan, kode yang terdapat pada file HomeController.php akan seperti di bawah ini.

<?php
namespace 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');
    }
}

Atau bisa juga meletakkan middleware di route seperti di bawah ini.

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home')->middleware('verified');

Kita bebas memilih, mau pakai cara meletakkan middleware di controller atau route.

SELESAI.

Sekarang tiba di tahap pengujian. Untuk mencobanya, silahkan jalankan project dengan php artisan serve atau jika menggunakan valet silahkan akses dengan namaproject.test.


Masuk ke menu register coba register dengan memasukkan email aktif dan jika sudah terisi semua, klik Register.


Maka kita tidak akan langsung diarahkan ke halaman home melainkan ke halaman email verify terlebih dahulu. Untuk dapat melanjutkan ke halaman home, kita harus verifikasi email kita terlebih dahulu. Silahkan cek inbox di akun gmail kita.

Untuk verifikasi email, kita bisa langsung klik tombon Verify Email Address, maka kita akan langsung di arahkan ke halaman home.

OK, kita sudah berhasil membuat email verification di laravel 8 dengan gmail. Sekian artikel kali ini, jika ada saran, kritik, masukkan atau apapun itu yang ingin didiskusikan, silahkan tulis di form komentar di bawah ini.

Tinggalkan Komentar
Loading Comments