Looking to hire Laravel developers? Try LaraJobs

laravel-sharelink maintained by grazulex

Description
Generate, manage, and secure temporary share links for files, routes, and model previews.
Last update
2025/11/04 21:00 (dev-main)
License
Downloads
1 022

Comments
comments powered by Disqus

Laravel ShareLink

Generate, manage, and secure temporary share links for files, routes, and models

A powerful Laravel package for creating secure, time-limited sharing capabilities with comprehensive audit trails

Latest Version Total Downloads License PHP Version Laravel Version Tests Code Style


🚀 Overview

Laravel ShareLink is a comprehensive package for generating secure, time-limited sharing capabilities in your Laravel applications. Perfect for sharing files, creating temporary access to routes, or providing time-limited previews of model data with complete audit trails and advanced security features.

✨ Key Features

  • 🔗 Multiple Resource Types - Share files, routes, and model previews seamlessly
  • Time-Limited Access - Set expiration dates and usage limits
  • 🔒 Password Protection - Optional password gates for enhanced security
  • 🚫 Rate Limiting - Per-token rate limiting to prevent abuse
  • 🌐 IP Filtering - Allow/deny specific IP addresses or CIDR ranges
  • 🔏 Signed URLs - Optional Laravel signed route integration
  • 🔥 Burn After Reading - One-time access links that self-destruct
  • 📊 Comprehensive Auditing - Track access patterns, IPs, and timestamps
  • 🛡️ Advanced Security - Password throttling, brute force protection
  • 🎯 Flexible Delivery - Support for X-Sendfile, X-Accel-Redirect, and streaming
  • 📋 Management API - Revoke and extend links programmatically
  • 🎨 CLI Commands - Full Artisan command support
  • 📈 Observability - Built-in logging and metrics integration
  • 🧪 Test-Friendly - Comprehensive test coverage with easy mocking

📦 Installation

Install the package via Composer:

composer require grazulex/laravel-sharelink

Publish and run the migrations:

php artisan vendor:publish --tag="sharelink-migrations"
php artisan migrate

Optionally, publish the configuration file:

php artisan vendor:publish --tag="sharelink-config"

💡 Auto-Discovery: The service provider will be automatically registered thanks to Laravel's package auto-discovery.

⚡ Quick Start

🚀 Basic Usage

use Grazulex\ShareLink\Facades\ShareLink;

// Share a file with expiration
$link = ShareLink::create('/path/to/document.pdf')
    ->expiresIn(60) // 60 minutes
    ->maxClicks(5)
    ->withPassword('secret123')
    ->generate();

echo $link->url; // https://yourapp.com/share/abc123xyz

📁 File Sharing

// Share a local file
$link = ShareLink::create('/storage/documents/report.pdf')
    ->expiresIn(1440) // 24 hours
    ->maxClicks(10)
    ->generate();

// Share via Laravel Storage
$link = ShareLink::create('s3://bucket/private/document.pdf')
    ->expiresIn(60)
    ->withPassword('secure')
    ->generate();

🌐 Route Sharing

// Share a named route with parameters
$link = ShareLink::create([
    'type' => 'route',
    'route' => 'user.profile',
    'parameters' => ['user' => 123]
])
->expiresIn(120)
->generate();

📊 Model Preview

// Share a model preview (JSON representation)
$user = User::find(1);
$link = ShareLink::create([
    'type' => 'model',
    'class' => User::class,
    'id' => $user->id
])
->expiresIn(30)
->generate();

🔥 Advanced Security Features

// Burn-after-reading link with IP restrictions
$link = ShareLink::create('/secure/document.pdf')
    ->expiresIn(60)
    ->burnAfterReading() // Self-destructs after first access
    ->metadata([
        'allowed_ips' => ['192.168.1.0/24', '10.0.0.1'],
        'denied_ips' => ['192.168.1.100']
    ])
    ->generate();

// Signed URL for extra security
$signedUrl = ShareLink::signedUrl($link, now()->addHour());

🔧 Requirements

  • PHP 8.3+
  • Laravel 11.0+ | 12.0+

📚 Complete Documentation

For comprehensive documentation, examples, and advanced usage guides, visit our Wiki:

📖 👉 Laravel ShareLink Wiki

The wiki includes:

🎨 Artisan Commands

Laravel ShareLink includes powerful CLI commands for managing your share links:

# Create a new share link
php artisan sharelink:create /path/to/file --expires=60 --max-clicks=5

# List all share links
php artisan sharelink:list --active --expired

# Revoke a specific link
php artisan sharelink:revoke abc123xyz

# Clean up expired links
php artisan sharelink:prune --days=7

🔧 Configuration

The package comes with sensible defaults, but you can customize everything:

// config/sharelink.php
return [
    'route' => [
        'prefix' => 'share',
        'middleware' => ['web'],
    ],
    
    'security' => [
        'signed_routes' => [
            'enabled' => true,
            'required' => false,
        ],
        'rate_limiting' => [
            'enabled' => true,
            'max_attempts' => 10,
        ],
        'password_throttling' => [
            'enabled' => true,
            'max_attempts' => 5,
        ],
    ],
    
    'delivery' => [
        'x_sendfile' => false,
        'x_accel_redirect' => false,
    ],
];

🧪 Testing

composer test

🤝 Contributing

Please see CONTRIBUTING.md for details.

🔒 Security

If you discover any security-related issues, please email jms@grazulex.be instead of using the issue tracker.

📝 Changelog

Please see the Wiki Changelog for more information on what has changed recently.

📄 License

The MIT License (MIT). Please see License File for more information.

👥 Credits

💬 Support



💼 Need Custom Laravel Solutions?

Laravel ShareLink is maintained by Jean-Marc Strauven, creator of 17+ Laravel packages.

🚀 I Can Help With:

🔐 Secure File Sharing & Access Control

  • Custom file management systems
  • Advanced permission systems
  • Temporary access solutions
  • Integration with cloud storage (S3, Azure, etc.)

📦 Custom Laravel Package Development

  • Build tailored packages for your specific needs
  • Internal tools for your team
  • Integration with third-party services
  • €5,000-€10,000 depending on complexity

🏗️ Complete Laravel Applications

  • SaaS platforms
  • Document management systems
  • Collaboration tools
  • €8,000-€15,000 for MVP

👨‍💻 About Me:

  • 15+ years Laravel/PHP expertise
  • Ex-CTO at Delcampe (millions of users)
  • Chapter Lead at BNP Paribas Fortis
  • 6,000+ package downloads across 17+ packages

📬 Let's Talk:

💡 Building a Laravel SaaS or need custom features? I'd love to help bring your project to life.


⭐ Show Your Support

If Laravel ShareLink is useful for your project:

  • Give it a ⭐ on GitHub
  • Share it with other Laravel developers
  • Sponsor my work ❤️