/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, $obscuredParameter = 'id') { $hashids = new Hashids(config('obscure.salt'), config('obscure.length'), config('obscure.alphabet')); // decode form request hashs if ($request->request->has($obscuredParameter)) { $request->request->add([$obscuredParameter => $hashids->decode($request->request->get($obscuredParameter))[0]]); } // decode route hashs if ($this->route->parameter($obscuredParameter)) { $this->route->setParameter($obscuredParameter, $hashids->decode($this->route->parameter($obscuredParameter))[0]); } return $next($request); }
/** * Substitute the implicit Eloquent model bindings for the route. * * @param \Illuminate\Routing\Route $route * @return void */ public function substituteImplicitBindings($route) { $parameters = $route->parameters(); foreach ($route->signatureParameters(Model::class) as $parameter) { $class = $parameter->getClass(); if (array_key_exists($parameter->name, $parameters) && !$route->getParameter($parameter->name) instanceof Model) { $method = $parameter->isDefaultValueAvailable() ? 'first' : 'firstOrFail'; $model = $class->newInstance(); $route->setParameter($parameter->name, $model->where($model->getRouteKeyName(), $parameters[$parameter->name])->{$method}()); } } }
/** * Substitute the route bindings onto the route. * * @param \Illuminate\Routing\Route $route * @return \Illuminate\Routing\Route */ protected function substituteBindings($route) { foreach ($route->parameters() as $key => $value) { if (isset($this->binders[$key])) { $route->setParameter($key, $this->performBinding($key, $value, $route)); } } return $route; }
/** * Substitute the implicit Eloquent model bindings for the route. * * @param \Illuminate\Routing\Route $route * @return void */ protected function substituteImplicitBindings($route) { $parameters = $route->parameters(); foreach ($route->signatureParameters(Model::class) as $parameter) { $class = $parameter->getClass(); if (array_key_exists($parameter->name, $parameters)) { $method = $parameter->isDefaultValueAvailable() ? 'find' : 'findOrFail'; $route->setParameter($parameter->name, $class->newInstance()->{$method}($parameters[$parameter->name])); } } }