Membuat Email Verification di Laravel 8 dengan Gmail
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.
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.
- Cara Mengatasi Error XAMPP: MySQL shutdown unexpectedly 23 Oktober 2021 65579 views
- Laravel 8: REST API Authentication dengan Sanctum 17 September 2021 31644 views
- Tutorial CRUD (Create, Read, Update & Delete) Codeigniter 4 dengan Bootstrap 14 Oktober 2021 29583 views
- Membuat REST API CRUD di Laravel 8 dengan Sanctum 18 September 2021 28216 views
- Contoh Cara Menggunakan Sweet Alert di Laravel 8 27 Agustus 2021 27270 views