PHP code example of bekwoh / laravel-media-secure

1. Go to this page and download the library: Download bekwoh/laravel-media-secure library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

bekwoh / laravel-media-secure example snippets


use Spatie\MediaLibrary\MediaCollections\Models\Media;

// Get view URL: /media/view/{uuid}
$viewUrl = get_view_media_url($media);

// Get download URL: /media/download/{uuid}
$downloadUrl = get_download_media_url($media);

// Get stream URL: /media/stream/{uuid}
$streamUrl = get_stream_media_url($media);

// Generate signed URL (default expiration from config)
$signedUrl = get_signed_view_url($media);

// Generate signed URL with custom expiration (in minutes)
$signedUrl = get_signed_download_url($media, 30); // Expires in 30 minutes

// Generate signed URL with DateTime expiration
$signedUrl = get_signed_stream_url($media, now()->addHours(24));

// Using the Facade
use CleaniqueCoders\LaravelMediaSecure\Facades\LaravelMediaSecure;

$url = LaravelMediaSecure::signedViewUrl($media);
$url = LaravelMediaSecure::signedDownloadUrl($media, 60);

namespace App\Policies;

use App\Models\Document;
use App\Models\User;

class DocumentPolicy
{
    public function view(User $user, Document $document): bool
    {
        return $user->id === $document->user_id;
    }

    public function stream(User $user, Document $document): bool
    {
        return $user->id === $document->user_id;
    }

    public function download(User $user, Document $document): bool
    {
        return $user->id === $document->user_id;
    }
}

// In AuthServiceProvider
protected $policies = [
    \App\Models\Document::class => \App\Policies\DocumentPolicy::class,
];

// config/laravel-media-secure.php

'signed' => [
    'enabled' => env('LARAVEL_MEDIA_SECURE_SIGNED_ENABLED', true),
    'prefix' => 'media-signed',
    'route_name' => 'media.signed',
    'expiration' => env('LARAVEL_MEDIA_SECURE_SIGNED_EXPIRATION', 60), // minutes
],
bash
php artisan vendor:publish --tag="media-secure-config"