jwtService = $jwtService; } /** * Returns a url where files can be uploaded to. */ public function __invoke(UploadFileRequest $request, Server $server): JsonResponse { return new JsonResponse([ 'object' => 'signed_url', 'attributes' => [ 'url' => $this->getUploadUrl($server, $request->user()), ], ]); } /** * Returns a url where files can be uploaded to. */ protected function getUploadUrl(Server $server, User $user): string { $token = $this->jwtService ->setExpiresAt(CarbonImmutable::now()->addMinutes(15)->toDateTimeImmutable()) ->setClaims([ 'server_uuid' => $server->uuid, ]) ->handle($server->node, $user->id . $server->uuid); return sprintf( '%s/upload/file?token=%s', $server->node->getConnectionAddress(), $token->toString() ); } }