Laravel Fortify Login As
Сайт на ՝Laravel 9՝. Работает как ՝Api՝.
На сайте есть админка. Для её работы нужен функционал что бы залогинится как другой пользователь (Login As.).
Функционал и роутинг логина делает Fortify. Они не видны в ротах.
Реализовано примерно так в FortifyServiceProvider.
public function boot()
{
Fortify::createUsersUsing(CreateNewUser::class);
Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
RateLimiter::for('login', function (Request $request) {
$email = (string) $request->email;
return Limit::perMinute(50)->by($email.$request->ip());
});
RateLimiter::for('two-factor', function (Request $request) {
return Limit::perMinute(5)->by($request->session()->get('login.id'));
});
}
Нужно примерно так сделать. Но после логина под другим пользователем, нужно еще и сохранить данные админа, что бы сделать возврат назад.
Пробую так. но в callback метод Fortify::authenticateUsing не заходит.
public function loginAsUser(LoginAsUserRequest $request): SuccessResource|ErrorResource
{
$validated = $request->validated();
session()->flush();
$user = $this->userRepository->find($validated['id']);
if($user) {
Fortify::authenticateUsing(function (Request $request, User $user) {
session()->put('admin_user_id', auth()->id());
Log::info(session()->get('admin_user_id'));
Auth::login($user);
});
return SuccessResource::make([
'data' => UserResource::make($user),
'message' => 'Success'
]);
}
return ErrorResource::make(['data' => [], 'message' => 'User Not Found!']);
}
В просторах Интернета не могу найти ни одного примера кода.
Кто сталкивался с такой задачей? Кто может подсказать по какому направлению идти ?
