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);
}
}