mirror of
https://github.com/wintercms/winter.git
synced 2024-06-28 05:33:29 +02:00
Improve support for protected files on S3 (#4390)
Credit to @fansaien. S3 supports generating temporaryUrls to files that don't exist yet so this adds a check to make sure temp URLs are only generated for valid files.
This commit is contained in:
parent
ba0da07c46
commit
b1b9141dcc
@ -77,11 +77,18 @@ class Files extends Controller
|
||||
if (empty($path)) {
|
||||
$path = $file->getDiskPath();
|
||||
}
|
||||
$expires = now()->addSeconds(Config::get('cms.storage.uploads.temporaryUrlTTL', 3600));
|
||||
|
||||
$url = Cache::remember('backend.file:' . $path, $expires, function () use ($disk, $path, $expires) {
|
||||
return $disk->temporaryUrl($path, $expires);
|
||||
});
|
||||
// Check to see if the URL has already been generated
|
||||
$pathKey = 'backend.file:' . $path;
|
||||
$url = Cache::get($pathKey);
|
||||
|
||||
// The AWS S3 storage drivers will return a valid temporary URL even if the file does not exist
|
||||
if (is_null($url) && $disk->exists($path)) {
|
||||
$expires = now()->addSeconds(Config::get('cms.storage.uploads.temporaryUrlTTL', 3600));
|
||||
$url = Cache::remember($pathKey, $expires, function () use ($disk, $path, $expires) {
|
||||
return $disk->temporaryUrl($path, $expires);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return $url;
|
||||
|
Loading…
x
Reference in New Issue
Block a user