Path: blob/1.0-develop/app/Http/Controllers/Api/Client/Servers/FileUploadController.php
10280 views
<?php12namespace Pterodactyl\Http\Controllers\Api\Client\Servers;34use Carbon\CarbonImmutable;5use Pterodactyl\Models\User;6use Pterodactyl\Models\Server;7use Illuminate\Http\JsonResponse;8use Pterodactyl\Services\Nodes\NodeJWTService;9use Pterodactyl\Http\Controllers\Api\Client\ClientApiController;10use Pterodactyl\Http\Requests\Api\Client\Servers\Files\UploadFileRequest;1112class FileUploadController extends ClientApiController13{14/**15* FileUploadController constructor.16*/17public function __construct(18private NodeJWTService $jwtService,19) {20parent::__construct();21}2223/**24* Returns an url where files can be uploaded to.25*/26public function __invoke(UploadFileRequest $request, Server $server): JsonResponse27{28return new JsonResponse([29'object' => 'signed_url',30'attributes' => [31'url' => $this->getUploadUrl($server, $request->user()),32],33]);34}3536/**37* Returns an url where files can be uploaded to.38*/39protected function getUploadUrl(Server $server, User $user): string40{41$token = $this->jwtService42->setExpiresAt(CarbonImmutable::now()->addMinutes(15))43->setUser($user)44->setClaims(['server_uuid' => $server->uuid])45->handle($server->node, $user->id . $server->uuid);4647return sprintf(48'%s/upload/file?token=%s',49$server->node->getConnectionAddress(),50$token->toString()51);52}53}545556