@PatrickBauer, @martinbean was absolutely right.
Here's my new version
App\Http\Kernel.php
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'activated.email' => 'App\Http\Middleware\RedirectIfNotMailActivated',
];
App\Http\Middleware\RedirectIfNotMailActivated.php
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class RedirectIfNotMailActivated {
protected $auth;
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
public function handle($request, Closure $next)
{
if ( ! $this->auth->user()->isActivated() )
{
return redirect('/activate');
}
else
{
return $next($request);
}
}
}
Then add to the appropriate controller:
public function __construct()
{
$this->middleware('auth');
$this->middleware('activated.email');
$this->middleware('activated.sms');
}