Simplify Glide image handling
This commit is contained in:
parent
273239f8ba
commit
463f622d0a
|
@ -2,12 +2,22 @@
|
|||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use League\Glide\Server;
|
||||
use Illuminate\Http\Request;
|
||||
use League\Glide\ServerFactory;
|
||||
use Illuminate\Contracts\Filesystem\Filesystem;
|
||||
use League\Glide\Responses\LaravelResponseFactory;
|
||||
|
||||
class ImagesController extends Controller
|
||||
{
|
||||
public function show(Server $glide)
|
||||
public function show(Filesystem $filesystem, Request $request, $path)
|
||||
{
|
||||
return $glide->fromRequest()->response();
|
||||
$server = ServerFactory::create([
|
||||
'response' => new LaravelResponseFactory($request),
|
||||
'source' => $filesystem->getDriver(),
|
||||
'cache' => $filesystem->getDriver(),
|
||||
'cache_path_prefix' => '.glide-cache',
|
||||
]);
|
||||
|
||||
return $server->getImageResponse($path, $request->all());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ use Illuminate\Support\Facades\App;
|
|||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Redirect;
|
||||
use Illuminate\Support\Facades\Request;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Inertia\Inertia;
|
||||
|
||||
|
@ -25,7 +26,7 @@ class UsersController extends Controller
|
|||
'name' => $user->name,
|
||||
'email' => $user->email,
|
||||
'owner' => $user->owner,
|
||||
'photo' => $user->photoUrl(['w' => 40, 'h' => 40, 'fit' => 'crop']),
|
||||
'photo' => $user->photo_path ? URL::route('image', ['path' => $user->photo_path, 'w' => 40, 'h' => 40, 'fit' => 'crop']) : null,
|
||||
'deleted_at' => $user->deleted_at,
|
||||
]),
|
||||
]);
|
||||
|
@ -68,7 +69,7 @@ class UsersController extends Controller
|
|||
'last_name' => $user->last_name,
|
||||
'email' => $user->email,
|
||||
'owner' => $user->owner,
|
||||
'photo' => $user->photoUrl(['w' => 60, 'h' => 60, 'fit' => 'crop']),
|
||||
'photo' => $user->photo_path ? URL::route('image', ['path' => $user->photo_path, 'w' => 60, 'h' => 60, 'fit' => 'crop']) : null,
|
||||
'deleted_at' => $user->deleted_at,
|
||||
],
|
||||
]);
|
||||
|
|
|
@ -6,10 +6,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use League\Glide\Server;
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
|
@ -37,13 +34,6 @@ class User extends Authenticatable
|
|||
$this->attributes['password'] = Hash::needsRehash($password) ? Hash::make($password) : $password;
|
||||
}
|
||||
|
||||
public function photoUrl(array $attributes)
|
||||
{
|
||||
if ($this->photo_path) {
|
||||
return URL::to(App::make(Server::class)->fromPath($this->photo_path, $attributes));
|
||||
}
|
||||
}
|
||||
|
||||
public function isDemoUser()
|
||||
{
|
||||
return $this->email === 'johndoe@example.com';
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use League\Glide\Server;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
@ -17,15 +15,6 @@ class AppServiceProvider extends ServiceProvider
|
|||
public function register()
|
||||
{
|
||||
Model::unguard();
|
||||
|
||||
$this->app->bind(Server::class, function ($app) {
|
||||
return Server::create([
|
||||
'source' => Storage::getDriver(),
|
||||
'cache' => Storage::getDriver(),
|
||||
'cache_folder' => '.glide-cache',
|
||||
'base_url' => 'img',
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"laravel/framework": "^8.40",
|
||||
"laravel/tinker": "^2.5",
|
||||
"laravel/ui": "^2.0",
|
||||
"league/glide": "2.0.x-dev",
|
||||
"league/glide-laravel": "^1.0",
|
||||
"tightenco/ziggy": "^0.8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "a0544aeae8ce3b61fcf2909c0fae1722",
|
||||
"content-hash": "3b6210b9a1903f968a3c773d9a60aad9",
|
||||
"packages": [
|
||||
{
|
||||
"name": "asm89/stack-cors",
|
||||
|
@ -1556,29 +1556,28 @@
|
|||
},
|
||||
{
|
||||
"name": "league/glide",
|
||||
"version": "2.0.x-dev",
|
||||
"version": "1.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/glide.git",
|
||||
"reference": "e84ef237030817ab6034b2c17173dd3352a971e1"
|
||||
"reference": "ae5e26700573cb678919d28e425a8b87bc71c546"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/glide/zipball/e84ef237030817ab6034b2c17173dd3352a971e1",
|
||||
"reference": "e84ef237030817ab6034b2c17173dd3352a971e1",
|
||||
"url": "https://api.github.com/repos/thephpleague/glide/zipball/ae5e26700573cb678919d28e425a8b87bc71c546",
|
||||
"reference": "ae5e26700573cb678919d28e425a8b87bc71c546",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/psr7": "^1.1",
|
||||
"intervention/image": "^2.1",
|
||||
"intervention/image": "^2.4",
|
||||
"league/flysystem": "^1.0",
|
||||
"php": "^5.4 | ^7.0",
|
||||
"symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0"
|
||||
"php": "^7.2|^8.0",
|
||||
"psr/http-message": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "~0.9",
|
||||
"phpunit/php-token-stream": "^1.4",
|
||||
"phpunit/phpunit": "~4.4"
|
||||
"mockery/mockery": "^1.3.3",
|
||||
"phpunit/php-token-stream": "^3.1|^4.0",
|
||||
"phpunit/phpunit": "^8.5|^9.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
|
@ -1616,9 +1615,102 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/glide/issues",
|
||||
"source": "https://github.com/thephpleague/glide/tree/2.0"
|
||||
"source": "https://github.com/thephpleague/glide/tree/1.7.0"
|
||||
},
|
||||
"time": "2020-03-06T21:33:29+00:00"
|
||||
"time": "2020-11-05T17:34:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/glide-laravel",
|
||||
"version": "1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/glide-laravel.git",
|
||||
"reference": "b525e33e32940f3b047d6ca357131aba0e973e72"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/glide-laravel/zipball/b525e33e32940f3b047d6ca357131aba0e973e72",
|
||||
"reference": "b525e33e32940f3b047d6ca357131aba0e973e72",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"league/glide-symfony": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^0.9",
|
||||
"phpunit/phpunit": "^4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\Glide\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jonathan Reinink",
|
||||
"email": "jonathan@reinink.ca",
|
||||
"homepage": "http://reinink.ca"
|
||||
}
|
||||
],
|
||||
"description": "Glide adapter for Laravel",
|
||||
"homepage": "http://glide.thephpleague.com",
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/glide-laravel/issues",
|
||||
"source": "https://github.com/thephpleague/glide-laravel/tree/master"
|
||||
},
|
||||
"time": "2015-12-26T15:40:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/glide-symfony",
|
||||
"version": "1.0.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/glide-symfony.git",
|
||||
"reference": "8162ec0e0b070e53e88a840a67208ec4baec9291"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/glide-symfony/zipball/8162ec0e0b070e53e88a840a67208ec4baec9291",
|
||||
"reference": "8162ec0e0b070e53e88a840a67208ec4baec9291",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"league/glide": "^1.0",
|
||||
"symfony/http-foundation": "^2.3|^3.0|^4.0|^5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^0.9",
|
||||
"phpunit/phpunit": "^4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\Glide\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jonathan Reinink",
|
||||
"email": "jonathan@reinink.ca",
|
||||
"homepage": "http://reinink.ca"
|
||||
}
|
||||
],
|
||||
"description": "Glide adapter for Symfony",
|
||||
"homepage": "http://glide.thephpleague.com",
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/glide-symfony/issues",
|
||||
"source": "https://github.com/thephpleague/glide-symfony/tree/master"
|
||||
},
|
||||
"time": "2020-03-05T12:38:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/mime-type-detection",
|
||||
|
@ -7652,9 +7744,7 @@
|
|||
],
|
||||
"aliases": [],
|
||||
"minimum-stability": "dev",
|
||||
"stability-flags": {
|
||||
"league/glide": 20
|
||||
},
|
||||
"stability-flags": [],
|
||||
"prefer-stable": true,
|
||||
"prefer-lowest": false,
|
||||
"platform": {
|
||||
|
|
|
@ -137,4 +137,6 @@ Route::get('reports', [ReportsController::class, 'index'])
|
|||
|
||||
// Images
|
||||
|
||||
Route::get('/img/{path}', [ImagesController::class, 'show'])->where('path', '.*');
|
||||
Route::get('/img/{path}', [ImagesController::class, 'show'])
|
||||
->where('path', '.*')
|
||||
->name('image');
|
||||
|
|
Loading…
Reference in New Issue