Error: Trying to get property 'headers' of non-object

0

I am using Laravel 5.6 and I have just applied different middleware to my project in order to restrict access to certain routes for different types of user roles:

 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 in order to direct me to the views for each type of user, thus:

<?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 $next($request);
    }


}
}

But when I login, the system responds to me ErrorException (E_NOTICE) Trying to get property 'headers' of non-object

Thankful in advance waiting for your help

    
asked by ALVARO ROBERTO BACARREZA ARZAB 17.05.2018 в 01:43
source

0 answers