tattali/presigned-url
Generate temporary signed URLs so clients can securely access private files for a limited time. Ideal for S3-compatible or local storage uploads and downloads without exposing credentials or making buckets public. Simple API for Laravel and plain PHP.
Architecture fit
assessment-pm.md) do not follow from this package. S3 direct-to-storage uploads require the AWS SDK / Storage::temporaryUrl and a presigned POST/PUT flow.URL::signedRoute, URL::temporarySignedRoute, and the ValidateSignature middleware already provide this in core. The package's incremental value is limited to ergonomics — facade, helper, route macro, config-driven defaults, and a possibly stricter validation path. This reframes the build-vs-buy decision: the realistic alternative is "use the framework," not "hand-roll HMAC signing."Integration feasibility
composer require, publish config, register a middleware alias, wrap target routes. No schema changes, no infrastructure changes, no credential provisioning. A competent Laravel developer can produce a working pilot in under a day.Technical risk
APP_KEY, rotating it invalidates every outstanding link — an operational incident with a security-triggered cause.Key questions
URL::temporarySignedRoute + ValidateSignature that justifies a third-party security dependency?signed alias?Stack fit
composer.json constraints cover our current Laravel and PHP versions.Migration path
temporarySignedRoute calls. Both are cheap. There is no data migration, no dual-write period, no cutover risk.1.0.1 exact, not ^1.0) with the lockfile committed and vendor diff reviewed on any bump.Compatibility
Sequencing
URL::temporarySignedRoute. Produce a written build-vs-adopt recommendation.Maintenance
Support
Scaling
Failure modes
APP_KEY (or signing key) rotation → all outstanding links invalid simultaneously. Symptom: mass user-facing link failures correlated with an unrelated security change. Mitigate with a documented rotation runbook and short TTLs.Ramp-up
composer require in a feature branch.How can I help you explore Laravel packages today?