PHPackages                             rodshaffer/laravel-user-verification - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. rodshaffer/laravel-user-verification

AbandonedArchivedLibrary[Framework](/categories/framework)

rodshaffer/laravel-user-verification
====================================

User Email Verification For Laravel 5.6.\*

1.0.0(7y ago)016MITPHPPHP &gt;=7.1.3

Since Jun 15Pushed 7y ago1 watchersCompare

[ Source](https://github.com/RodShaffer/laravel-user-verification)[ Packagist](https://packagist.org/packages/rodshaffer/laravel-user-verification)[ RSS](/packages/rodshaffer-laravel-user-verification/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (7)Versions (2)Used By (0)

**rodshaffer/laravel-user-verification** is a PHP package built for Laravel 5.6.\* to easily handle a user verification and validate the e-mail. This package is a modified clone of ["Jean Ragouin's"](https://github.com/jrean) / [jrean/laravel-user-verification](https://github.com/jrean/laravel-user-verification)package 6.0 branch and has been modified to support the use of Gravatar for user avatar's. ie. The verification process can be re-initiated to verify the new email address and on successful verification the users Gravatar will be re-hashed.

**This package supports Laravel 5.6 only.**

ABOUT
-----

[](#about)

- Generate and store a verification token for a registered user
- Send or queue an e-mail with the verification token link
- Handle the token verification
- Set the user as verified
- Re-hash the users Gravatar (if enabled)
- Relaunch the process anytime

INSTALLATION
------------

[](#installation)

This project can be installed via [Composer](http://getcomposer.org). To get the latest version of rodshaffer/laravel-user-verification, add the following line to the require block of your composer.json file:

```
{
    "require": {
        "rodshaffer/laravel-user-verification": "^1.0"
    }

}

```

You'll then need to run `composer install` or `composer update` to download the package and have the autoloader updated.

Or run the following command:

```
composer require rodshaffer/laravel-user-verification

```

Publish the package config file by running the following command:

```
php artisan vendor:publish --provider="Jrean\UserVerification\UserVerificationServiceProvider" --tag="config"

```

CONFIGURATION
-------------

[](#configuration)

The model representing the `User` must implement the authenticatable interface `Illuminate\Contracts\Auth\Authenticatable` which is the default with the Eloquent `User` model.

### Migration

[](#migration)

The table representing the user must be updated with two new columns, `verified` and `verification_token`. This update will be performed by the migrations included with this package.

**It is mandatory that the two columns are on the same table where the user's e-mail is stored. Please make sure you do not already have those fields on your user table.**

To run the migrations from this package use the following command:

```
php artisan migrate --path="/vendor/jrean/laravel-user-verification/src/resources/migrations"

```

The package tries to guess your `user` table by checking what is set in the auth providers users settings. If this key is not found, the default `App\User` will be used to get the table name.

To customize the migration, publish it with the following command:

```
php artisan vendor:publish --provider="Jrean\UserVerification\UserVerificationServiceProvider" --tag="migrations"

```

**Please note: When using Gravatar the table representing the user must be updated with one new column, `gravatar` to accomplish this publish the migrations with the above artisan command and customize the migration by adding the following.**

```
$table->string('gravatar')->nullable()->default(null);

```

**Also make sure to set the `gravatar` config value to `true`**

Middleware
----------

[](#middleware)

### Default middleware

[](#default-middleware)

This package provides an optional middleware throwing a `UserNotVerifiedException`. Please refer to the [Laravel Documentation](https://laravel.com/docs/master/errors#the-exception-handler) to learn more about how to work with the exception handler.

To register the default middleware add the following lines to the `$routeMiddleware` array within the `app/Http/Kernel.php` file:

```
protected $routeMiddleware = [
    // …
    'isVerified' => \Jrean\UserVerification\Middleware\IsVerified::class,
```

Apply the middleware on your routes:

```
Route::group(['middleware' => ['isVerified']], function () {
    // …
```

### Custom middleware

[](#custom-middleware)

Create your own custom middleware using the following artisan command:

```
php artisan make:middleware IsVerified

```

For more details about middlewares, please refer to the [Laravel Documentation](https://laravel.com/docs/5.3/middleware).

E-MAIL
------

[](#e-mail)

This package provides a method to send an e-mail with a link containing the verification token.

- `send(AuthenticatableContract $user, $subject, $from = null, $name = null)`

By default the package will use the `from` and `name` values defined into the `config/mail.php` file:

```
    'from' => ['address' => '', 'name' => ''],
```

If you want to override the values, simply set the `$from` and (optional) `$name` parameters.

Refer to the Laravel [documentation](https://laravel.com/docs/) for the proper e-mail component configuration.

### E-mail View

[](#e-mail-view)

The user will receive an e-mail with a link leading to the `getVerification()`method (endpoint). The view will receive a `$user` variable which contains the user details such as the verification token.

The package allow you to use both traditional blade view files and markdown.

By default a sample e-mail view is loaded to get you started with:

```
Click here to verify your account: {{ $link }}

```

If you prefer to use Markdown instead, update the package config file `user-verification.php` in the `config` directory and replace the following:

```
'email' => [
    'type' => 'default',
],
```

by:

```
'email' => [
    'type' => 'markdown',
],
```

If you want to customize the e-mail views, run the following command to publish them and edit them to your needs:

**The URL must contain the verification token as parameter + (mandatory) a query string with the user's e-mail as parameter.**

```
php artisan vendor:publish --provider="Jrean\UserVerification\UserVerificationServiceProvider" --tag="views"

```

The view will be available in the `resources/views/vendor/laravel-user-verification/` directory.

ERRORS
------

[](#errors)

This package throws several exceptions. You are free to use `try/catch`statements or to rely on the Laravel built-in exceptions handler.

- `ModelNotCompliantException`

The model instance provided is not compliant with this package. It must implement the authenticatable interface `Illuminate\Contracts\Auth\Authenticatable`

- `TokenMismatchException`

Wrong verification token.

- `UserIsVerifiedException`

The given user is already verified.

- `UserNotVerifiedException`

The given user is not yet verified.

- `UserNotFoundException`

No user found for the given e-mail address.

- `UserHasNoEmailException`

User email property is null or empty.

### Error View

[](#error-view)

By default the `user-verification.blade.php` view will be loaded for the verification error route `/email-verification/error`. If an error occurs, the user will be redirected to this route and this view will be rendered.

To customize the view, publish it with the following command:

```
php artisan vendor:publish --provider="Jrean\UserVerification\UserVerificationServiceProvider" --tag="views"

```

The view will be available in the `resources/views/vendor/laravel-user-verification/` directory and can be customized.

USAGE
-----

[](#usage)

### Routes

[](#routes)

By default this packages ships with two routes.

```
Route::get('email-verification/error', 'Auth\RegisterController@getVerificationError')->name('email-verification.error');
Route::get('email-verification/check/{token}', 'Auth\RegisterController@getVerification')->name('email-verification.check');
```

#### Overriding package routes

[](#overriding-package-routes)

To define your own custom routes, put the package service provider call before the `RouteServiceProvider` call in the `config/app.php` file.

```
   /*
    * Package Service Providers...
    */
    Jrean\UserVerification\UserVerificationServiceProvider::class,

   /*
    * Application Service Providers...
    */
    // ...
    App\Providers\RouteServiceProvider::class,
```

Then, add your custom routes in your route file.

### Traits

[](#traits)

The package offers three (3) traits for a quick implementation. **Only `VerifiesUsers` trait is mandatory** and includes `RedirectsUsers`.

`Jrean\UserVerification\Traits\VerifiesUsers`

`Jrean\UserVerification\Traits\RedirectsUsers`

and:

`Jrean\UserVerification\Traits\UserVerification`

This last one offers two methods that can be added to the `User` model.

- `isVerified` checks if a user is marked as verified.
- `isPendingVerification` checks if a verification process has been initiated for a user.

Add the use statement to your `User` model and use the `UserVerification` within the class:

### Endpoints

[](#endpoints)

The two (2) following methods are included into the `VerifiesUsers` trait and called by the default package routes.

- `getVerification(Request $request, $token)`

Handle the user verification.

- `getVerificationError()`

Do something if the verification fails.

### API

[](#api)

The package public API offers eight (8) methods.

- `generate(AuthenticatableContract $user)`

Generate and save a verification token for the given user.

- `send(AuthenticatableContract $user, $subject = null, $from = null, $name = null)`

Send by e-mail a link containing the verification token.

- `sendQueue(AuthenticatableContract $user, $subject = null, $from = null, $name = null)`

Queue and send by e-mail a link containing the verification token.

- `sendLater($seconds, AuthenticatableContract $user, $subject = null, $from = null, $name = null)`

Send later by e-mail a link containing the verification token.

- `process($email, $token, $userTable)`

Process the token verification for the given e-mail and token.

For the `sendQueue`, `sendLater` and `sendLaterOn` methods, you must [configure your queues](https://laravel.com/docs/)before using this feature.

### Facade

[](#facade)

The package offers a facade `UserVerification::`.

### Attributes/Properties

[](#attributesproperties)

To customize the package behaviour and the redirects you can implement and customize six (6) attributes/properties:

- `$redirectIfVerified = '/';`

Where to reditect if the authenticated user is already verified.

- `$redirectAfterVerification = '/';`

Where to redirect after a successful verification token verification.

- `$redirectIfVerificationFails = '/email-verification/error';`

Where to redirect after a failling token verification.

- `$verificationErrorView = 'laravel-user-verification::user-verification';`

Name of the view returned by the getVerificationError method.

- `$verificationEmailView = 'laravel-user-verification::email'`

Name of the default e-mail view.

- `$userTable = 'users';`

Name of the default table used for managing users.

### Translations

[](#translations)

To customize the translations you may publish the files to your `resources/lang/vendor` folder using the following command:

```
php artisan vendor:publish --provider="Jrean\UserVerification\UserVerificationServiceProvider" --tag="translations"

```

This will add `laravel-user-verification/en/user-verification.php` to your vendor folder. By creating new language folders, like `de` or `fr` and placing a `user-verification.php` with the translations inside, you can add translations for other languages. You can find out more about localization in the [Laravel documentation](https://laravel.com/docs/5.3/localization).

### Auto-login

[](#auto-login)

If you wish to automaticaly log in the user after the verification process, update the package config file `user-verification.php` in the config directory and replace the following:

```
'auto-login' => false,
```

by:

```
'auto-login' => true,
```

### Customize

[](#customize)

You can customize the package behaviour by overriding/overwriting the public methods and the attributes/properties. Dig into the source.

GUIDELINES
----------

[](#guidelines)

**This package doesn't require the user to be authenticated to perform the verification. You are free to implement any flow you may want to achieve.**

This package wishes to let you be creative while offering you a predefined path. **The following guidelines assume you have configured Laravel for the package as well as created and migrated the migration according to this documentation and the previous documented steps.**

Note that by default the behaviour of Laravel is to return an authenticated user after the registration step.

### Example

[](#example)

The following code sample aims to showcase a quick and basic implementation following Laravel logic. You are free to implement the way you want. It is highly recommended to read and to understand the way Laravel implements registration/authentication.

- Define the e-mail view.

Edit the `app\Http\Controllers\Auth\RegisterController.php` file.

- Import the `VerifiesUsers` trait (mandatory)
- Overwrite and customize the redirect attributes/properties paths available within the `RedirectsUsers` trait included by the `VerifiesUsers` trait. (not mandatory)
- Overwrite the contructor (not mandatory)
- Overwrite the `register()` method (mandatory)

```
    namespace App\Http\Controllers\Auth;

    use App\User;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Validator;
    use Illuminate\Foundation\Auth\RegistersUsers;

    use Illuminate\Http\Request;
    use Illuminate\Auth\Events\Registered;
    use Jrean\UserVerification\Traits\VerifiesUsers;
    use Jrean\UserVerification\Facades\UserVerification;

    class RegisterController extends Controller
    {
        /*
        |--------------------------------------------------------------------------
        | Register Controller
        |--------------------------------------------------------------------------
        |
        | This controller handles the registration of new users as well as their
        | validation and creation. By default this controller uses a trait to
        | provide this functionality without requiring any additional code.
        |
        */

        use RegistersUsers;

        use VerifiesUsers;

        /**
         * Where to redirect users after registration.
         *
         * @var string
         */
        protected $redirectTo = '/home';

        /**
         * Create a new controller instance.
         *
         * @return void
         */
        public function __construct()
        {
            // Based on the workflow you need, you may update and customize the following lines.

            $this->middleware('guest', ['except' => ['getVerification', 'getVerificationError']]);
        }

        /**
         * Get a validator for an incoming registration request.
         *
         * @param  array  $data
         * @return \Illuminate\Contracts\Validation\Validator
         */
        protected function validator(array $data)
        {
            return Validator::make($data, [
                'name' => 'required|max:255',
                'email' => 'required|email|max:255|unique:users',
                'password' => 'required|min:6|confirmed',
            ]);
        }

        /**
         * Create a new user instance after a valid registration.
         *
         * @param  array  $data
         * @return User
         */
        protected function create(array $data)
        {
            return User::create([
                'name' => $data['name'],
                'email' => $data['email'],
                'password' => bcrypt($data['password']),
            ]);
        }

        /**
         * Handle a registration request for the application.
         *
         * @param  \Illuminate\Http\Request  $request
         * @return \Illuminate\Http\Response
         */
        public function register(Request $request)
        {
            $this->validator($request->all())->validate();

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

            event(new Registered($user));

            $this->guard()->login($user);

            UserVerification::generate($user);

            UserVerification::send($user, 'My Custom E-mail Subject');

            return $this->registered($request, $user)
                            ?: redirect($this->redirectPath());
        }
    }
```

At this point, after registration, an e-mail is sent to the user. Click the link within the e-mail and the user will be verified against the token.

If you want to perform the verification against an authenticated user you must update the middleware exception to allow `getVerification` and `getVerificationError` routes to be accessed.

```
$this->middleware('guest', ['except' => ['getVerification', 'getVerificationError']]);
```

RELAUNCH THE PROCESS ANYTIME
----------------------------

[](#relaunch-the-process-anytime)

If you want to regenerate and resend the verification token, you can do this with the following two lines:

```
UserVerification::generate($user);
UserVerification::send($user, 'My Custom E-mail Subject');
```

The `generate` method will generate a new token for the given user and change the `verified` column to 0. The `send` method will send a new e-mail to the user.

LICENSE
-------

[](#license)

Laravel User Verification is licensed under [The MIT License (MIT)](LICENSE).

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2886d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d34a8b419af5d17316cbd060d4a4843cecd27f62d612c060c545ad8aaf40c783?d=identicon)[rodshaffer](/maintainers/rodshaffer)

---

Top Contributors

[![RodShaffer](https://avatars.githubusercontent.com/u/11232994?v=4)](https://github.com/RodShaffer "RodShaffer (1 commits)")

---

Tags

frameworklaravelgravataremail-verificationuser verificationuser activationemail activation

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/rodshaffer-laravel-user-verification/health.svg)

```
[![Health](https://phpackages.com/badges/rodshaffer-laravel-user-verification/health.svg)](https://phpackages.com/packages/rodshaffer-laravel-user-verification)
```

###  Alternatives

[jrean/laravel-user-verification

User Email Verification For Laravel

865843.6k7](/packages/jrean-laravel-user-verification)[rebing/graphql-laravel

Laravel wrapper for PHP GraphQL

2.2k7.1M26](/packages/rebing-graphql-laravel)[graham-campbell/markdown

Markdown Is A CommonMark Wrapper For Laravel

1.3k7.1M64](/packages/graham-campbell-markdown)[graham-campbell/manager

Manager Provides Some Manager Functionality For Laravel

39221.1M134](/packages/graham-campbell-manager)[laravel-lang/publisher

Localization publisher for your Laravel application

2167.7M24](/packages/laravel-lang-publisher)[laravel-zero/framework

The Laravel Zero Framework.

3371.4M369](/packages/laravel-zero-framework)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
