A Laravel package to handle email verification.
It is inspired by crypto-based password resets and the email verification package by josiasmontag.
- Crypto-based email verification. No need to store a temporary token in the database!
- Event-based totally. No need to override your
register()
method. - Using the Laravel 5.4 notification system.
- You're free to create routes anyway you like.
- Resend the verification email anytime.
- Customize the email notification.
Install this package via Composer.
composer require meness/verifi
You must install both the service provider and the facade.
'providers' => [
...
Meness\Verifi\Providers\VerifiServiceProvider::class,
];
'aliases' => [
...
'Verifi' => Meness\Verifi\Facades\Verifi::class,
];
A migration is provided to add a is_email_verified
column to the existing users
table, you can publish the migration.
php artisan vendor:publish --provider="Meness\Verifi\Providers\VerifiServiceProvider" --tag="migrations"
Remember to run the following command if you published the migration.
php artisan migrate
A configuration file is also provided, you can publish the configuration.
php artisan vendor:publish --provider="Meness\Verifi\Providers\VerifiServiceProvider" --tag="config"
1440
(in minutes, 24 hours) set by default.
/verify
set by default. Change the value if you're using a different route for verification.
true
set by default. Let this package send an email notification automatically after the registration complete.
-
The
User
model must implementMeness\Verifi\Entities\Traits\Contracts\Verifi
interface. -
Add
Meness\Verifi\Entities\Traits\VerifiTrait
as a trait if you're going to use the default notification.
class User extends Authenticatable implements Verifi
{
use Notifiable, VerifiTrait;
}
Note: Some methods are not implemented, you must do it yourself.
You're free to create routes, because there're no default routes provided with this package.
Route::get('/verify', 'Auth\RegisterController@verify');
Route::get('/resend', 'Auth\RegisterController@resend');
Note: Remember to change the verify_route
value if you're not going to use the default route.
Create listeners for necessary events. There're three events provided with this package: InvalidCredentials
, VerificationSent
, and Verified
.
There're two methods available, verify()
and resend()
.
Note: An email verification will be sent after the registration complete if send_notifications
set true
, so you're not required to do it manually.
Verifi::verify()
expects a request object and an optional callback. It verifies credentials provided with the request.
Verifi::verify(request(), function ($user) {
if (is_null($user)) {
// Invalid credentials provided
} else {
// Verified
}
});
Verifi::resend()
expects an user model object and an optional callback. It sends the verification email to the provided user.
Verifi::resend($user, function ($user) {
// Resent successfully
});
There's a middleware called IsEmailVerified
to determine if the user's email address is verified.
$routeMiddleware = [
...
'isEmailVerified' => \Meness\Verifi\Http\Middleware\IsEmailVerified::class,
];
Verifi is open-sourced software licensed under the MIT license.