47 lines
1.4 KiB
PHP
47 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Content;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use Illuminate\Support\Str;
|
|
use Laravel\Vapor\Http\Controllers\SignedStorageUrlController as Controller;
|
|
use Illuminate\Http\Request;
|
|
|
|
class SignedStorageUrlController extends Controller
|
|
{
|
|
/**
|
|
* Create a new signed URL.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$this->ensureEnvironmentVariablesAreAvailable($request);
|
|
$bucket = $request->input('bucket') ?: $_ENV['AWS_BUCKET'];
|
|
|
|
$client = $this->storageClient();
|
|
|
|
$uuid = (string) Str::uuid();
|
|
|
|
$expiresAfter = config('vapor.signed_storage_url_expires_after', 5);
|
|
|
|
$signedRequest = $client->createPresignedRequest(
|
|
$this->createCommand($request, $client, $bucket, $key = ('tmp/'.$uuid)),
|
|
sprintf('+%s minutes', $expiresAfter)
|
|
);
|
|
|
|
$uri = $signedRequest->getUri();
|
|
|
|
return response()->json([
|
|
'uuid' => $uuid,
|
|
'bucket' => $bucket,
|
|
'key' => $key,
|
|
'url' => $uri->getScheme().'://'.$uri->getAuthority().$uri->getPath().'?'.$uri->getQuery(),
|
|
'headers' => $this->headers($request, $signedRequest),
|
|
], 201);
|
|
}
|
|
}
|