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!']);
}

В просторах Интернета не могу найти ни одного примера кода.

Кто сталкивался с такой задачей? Кто может подсказать по какому направлению идти ?


Ответы (0 шт):