Skip to content
Snippets Groups Projects
Browserverification.php 688 B
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Redis;

class Browserverification
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $redis = Redis::connection("central");

        $key = $request->route('id');
        if (!preg_match("/^[a-f0-9]{32}$/", $key)) {
            abort(404);
        }

        $answer = $redis->brpoplpush($key, $key, 3);
        
        if ($answer === null) {
            abort(404);
        }
        
        return $next($request);
    }
}