This is how I managed to impolement it
Logging a user in
// this is where I try to fetch user by two tables
if (! $user = $this->getUserByEmail($request->email)) {
return back()->withFlash('Email is not found.');
}
if (!Password::check($user, $request->password)) {
return back()->withFlash('Wrong pass.');
}
if ($user instanceOf RetailUser) {
auth()->shouldUse($retailUsersGuard = 'web_retail'); // change current guard
session()->put('auth_guard', $retailUsersGuard); // persist guard into session, to use it in consequent requests
}
auth()->login($user);
and middleware to change guard on each request
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Session;
class SetGuard
{
public function handle($request, Closure $next, $guard = null)
{
if (session()->has('auth_guard')) {
app('auth')->shouldUse(session('auth_guard'));
}
return $next($request);
}
}