Промежуточное ПО Laravel и уникальные данные - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть промежуточное ПО, которое выходит из системы заблокированного пользователя и перенаправляет его на определенную страницу, где они читают о причине, по которой его забанят, но проблема в том, что URL может быть установлен для любого идентификатора пользователя и возвращать столько, сколько пользователи загружают его.

Пример site.co/banned/55 затем вы просто меняете 55 на идентификатор другого пользователя, и он загружается снова и снова.

Что я хочу

Я хочу загрузить эту возвращающую страницу с помощью одноразового токена , и если они попытаются перезагрузить эту страницу или поделиться ссылкой и т. Д., Они не смогут. Если они не попытаются войти и с новым токеном, см. Эту страницу.

код

middleware

class NotBlocked
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::check())
        {
            $user = Auth::user();

            if(count($user->bans) > 0){

                foreach($user->bans as $ban){
                    $expires = $ban->blocked_on;
                }

                if ($expires >= Carbon::now())
                {
                    Auth::logout();
                    return redirect()->route('banned', $user->id)->with('warning', 'Your session has expired because your account is deactivated.');
                }
            }

        }
        return $next($request);
    }
}

route

Route::get('banned/{id}', 'Front\HomeController@banned')->name('banned');

route groups

Route::middleware('notBlocked')->group(function () {
//all routes here
});

kernel

protected $routeMiddleware = [
        // middlewares
        'notBlocked' => \App\Http\Middleware\NotBlocked::class,
];

PS

Я хочу заменить {id} часть в моем маршруте и return redirect()->route('banned', $user->id) идентификатор пользователя в промежуточном программном обеспечении токеном, который работает только один раз.

Есть идеи?

...