Linked Questions

Popular Questions

Call to a member function hasRole() on null

Asked by At

I am new to Laravel

I have set up permissions and roles inside my application, and assigned these to users - however when I try to use hasRole or hasAnyRole it isn't working for me.

Here is my 'CheckRole' middleware:


namespace App\Http\Middleware;

use Closure;

class CheckRole
     * Handle an incoming request.
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
    public function handle($request, Closure $next)
        // Get the required roles from the route
        $roles = $this->getRequiredRoleForRoute($request->route());
        // Check if a role is required for the route, and
        // if so, ensure that the user has that role.
            return $next($request);
        return response([
            'error' => [
                'code' => 'INSUFFICIENT_ROLE',
                'description' => 'You are not authorized to access this resource.'
        ], 401);
    private function getRequiredRoleForRoute($route)
        $actions = $route->getAction();
        return isset($actions['roles']) ? $actions['roles'] : null;

Here is my user model:

public function role()
    return $this->belongsToOne('App\Role', 'id', 'role_id');
public function hasRole($roles)
    $this->have_role = $this->getUserRole();
    // Check if the user is a root account
    if($this->have_role->name == 'Root') {
        return true;
        foreach($roles as $need_role){
            if($this->checkIfUserHasRole($need_role)) {
                return true;
    } else{
        return $this->checkIfUserHasRole($roles);
    return false;
private function getUserRole()
    return $this->role()->getResults();
private function checkIfUserHasRole($need_role)
    return (strtolower($need_role)==strtolower($this->have_role->name)) ? true : false;

And here is my Role model:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model

      protected $table = 'role';
      protected $fillable = ['name'];
      protected $primaryKey = 'id';
      public $timestamps = false;
public function users()
    return $this->belongsToMany('App\User', 'role_id', 'id');

I am trying to run this route:

//for Root

    echo "This is for Root test";

which is producing this error:

FatalThrowableError (E_ERROR) Call to a member function hasRole() on null

Related Questions