0

We have fresh Laravel with voyager admin panel. we are trying check user role but it doesn't work.

use Illuminate\Support\Facades\Auth;
use TCG\Voyager\Voyager;


class Controller extends BaseController
{
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

     public $auth, $user, $admin_role;

     public function __construct()
    {
         $this->auth = Auth::user();
         $this->user = Auth::check();
         $this->admin_role = $this->auth->hasRole('admin');
    }

    public function displayPassportInfo()
    {
        if ($this->user){
            if($this->admin_role) return view('passport');
            else return view('404');
        }
    }
}

in phpstorm application, method hasRole not found in illuminate\contract... where is the problem?

log file:

local.ERROR: Call to a member function hasRole() on null {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Call to a member function hasRole() on null at B:\\xampp\\htdocs\\vod\\app\\Http\\Controllers\\Controller.php:24)
[stacktrace]
#0 [internal function]: App\\Http\\Controllers\\Controller->__construct()
#1 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(827): ReflectionClass->newInstanceArgs(Array)
#2 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(667): Illuminate\\Container\\Container->build('App\\\\Http\\\\Contro...')
#3 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Container\\Container.php(615): Illuminate\\Container\\Container->resolve('App\\\\Http\\\\Contro...', Array)
#4 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Application.php(767): Illuminate\\Container\\Container->make('App\\\\Http\\\\Contro...', Array)
#5 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(233): Illuminate\\Foundation\\Application->make('App\\\\Http\\\\Contro...')
#6 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(833): Illuminate\\Routing\\Route->getController()
#7 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Route.php(794): Illuminate\\Routing\\Route->controllerMiddleware()
#8 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(693): Illuminate\\Routing\\Route->gatherMiddleware()
#9 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(673): Illuminate\\Routing\\Router->gatherRouteMiddleware(Object(Illuminate\\Routing\\Route))
#10 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(657): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#11 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(623): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#12 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php(612): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#13 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(176): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#14 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(30): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#15 B:\\xampp\\htdocs\\vod\\vendor\\fideloper\\proxy\\src\\TrustProxies.php(57): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#16 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(163): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#17 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#18 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#19 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#20 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest.php(21): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#22 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#23 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#24 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize.php(27): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#25 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php(62): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#28 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(163): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Pipeline.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Pipeline\\Pipeline.php(104): Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#31 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(151): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#32 B:\\xampp\\htdocs\\vod\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#33 B:\\xampp\\htdocs\\vod\\public\\index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#34 {main}
"} 

this is part of daily log file. please help me some way check user role or permission.how can we fix it?

Amin Shabanzadeh
  • 301
  • 2
  • 11
  • 2
    `$this->auth` does not have a `hasRole` method. Apart from the obious reason that is does not, its most likely that `$this->auth = Auth::user();` failed in some way because it is saying that `$this->auth` is NULL – RiggsFolly Aug 21 '19 at 13:01
  • this code is in voyager permission documentation: auth()->user()->hasRole('admin'). but this code have same error so. how can I check user role?! – Amin Shabanzadeh Aug 21 '19 at 13:25
  • Check the error logs – RiggsFolly Aug 21 '19 at 13:32
  • I updated post with log details – Amin Shabanzadeh Aug 21 '19 at 14:03
  • Marking this question as duplicate of https://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php is like pointing OP to the user manual. I waded through there and found things to look at, but it's not that obvious how to map it back to OP's problem. – joanis Aug 21 '19 at 14:51

0 Answers0