вы должны добавить три таблицы в config / auth. php в охранниках и провайдерах, чтобы функция auth () распознала каждую таблицу: примечание, чтобы заменить его вашими моделями name
'guards' => [
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'salesperson' => [
'driver' => 'session',
'provider' => 'salesperson',
],
'manager' => [
'driver' => 'session',
'provider' => 'manager',
],
],
'providers' => [
'admin' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
],
'salesperson' => [
'driver' => 'eloquent',
'model' => App\Salesperson::class,
],
'manager' => [
'driver' => 'eloquent',
'model' => App\Manager::class,
],
],
После этого вы должны создать промежуточное ПО для каждого из них, чтобы контролировать вход в систему, поэтому вы должны добавить его в промежуточное ПО $ routemiddleware , в kernel. php:
'admin' => \App\Http\Middleware\AuthenticateAdmin::class,
'salesperson' => \App\Http\Middleware\AuthenticateSalesperson::class,
'manager' => \App\Http\Middleware\AuthenticateManager::class,
создайте контроллер для каждого:
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Hash;
use App\Admin;
class LoginController extends Controller
{
use AuthenticatesUsers;
public function __construct()
{
$this->middleware('guest');
}
public function login(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required',
]);
if (auth()->guard('admin')->attempt(['email' => $request->input('email'), 'password' => $request->input('password')])) {
return redirect('*your route*');
} else {
dd('your username and password are wrong.');
}
}
public function getLogin()
{
return view('*the login form*');
}
}
и в вашем Admin. php
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class Relative extends Authenticatable
{
use Notifiable;
protected $guarded = [];
protected $hidden = [
'password'
];
public function getAuthPassword()
{
return $this->password;
}
}
повторите последние два шага для каждого из них. Если вам нужна дополнительная информация: https://laracasts.com/discuss/channels/laravel/multi-auth-login-with-single-table-user-using-middleware-in-laravel