<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
restruct / silverstripe-signed-asset-urls example snippets
use SilverStripe\Assets\File;
// Get a file and generate signed URL
$file = File::get()->byID(123);
$signedUrl = $file->SignedURL(); // Uses default TTL
// Custom TTL (2 hours)
$signedUrl = $file->SignedURL(7200);
// Session-bound URL (only works for current user's session)
$signedUrl = $file->SignedURL(3600, true);
// Using named policies (see Policies section below)
$signedUrl = $file->AutoURL('ss'); // 30s, session-bound
$signedUrl = $file->AutoURL('m'); // 1 hour, not session-bound
// Check if a file
// In your PageController or via extension
public function SignedURLCacheWindow(int $windowSeconds = 3600): string
{
return floor(time() / $windowSeconds);
}
// SignedUrlDBFileExtension::ires signed URL
// Check 1: CanViewType restrictions (ck 2: Versioned staging - unpublished files are protected
if ($file->hasExtension(Versioned::class) && !$file->isPublished()) {
return true; // Needs signed URL
}
return false; // Public file, returns normal URL instead