Cara Mudah Membuat Verifikasi Email Register Pada Laravel

Disini kita akan membuat verifikasi email setelah melakukan registrasi. Status pada user kita akan kategorikan menjadi 3 : Active, InActive, NotVerified.

1. Override pada Auth Controller

Pada saat register, kita akan mengirimkan token untuk verifikasi. app/Http/Controllers/Auth/RegisterController.php.

    use Ramsey\Uuid\Uuid;
    use App\Models\Verification;
    use App\Mail\AccountVerification;
    use Illuminate\Auth\Events\Registered;
    
    public function register(Request $request)
    {
        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $verification = Verification::create([ 'user_id' => $user->id, 'token' => Uuid::uuid4()->toString() ]);

        \Mail::to($user->email)->send(new AccountVerification($user, $verification->token));

        return redirect()->back()->withSuccess('Akun berhasil dibuat, Mohon periksa email Anda <b>' . $request->email . '</b> untuk melakukan aktivasi.');
    }
    
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'status' => Status::NotVerified,
        ]);
    }
    
    public function verification(Request $request)
    {
        $verification = Verification::where('token', $request->token)->first();
        
        if ($verification) {
            $user = Applicant::find($verification->user_id);
            $user->status = Status::Active;
            $user->save();
            
            $verification->delete();
            
            return redirect()->route('login');
        }

        return redirect('/');
    }

note : pada AccountVerification merupakan email yang akan kita kirimkan dengan template yang sudah disiapkan.

Pada login kita tambahkan untuk pengecekan hanya bisa login dengan status aktif saja.

app/Http/Controllers/Auth/LoginController.php.

    protected function credentials(Request $request)
    {
        return array_merge($request->only($this->username(), 'password'), ['status' => Status:Active]);
    }

2. Membuat Tabel Verifikasi

Di sini kita akan membuat tabel verifikasi untuk menyimpan token.

    Schema::create('verifications', function (Blueprint $table) {
        $table->unsignedBigInteger('user_id')->index();
        $table->string('token');
        $table->timestamps();
    });

Pada Model Verifikasi tambahkan.

protected $primaryKey = 'user_id';

3. Tambahkan Verifikasi Pada Route

routes/web.php.

Route::get('register/verification', '\App\Http\Controllers\Auth\RegisterController@verification')->name('register.verification');

Sekian untuk kali ini semoga bermanfaat :D untuk lebih lanjut bisa kunjungi link tersebut.