Laravel - проблема с перенаправлением за другое лицо - PullRequest
0 голосов
/ 03 августа 2020

В настоящее время у меня есть панель администратора, которая позволяет администраторам входить в систему через учетные записи других пользователей и просматривать свои учетные записи, как пользователь, который перенаправляет на субдомен.

так что я должен быть на URL http://example.local/admin/users, который является список пользователей, затем, когда вы входите в систему как конкретный пользователь по этому маршруту.

Войдите в систему как пользователь

    Route::get('/users/{id}/login_as', function ($id) {

    $user = App\User::withTrashed()->find($id);

    $user->changelogs()->create([
        'action' => 'Admin logged in as user'
    ]);

    session()->put(['og_user' => auth::user()]);

    \Auth::logout();
    \Auth::loginUsingId($id);

    return redirect('/dashboard');
});

Это будет перенаправлять на страницу пользователей на как они видят платформу, но это изменится на поддомен http://subdomain.example.local/.......

В настоящее время у меня есть заголовок, который появляется после входа в систему и содержит кнопку return to admin, которая затем выводит вас из этого пользователя и возвращает вы вернетесь на страницу администратора, на которой вы были изначально.

Вернуться к кнопке администратора

@if(session()->has('og_user') && auth::user())
    <div class="signed_in">
        <div class="container inner">
            <h5 class="text-light mb-0">
                Logged-in as {{ auth::user()->name }}
            </h5>

            <a href="/admin/{{session()->get('og_user')['id']}}/log_in_as" class="btn btn-secondary ml-auto">
                Return to admin
            </a>
        </div>
    </div>
@endif

Войти как admin

    Route::get('/admin/{id}/log_in_as', function ($id) {

    session()->forget('og_user');

    \Auth::logout();
    \Auth::loginUsingId($id);

    return back();
});

проблема, с которой я столкнулся, заключается в том, что однажды я вошел в систему под другим пользователем на поддомене, а затем я возвращаюсь к администратору, он направляет меня обратно на страницу администратора, но под поддоменом все еще http://subdomain.example.local/dashboard с темой пользовательского интерфейса домена, когда я хочу, чтобы * 1 032 * назад к example.local/dashboard

Может ли кто-нибудь указать мне в правильном направлении, как это сделать?

1 Ответ

0 голосов
/ 03 августа 2020

Вы используете

return back();

Эта функция вернет вас на страницу previous: в вашем случае предыдущая страница находится в subdomain. Таким образом, вы не хотите go назад.

Вместо этого используйте прямую ссылку на страницу, которую вы хотите посетить:

return redirect('your desired route');
...