Showing posts with label Email verification. Show all posts
Showing posts with label Email verification. Show all posts

Thursday, March 7, 2019

How To Enable Email Verification Functionality in Laravel 5.7

How To Enable Email Verification Functionality in Laravel 5.7

The way to enable email verification functionality in Laravel (>= 5.7) is as follows:

1. Model User preparation

Implement the MustVerifyEmail contract.

app/User.php

class User extends Authenticatable 

change to:

class User extends Authenticatable implements MustVerifyEmail

2. Database table field

Table users must contain an email_varified_at column.

3. Routing

Add verify option to the Auth::routes method in order to activate the Auth\VerificationController.

app/routes/web.php

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

4. .env configuration

Check the .env file configuration.

5. Default mail host: using Mailtrap.io as mail host

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxx
MAIL_PASSWORD=xxx
MAIL_ENCRYPTION=null

Option 1: using Google Mail SMTP server as mail host:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xxxxxxx@gmail.com
MAIL_PASSWORD=xxxxxxxxxx
MAIL_ENCRYPTION=tls

Note: The “low security application access” of your Google account must be enable.
And Google will send you a notice and suggest not to enable it for security reason.

Option 2: using Mailgun

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=xxxxxxx@gmail.com
MAIL_PASSWORD=xxxxxxxxx
MAIL_ENCRYPTION=null

Note: Need to join a pay plan.

6. Views

Make sure app/resources/views/auth/verify.blade.php exists.

7. Where to Redirect after verifying Emails

We can modify the route in VerificationController.

app/Http/Controllers/Auth/VerificationController.php

protected $redirectTo = '/home';