Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Presigned Url Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Shipping time-limited access without building a sharing/permissions model. Expiring links for invoices, exports, contracts, reports, media previews, and guest review flows can go live behind a signed route instead of a full per-recipient ACL. For a PM this converts a "sharing feature" from a multi-sprint permissions project into a bounded, shippable increment.
  • Invitations, onboarding, and re-engagement links. Magic-link style invitations and signed deep links get tamper-proof expiry for free, which lets marketing/lifecycle features ship without exposing an endpoint that accepts arbitrary IDs.
  • Build vs. buy on URL signing. The realistic comparison is three-way: hand-rolled HMAC signing (security risk, needs review and test coverage), Laravel's native URL::temporarySignedRoute + signed middleware (already in the framework), or this package as a thin, configurable convenience layer (facade, helpers, centralized expiry/signing config, middleware registration). "Adopt" only wins if the package measurably reduces boilerplate or gives configurability native signing lacks — otherwise the honest decision is to stay on the framework and not add a dependency.
  • Security and compliance posture. Grants access without long-lived tokens or sharing credentials, and keeps sensitive files off public buckets. Useful for audit narratives around external document exchange and expiring access.
  • Roadmap sequencing. Defers investment in a real document-sharing or DAM layer until volume, revocation, or audit requirements justify it — while capping the cost of that deferral (see revocation caveat below).
  • Positioning/documentation risk as a decision input. The tagline ("S3-style presigned URLs for any storage backend") does not match the described capability (signed URLs for named routes). If we adopt, we own the internal explanation; if the mismatch persists, discoverability and future maintenance are a real cost.

When to Consider This Package

Consider adopting when:

  • You are on Laravel and the need is route-level signed URLs: expiring download/share/invite links validated before the controller.
  • You want expiry, signing behavior, and middleware centralized in config rather than repeated per call site, and the team is small enough that a facade/helper convention is genuinely useful.
  • The flows are low-stakes and short-lived (minutes to days), so that "no individual revocation" is acceptable.
  • You are willing to pin the version, review the source (it is small), and fork if needed.

Look elsewhere — or stay with the framework — when:

  • Laravel native signed URLs already cover it. This is the default answer for most teams; a 0-star, 0-dependent, single-maintainer package must clearly beat the built-in to justify supply-chain surface.
  • You actually need S3/storage presigning for direct browser uploads and downloads, bandwidth offload, or multipart uploads. Despite the tagline, the described feature set is route signing, not storage credential presigning — verify before anyone scopes a feature on it.
  • You need revocation, per-recipient permissions, access counts, or audit trails. Signature expiry is not revocation; invalidating a live link means rotating the signing key (which breaks every other outstanding link). Treat "revoke shared link" as out of scope and plan the key-rotation or ACL work explicitly.
  • You need one-time-use semantics (links that die after first access) — expiry alone does not deliver this.
  • You need authenticated identity on the link (who opened it) or non-Laravel services consuming the same links.
  • Maintenance risk tolerance is low — no dependents and a patch-only release history mean we should assume we are the primary user and budget accordingly.

Release note on v1.0.1: patch bump from 1.0.0; treat as backwards-compatible with no migration work. No roadmap or architecture impact. Confirm the diff before upgrading if we operate under change control.

How to Pitch It (Stakeholders)

For executives: We can ship expiring, tamper-proof links for sharing documents, downloads, and invitations using a small MIT-licensed Laravel utility rather than building and security-reviewing signing logic ourselves. Users get time-limited access without us creating accounts, roles, or a sharing permissions system for every external recipient, and we avoid long-lived tokens or public file buckets. It is a narrow, removable dependency, not a platform commitment — but it is also early-stage with a single maintainer, so we should frame the decision as "adopt with a pin and an exit plan," and check whether Laravel's built-in signed URLs already do the job before adding it.

For engineering: A lightweight wrapper for generating and validating signed URLs on named routes, with configurable expiry and signing behavior plus middleware that rejects tampered or expired links before the controller. Expect to own revocation (not supported — key rotation is the only lever), one-time-use semantics, access logging, and cleanup of abandoned flows. Two things to verify before committing: whether this genuinely adds value over URL::temporarySignedRoute and the signed middleware, and whether the "any storage backend" tagline implies capabilities it does not have. Given 0 stars, 0 dependents, and patch-only releases, pin the version and read the source.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin