Я работаю над Laravel проектом API, в котором в таблице пользователей есть столбец типа со значением, равным студенту или компании.
В целях аутентификации пользователей обоих типов и ограничения доступа Для определенных маршрутов я установил два сторожа с одним и тем же драйвером (JWT) и поставщиком (Пользователи).
'company' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
'student' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
В методе входа и регистрации моего контроллера я получаю доступ к значению типа пользователя из формы, где пользователь выбирает свою роль (студент или компания).
public function register(){
$user= $this->create(request()->all());
$token=auth(request('type'))->login($user);
return $this->respondWithToken($token);
}
Цель доступа к типу пользователя состоит в том, чтобы передать это значение методу auth (), который, в свою очередь, использует его для входа в систему пользователя через этот указанный c guard.
Проблема в том, что я должен использовать этот запрос (тип) в каждом методе контроллера везде, где необходима аутентификация, и необходимо использовать методы, связанные с auth (). например, метод jwt responsewithtoken ()
protected function respondWithToken($token)
{
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth(request('type'))->factory()->getTTL() * 60
]);
}
Что я хочу: мне нужен механизм для динамической установки защиты после успешного входа в систему, и я должен иметь возможность использовать метод auth (), не пропуская никаких Аргумент к этому.
// shoulduseguarddynamically(request('type'));
PS: Пожалуйста, проверьте также, что использование охранников таким образом, когда у меня одна таблица с многопользовательскими пользователями, является правильным подходом?