meness / verifi
A Laravel package to handle email verification.
This package's canonical repository appears to be gone and the package has been frozen as a result.
Installs: 16 893
Dependents: 0
Suggesters: 0
Security: 0
Stars: 54
Watchers: 6
Forks: 3
Open Issues: 4
Requires
- php: ^7.1
- illuminate/auth: ~5.4
- illuminate/bus: ~5.4
- illuminate/contracts: ~5.4
- illuminate/database: ~5.4
- illuminate/notifications: ~5.4
- illuminate/queue: ~5.4
- illuminate/support: ~5.4
- nesbot/carbon: ~1.22
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^5.0
README
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.
Installation
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"
Configuration
expiration
1440
(in minutes, 24 hours) set by default.
verify_route
/verify
set by default. Change the value if you're using a different route for verification.
send_notifications
true
set by default. Let this package send an email notification automatically after the registration complete.
How to Use (Step by Step)
Step One
-
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.
Step Two
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.
Step Three (Optional)
Create listeners for necessary events. There're three events provided with this package: InvalidCredentials
, VerificationSent
, and Verified
.
Step Four
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.
verify()
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 } });
resend()
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 });
Step Five (Optional)
There's a middleware called IsEmailVerified
to determine if the user's email address is verified.
$routeMiddleware = [ ... 'isEmailVerified' => \Meness\Verifi\Http\Middleware\IsEmailVerified::class, ];
Changelog
Please see releases for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
Verifi is open-sourced software licensed under the MIT license.