diff --git a/app/Http/Controllers/ImagesController.php b/app/Http/Controllers/ImagesController.php index d3c7c8f..3473af3 100644 --- a/app/Http/Controllers/ImagesController.php +++ b/app/Http/Controllers/ImagesController.php @@ -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()); } } diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php index f5444bb..23e3b7a 100644 --- a/app/Http/Controllers/UsersController.php +++ b/app/Http/Controllers/UsersController.php @@ -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, ], ]); diff --git a/app/Models/User.php b/app/Models/User.php index 0ebde3e..1c6fc2d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -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'; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index de2f60d..7030500 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -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', - ]); - }); } /** diff --git a/composer.json b/composer.json index 8c69ac5..4f05e6e 100644 --- a/composer.json +++ b/composer.json @@ -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": { diff --git a/composer.lock b/composer.lock index d4e274d..4e49108 100644 --- a/composer.lock +++ b/composer.lock @@ -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": { diff --git a/routes/web.php b/routes/web.php index d47841d..714f491 100644 --- a/routes/web.php +++ b/routes/web.php @@ -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');