40 lines
1.3 KiB
PHP
40 lines
1.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Pterodactyl\Http\Middleware\Api\Client;
|
||
|
|
||
|
use Closure;
|
||
|
use Illuminate\Container\Container;
|
||
|
use Pterodactyl\Http\Middleware\Api\ApiSubstituteBindings;
|
||
|
use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
|
||
|
use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
|
||
|
|
||
|
class SubstituteClientApiBindings extends ApiSubstituteBindings
|
||
|
{
|
||
|
/**
|
||
|
* Perform substitution of route parameters without triggering
|
||
|
* a 404 error if a model is not found.
|
||
|
*
|
||
|
* @param \Illuminate\Http\Request $request
|
||
|
* @param \Closure $next
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function handle($request, Closure $next)
|
||
|
{
|
||
|
// Override default behavior of the model binding to use a specific table
|
||
|
// column rather than the default 'id'.
|
||
|
$this->router->bind('server', function ($value) use ($request) {
|
||
|
try {
|
||
|
return Container::getInstance()->make(ServerRepositoryInterface::class)->findFirstWhere([
|
||
|
['uuidShort', '=', $value],
|
||
|
]);
|
||
|
} catch (RecordNotFoundException $ex) {
|
||
|
$request->attributes->set('is_missing_model', true);
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return parent::handle($request, $next);
|
||
|
}
|
||
|
}
|