Stackoverfall
Stackoverfall

Reputation: 1202

Illuminate\Auth\SessionGuard::__construct() must implement interface

I have read other questions about my error so I re-checked my code and didn't found any typo mistake , Error

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR) Argument 2 passed to Illuminate\Auth\SessionGuard::__construct() must implement interface Illuminate\Contracts\Auth\UserProvider, null given, called in \vendor\laravel\framework\src\Illuminate\Auth\AuthManager.php on line 125

Auth.php

return [

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'admin' => [
            'driver' => 'session',
            'provider' => 'admin',
        ],

        'user' => [
            'driver' => 'session',
            'provider' => 'user',
        ],

        'company' => [
            'driver' => 'session',
            'provider' => 'company',
        ],

        'employee' => [
            'driver' => 'session',
            'provider' => 'employee',
        ],
    ],



    'providers' => [

        'admin' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],

        'company' => [
            'driver' => 'eloquent',
            'model' => App\Model\Employee::class,
        ],

        'employee' => [
            'driver' => 'eloquent',
            'model' => App\Model\Employee::class,
        ],

    ],

];

Upvotes: 2

Views: 7231

Answers (2)

Elvis
Elvis

Reputation: 389

You need to define the provider for your new guard otherwise it will throw the error. Your provider should also be spelt 'admins' as you are referencing the particular migration table for admins

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],


    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
],

Upvotes: 2

Stackoverfall
Stackoverfall

Reputation: 1202

Everything was fine I was just called old default user auth in controller which I was modified in old project and now I am installed new project and then move all of files except user.php default model

 $companyAuth = auth()->guard('user'); //called wrong default 
 $companyAuth = auth()->guard('employee'); //now working fine

Upvotes: 0

Related Questions