Здравствуйте. Я пишу api-аутентификацию на основе laravel passport для мобильного приложения. У пользователей нет пароля. Они входят в систему по смс-коду. Сначала они вводят телефон -> им отправляется смс-код -> и затем идёт запрос для входа в систему (с смс-кодом в теле запроса) на вот такой метод контроллера:
public function login(Request $request, User $user)
{
if ($request->get('phone_code') === $user->phone_code) {
Auth::login($user, true);
$token = $user->createToken($user->phone);
return response()->json(["user" => auth()->user(), 'token_type' => 'Bearer', 'token' => $token->accessToken], 200);
} else {
return response()->json(["message" => "Wrong code"], 403);
}
}
Здесь возвращается access-token, который будет отправляться в заголовках при каждом запросе на сервер. Этот токен у нас в системе действует ровно один день. Через день он станет недействительным и пользователю придётся снова запрашивать код по смс. Мне бы этого не хотелось. Я бы хотела при его первом входе в систему помимо access-токена генерировать и отдавать ему refresh-токен, который действует две недели. И на следующий день, когда просрочится access-токен пользователя не разлогинет, а приложение отправит запрос с использованием refresh-токена, чтобы получить новые токены и он останется в системе залогиненным и будет уже обращаться к серверу с новеньким access-токеном. Собственно вопрос- как сгенерировать и access-токен и refresh-токен, если у пользователя нет пароля. Подскажите пожалуйста как мне добиться желаемого?
И правильно ли я размышляю? По такому ведь сценарию мобильные приложения и spa-приложения позволяют пользователям оставаться в системе и не вводить каждый раз пароль по истечению access токена?