Good morning, I have been using laravel 5.6 and I have just applied several middleware to my project in order to protect the routes, in the access to the different user roles, but when making the login it keeps redirecting me to 'home'.
That's how I have the declared middleware
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin'=> \App\Http\Middleware\admin::class,
'almacen'=> \App\Http\Middleware\almacen::class,
'boletas'=> \App\Http\Middleware\boletas::class,
];
Where each middleware file places a switch, leaving it like this:
<?php
namespace App\Http\Middleware;
use Illuminate\Contracts\Auth\Guard;
use Closure;
use Session;
class almacen
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
protected $auth;
public function __construct(Guard $auth)
{
$this->auth=$auth;
}
public function handle($request, Closure $next)
{
switch ($this->auth->user()->id_role)
{
case '1':
return redirect()->to('admin');
break;
case '2':
//return redirect()->to('almacen');
break;
case '3':
return redirect()->to('boletas');
break;
}
return $next($request);
}
Also modify the file RedirectIfAuthenticated.php, leaving it like this:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
switch ($this->auth->user()->id_role)
{
case '1':
return redirect()->to('admin');
break;
case '2':
return redirect()->to('almacen');
break;
case '3':
return redirect()->to('boletas');
break;
default:
return redirect()->to('login');
break;
}
return redirect('/');
}
return $next($request);
}
}
If someone could please tell me what I'm failing or where else I should modify the redirect after login