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