Как отправить пользователя обратно на нужную страницу в Laravel - PullRequest
1 голос
/ 11 марта 2020

Я создаю приложение Laravel, где люди могут читать Книги.

У меня есть промежуточное ПО, которое контролирует доступ к Книге

public function handle($request, Closure $next)
{
     if (!(auth()->user()->isBasic() || auth()->user()->isCouple() || auth()->user()->isFamily())) {
        return redirect(route('subscription-plan'));
    }
    return $next($request);

 }

В web.php

Для просмотра книги и подробностей книги

Route::get('/books/{book}', [BooksController::class, 'show'])->name('book')->middleware('verified');;

Для чтения книги

Route::middleware(['basic'])->group(function (){

Route::get('/read/{book_id}', [BooksController::class, 'read'])->name('read');

});

У меня 3 роли

Basi c

пара

семья

подписчик

Если вошедший в систему пользователь является подписчиком, он перенаправляется на /subscription-plan при попытке доступа к Read ,

После подписки я хочу иметь возможность перенаправить после подписки на книгу, которую я пытался прочитать, прежде чем меня перенаправили на /subscription-plan.

Я изучал, как использовать intended

redirect($this->redirectPath());

redirect()->intended($this->redirectPath());

Но ни один из них не работает.

Вот мой окончательный код

    public function handleGatewayCallback()
    {

     ...

     redirect()->intended();

    }

1 Ответ

2 голосов
/ 11 марта 2020

Не уверен, что вы делаете на странице подписки.

Просто подумайте, что пользователь оставит приложение завершить платеж внешне "PayPal", и обработчик платежей перенаправит пользователя обратно на ваш система на вашем резервном URL, в случае успеха или нет.

Если это ваш случай, я не думаю, что intended будет работать для вас ..

Я предлагаю использовать сеанса и сохраните URL-адрес, по которому вы хотите вернуть пользователя после того, как он завершил платеж, на странице подписки.

Пример:

Сохранить ключ сеанса:

$request->session()->put('url_on_success', '/url-on-success');

Получите сохраненный сеанс:

$url = $request->session()->get('url_on_success');

Проверьте: https://laravel.com/docs/6.x/session, чтобы узнать, как использовать сеансы на Laravel.

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