Я пытаюсь создать мульти логин в laravel 5.7 и эта ошибка появилась, кто-нибудь может мне помочь? - PullRequest
0 голосов
/ 25 января 2019

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR) Аргумент 2, передаваемый в Illuminate \ Auth \ SessionGuard :: __ construct (), должен реализовывать интерфейс Illuminate \ Contracts \ Auth \ UserProvider, значение NULL которого вызывается в C: \ laragon \ www \ hotel \ vendor \ laravel \ framework \ src \ Illuminate \ Auth \ AuthManager.php в строке 123

<?php

namespace App\Http\Controllers\Auth;
use App\User;use App\Admin;use App\GestionnaireReceptionniste;use App\GestionnaireResto;use App\Http\Controllers\Controller;use Illuminate\Support\Facades\Hash;use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;use Illuminate\Http\Request;

class RegisterController extends Controller
{


    use RegistersUsers;

    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest');
        $this->middleware('guest:admin');
        $this->middleware('guest:gestionnairereceptionniste');
        $this->middleware('guest:gestionnaireresto');
    }

    public function showAdminRegisterForm()
    {
        return view('auth.register', ['url' => 'admin']);
    }

    public function showGestionnaireReceptionnisteRegisterForm()
    {
        return view('auth.register', ['url' => 'gestionnairereceptionniste']);
    }

    public function showGestionnaireRestoRegisterForm()
    {
        return view('auth.register', ['url' => 'gestionnairesto']);
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:6', 'confirmed'],
        ]);
    }


    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

    protected function createAdmin(Request $request)
    {
        $this->validator($request->all())->validate();
        $admin = Admin::create([
            'name' => $request['name'],
            'email' => $request['email'],
            'password' => Hash::make($request['password']),
        ]);
        return redirect()->intended('login/admin');
    }

    protected function createGestionnaireReceptionniste(Request $request)
    {
        $this->validator($request->all())->validate();
        $gestionnairereceptionniste = GestionnaireReceptionniste::create([
            'name' => $request['name'],
            'email' => $request['email'],
            'password' => Hash::make($request['password']),
        ]);
        return redirect()->intended('login/gestionnairereceptionniste');
    }

    protected function createGestionnaireResto(Request $request)
    {
        $this->validator($request->all())->validate();
        $gestionnaireresto =CreateGestionnaireResto::create([
            'name' => $request['name'],
            'email' => $request['email'],
            'password' => Hash::make($request['password']),
        ]);
        return redirect()->intended('login/admin');
    }
}

Модель:

<?php

Приложение пространства имен;

использовать Освещение \ Уведомления \ Уведомляемый; используйте Illuminate \ Foundation \ Auth \ User as Authenticatable;

класс Admin расширяет Authenticatable { использовать Уведомляемый;

protected $guard = 'admin';

protected $fillable = [
    'name', 'email', 'password',
];

protected $hidden = [
    'password', 'remember_token',
];

}

<?php

Приложение пространства имен;

использовать Освещение \ Уведомления \ Уведомляемый; используйте Illuminate \ Foundation \ Auth \ User as Authenticatable;

класс GestionnaireReceptionniste расширяет Authenticatable { использовать Уведомляемый;

protected $guard = 'gestionnairereceptionniste';

protected $fillable = [
    'name', 'email', 'password',
];

protected $hidden = [
    'password', 'remember_token',
];

}

<?php

Приложение namespace;

использовать Освещение \ Уведомления \ Уведомляемый; используйте Illuminate \ Foundation \ Auth \ User as Authenticatable;

класс GestionnaireResto расширяет Authenticatable { использовать Уведомляемый;

protected $guard = 'gestionnaireresto';

protected $fillable = [
    'name', 'email', 'password',
];

protected $hidden = [
    'password', 'remember_token',
];

}

охрана:

<?php

возврат [

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


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

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
    'gestionnairereceptionniste' => [
        'driver' => 'session',
        'provider' => 'gestionnaireceptionnistes',
    ],
    'gestionnaireresto' => [
        'driver' => 'session',
        'provider' => 'gestionnairerestos',
    ],
],



'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
    'gestionnairereceptionnistes' => [
        'driver' => 'eloquent',
        'model' => App\GestionnaireReceptionniste::class,
    ],
    'gestionnairerestos' => [
        'driver' => 'eloquent',
        'model' => App\GestionnaireResto::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
    ],



],

];

ReditectIfAuthenticated:

<?php

Пространство имен App \ Http \ Middleware;

использовать Закрытие; использовать Освещение \ Поддержка \ Фасады \ Auth;

класс RedirectIfAuthenticated {

public function handle($request, Closure $next, $guard = null)
{
    if ($guard == "admin" && Auth::guard($guard)->check()) {
        return redirect('/admin');
    }
    if ($guard == "gestionnairereceptionniste" && Auth::guard($guard)->check()) {
        return redirect('/gestionnairereceptionnister');
    }
    if ($guard == "gestionnairesto" && Auth::guard($guard)->check()) {
        return redirect('/gestionnairesto');
    }

    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }

    return $next($request);
}

}

1 Ответ

0 голосов
/ 29 января 2019

В вашем файле config/auth.php есть опечатка.

Это:

'gestionnairereceptionniste' => [
    'driver' => 'session',
    'provider' => 'gestionnaireceptionnistes', // <-- typo
],

должно быть:

'gestionnairereceptionniste' => [
    'driver' => 'session',
    'provider' => 'gestionnairereceptionnistes',
],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...