Вы должны указать Auth
использовать разные Guard
для аутентификации во время Employer
входа в систему. Чтобы определить охранников для Employer
, измените это в вашем config/auth.php
.
Найдите раздел guards
в auth.php
и добавьте новую охрану
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'employer' => [
'driver' => 'session',
'provider' => 'employers',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
Теперь в том же файле есть раздел providers
. Вам нужно добавить employers
провайдера
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
//Employer provider
'employers' => [
'driver' => 'eloquent',
'model' => App\Employer::class,
],
],
Создание пользовательского промежуточного программного обеспечения Auth
namespace App\Http\Middleware;
use Closure;
use Auth;
class AuthenticateEmployer
{
public function handle($request, Closure $next)
{
//If request does not comes from logged in employer
//then he shall be redirected to employer Login page
if (!Auth::guard('employer')->check()) {
return redirect('/signInEmployer');
}
return $next($request);
}
}
Зарегистрируйте пользовательское промежуточное ПО для авторизации в Kernal.php в routeMiddleware
'employerAuth' => \App\Http\Middleware\AuthenticateEmployer::class,
Теперь мы настроили наше пользовательское guard
и пользовательское промежуточное ПО employerAuth
EmployerController
class EmployerController extends Controller
{
//either you have to define this or you can use `Auth::guard('employer')->attempt($credentials)` in login
protected function guard()
{
return Auth::guard('employer');
}
public function signInEmployer(Request $request)
{
if(Auth::attempt(['email'=>$request['email'],
'password'=>$request['password']]))
{
return redirect()->route('employersDashboard');
}
return redirect()->back();
}
}
Для всех маршрутов, защищенных Employer
auth, вам нужно либо добавить промежуточное программное обеспечение employerAuth
в маршруты, либо добавить employerAuth
в каждый контроллер construct
, например,
public function __construct()
{
$this->middleware('employerAuth');
}
Надеюсь, это поможет вам. Для деталей вы можете проверить это https://laravel.com/docs/5.6/authentication#authenticating-users
Проверьте этот хороший пример приложения для мульти-аутентификации https://github.com/yskoverride/Various2.0/tree/master/app