diff --git a/.idea/kuvia.iml b/.idea/kuvia.iml index a038694..81ecb19 100644 --- a/.idea/kuvia.iml +++ b/.idea/kuvia.iml @@ -32,6 +32,7 @@ + diff --git a/.idea/php.xml b/.idea/php.xml index 2f7eaf6..ebd36e7 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -114,6 +114,7 @@ + diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index b9e82cd..4b7f8f3 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -45,10 +45,15 @@ class AccountController extends BaseController $tenant->template = "default"; $tenant->owner = $user->id; $tenant->saveOrFail(); - return redirect("/login"); + + Auth::attempt(["username" => $user->username, "password" => $validated["password"]]); + return redirect("/d"); } public function loginView() { + if(Auth::check()) { + return redirect("/d"); + } return view("account.login"); } diff --git a/app/Jobs/ResizeImage-Backup.php b/app/Jobs/ResizeImage-Backup.php new file mode 100644 index 0000000..e7747c1 --- /dev/null +++ b/app/Jobs/ResizeImage-Backup.php @@ -0,0 +1,85 @@ +image_id = $image_id; + $this->size = $size; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $image = Image::query()->where("id", "=", $this->image_id)->firstOrFail(); + $gallery = Gallery::query()->where("id", "=", $image->gallery)->firstOrFail(); + $tenant = Tenant::query()->where("id", "=", $gallery->tenant)->firstOrFail(); + $cacheName = "cache/".$tenant->url."_".$gallery->url."_".$image->id; + + //Check if orginal size is cached on the current system + if (Storage::disk('cache')->exists($cacheName."_orginal")) { + $file = Storage::disk("cache")->get($cacheName."_orginal"); + } else { + $this->addAccessLog($tenant->id, $gallery->id, $image->id, "Access", $image->size); + $file = Storage::disk($image->driver)->get($image->path); + if(env("CACHE_ORGINAL")) + { + Storage::disk("cache")->put($cacheName."_orginal", $file); + } + } + + $image = ImageResize::createFromString($file); + $image->resizeToLongSide($this->size, true); + + //Watermark + Storage::disk("cache")->put($cacheName."_".$this->size, $image->getImageAsString(IMAGETYPE_JPEG, 100)); + } + + + + private function addAccessLog(int $tenant, int $gallery, int $image, string $typ, int $size) { + $access = new Access(); + $access->year = date("Y"); + $access->month = date("m"); + $access->day = date("d"); + $access->hour = date("H"); + $access->image = $image; + $access->gallery = $gallery; + $access->tenant = $tenant; + $access->typ = $typ; + $access->size = $size; + $access->saveOrFail(); + } +} diff --git a/app/Jobs/ResizeImage.php b/app/Jobs/ResizeImage.php index 4834331..b2156e9 100644 --- a/app/Jobs/ResizeImage.php +++ b/app/Jobs/ResizeImage.php @@ -2,6 +2,7 @@ namespace App\Jobs; +use Ajaxray\PHPWatermark\Watermark; use App\Models\Access; use App\Models\Gallery; use App\Models\Image; @@ -15,6 +16,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; +use Intervention\Image\ImageManager; class ResizeImage implements ShouldQueue { @@ -42,6 +44,7 @@ class ResizeImage implements ShouldQueue */ public function handle() { + //Get Database Entitiys $image = Image::query()->where("id", "=", $this->image_id)->firstOrFail(); $gallery = Gallery::query()->where("id", "=", $image->gallery)->firstOrFail(); $tenant = Tenant::query()->where("id", "=", $gallery->tenant)->firstOrFail(); @@ -59,12 +62,63 @@ class ResizeImage implements ShouldQueue } } - $image = ImageResize::createFromString($file); - $image->resizeToLongSide($this->size); - Storage::disk("cache")->put($cacheName."_".$this->size, $image->getImageAsString(IMAGETYPE_JPEG, 100)); + + $manager = new ImageManager(array('driver' => 'imagick')); + $img = $manager->make($file); + + $newHeight = $img->getHeight(); + $newWidth = $img->getWidth(); + if($img->getWidth() > $img->getHeight()) { + $newWidth = $this->size; + $newHeight = $img->getHeight() * ($newWidth / $img->getWidth() ); + } else { + $newHeight = $this->size; + $newWidth = $img->getWidth() * ($newHeight / $img->getHeight()); + } + + $tmpfname = tempnam("/tmp", "FOO").".jpg"; + + $img->resize($newWidth, $newHeight); + + //$img->blur(50); + if($this->size > 500) { + $watermark = $manager->make(storage_path("logo-sample.png")); + if($watermark->getWidth() > $img->getWidth()) { + $newWidth = $img->getWidth() / 1.2; + $newHeight = $watermark->getHeight() * ($newWidth / $watermark->getWidth()); + $watermark->resize($newWidth, $newHeight); + } + if($watermark->getHeight() > $img->getHeight()) { + $newHeight = $img->getHeight() / 1.1; + $newWidth = $watermark->getWidth() * ($newHeight / $watermark->getHeight()); + $watermark->resize($newWidth, $newHeight); + } + $watermark->opacity(40); + $img->insert($watermark, 'center'); + + $img->resizeCanvas(0, 28, 'top', true, "#000000"); + $img->text('www.kuvia.cloud/'.$tenant->url, $img->getWidth() - 10, $img->getHeight() - 25, function($font) { + $font->file(storage_path("OpenSans-Light.ttf")); + $font->size(18); + $font->color('#ffffff'); + $font->align('right'); + $font->valign('top'); + //$font->angle(45); + }); + } + + + + $img->save($tmpfname); + Storage::disk("cache")->put($cacheName."_".$this->size, file_get_contents($tmpfname)); + unlink($tmpfname); + + //Watermark + //Storage::disk("cache")->put($cacheName."_".$this->size, $image->getImageAsString(IMAGETYPE_JPEG, 100)); } + private function addAccessLog(int $tenant, int $gallery, int $image, string $typ, int $size) { $access = new Access(); $access->year = date("Y"); diff --git a/composer.json b/composer.json index feb96cb..32a815c 100644 --- a/composer.json +++ b/composer.json @@ -15,6 +15,7 @@ "fruitcake/laravel-cors": "^2.0", "gumlet/php-image-resize": "1.9.*", "guzzlehttp/guzzle": "^7.0.1", + "intervention/image": "^2.5", "laravel/framework": "^8.12", "laravel/tinker": "^2.5", "league/flysystem-aws-s3-v3": "~1.0" diff --git a/composer.lock b/composer.lock index 954c9e4..233a5f8 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": "fdbb8e19644f726c76bfec23d2f51743", + "content-hash": "fd0ab766a01c2bf348b0108782d792d7", "packages": [ { "name": "almasaeed2010/adminlte", @@ -107,16 +107,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.171.15", + "version": "3.171.20", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "26c7f2deb05110c62e38cc867658f1ef89123365" + "reference": "02aaf7007c5678a6358ea924cd85531300aa1747" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/26c7f2deb05110c62e38cc867658f1ef89123365", - "reference": "26c7f2deb05110c62e38cc867658f1ef89123365", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/02aaf7007c5678a6358ea924cd85531300aa1747", + "reference": "02aaf7007c5678a6358ea924cd85531300aa1747", "shasum": "" }, "require": { @@ -191,9 +191,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.171.15" + "source": "https://github.com/aws/aws-sdk-php/tree/3.171.20" }, - "time": "2021-01-11T19:28:59+00:00" + "time": "2021-01-19T19:13:08+00:00" }, { "name": "brick/math", @@ -1135,17 +1135,91 @@ "time": "2020-09-30T07:37:11+00:00" }, { - "name": "laravel/framework", - "version": "v8.21.0", + "name": "intervention/image", + "version": "2.5.1", "source": { "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "a61cab167c35f465a923737ee6e6fb99cd5fde88" + "url": "https://github.com/Intervention/image.git", + "reference": "abbf18d5ab8367f96b3205ca3c89fb2fa598c69e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/a61cab167c35f465a923737ee6e6fb99cd5fde88", - "reference": "a61cab167c35f465a923737ee6e6fb99cd5fde88", + "url": "https://api.github.com/repos/Intervention/image/zipball/abbf18d5ab8367f96b3205ca3c89fb2fa598c69e", + "reference": "abbf18d5ab8367f96b3205ca3c89fb2fa598c69e", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@olivervogel.com", + "homepage": "http://olivervogel.com/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/master" + }, + "time": "2019-11-02T09:15:47+00:00" + }, + { + "name": "laravel/framework", + "version": "v8.23.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "a813df1b248ca305e5f5ce23ea981ed6c6905504" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/a813df1b248ca305e5f5ce23ea981ed6c6905504", + "reference": "a813df1b248ca305e5f5ce23ea981ed6c6905504", "shasum": "" }, "require": { @@ -1299,7 +1373,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-01-05T15:43:10+00:00" + "time": "2021-01-19T14:10:48+00:00" }, { "name": "laravel/tinker", @@ -1618,16 +1692,16 @@ }, { "name": "league/mime-type-detection", - "version": "1.5.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "353f66d7555d8a90781f6f5e7091932f9a4250aa" + "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/353f66d7555d8a90781f6f5e7091932f9a4250aa", - "reference": "353f66d7555d8a90781f6f5e7091932f9a4250aa", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", + "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", "shasum": "" }, "require": { @@ -1635,8 +1709,9 @@ "php": "^7.2 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.36", - "phpunit/phpunit": "^8.5.8" + "friendsofphp/php-cs-fixer": "^2.18", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" }, "type": "library", "autoload": { @@ -1657,7 +1732,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.5.1" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0" }, "funding": [ { @@ -1669,7 +1744,7 @@ "type": "tidelift" } ], - "time": "2020-10-18T11:50:25+00:00" + "time": "2021-01-18T20:58:21+00:00" }, { "name": "monolog/monolog", @@ -2422,16 +2497,16 @@ }, { "name": "psy/psysh", - "version": "v0.10.5", + "version": "v0.10.6", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "7c710551d4a2653afa259c544508dc18a9098956" + "reference": "6f990c19f91729de8b31e639d6e204ea59f19cf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/7c710551d4a2653afa259c544508dc18a9098956", - "reference": "7c710551d4a2653afa259c544508dc18a9098956", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6f990c19f91729de8b31e639d6e204ea59f19cf3", + "reference": "6f990c19f91729de8b31e639d6e204ea59f19cf3", "shasum": "" }, "require": { @@ -2460,7 +2535,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "0.10.x-dev" + "dev-main": "0.10.x-dev" } }, "autoload": { @@ -2492,9 +2567,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.10.5" + "source": "https://github.com/bobthecow/psysh/tree/v0.10.6" }, - "time": "2020-12-04T02:51:30+00:00" + "time": "2021-01-18T15:53:43+00:00" }, { "name": "ralouphie/getallheaders", @@ -2707,16 +2782,16 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v6.2.4", + "version": "v6.2.5", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e" + "reference": "698a6a9f54d7eb321274de3ad19863802c879fb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e", - "reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/698a6a9f54d7eb321274de3ad19863802c879fb7", + "reference": "698a6a9f54d7eb321274de3ad19863802c879fb7", "shasum": "" }, "require": { @@ -2766,7 +2841,7 @@ ], "support": { "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.4" + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.2.5" }, "funding": [ { @@ -2778,7 +2853,7 @@ "type": "tidelift" } ], - "time": "2020-12-08T18:02:06+00:00" + "time": "2021-01-12T09:35:59+00:00" }, { "name": "symfony/console", @@ -5645,16 +5720,16 @@ }, { "name": "laravel/sail", - "version": "v1.1.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "277d868441b49898caf0ce3cb4e19b439e419133" + "reference": "c28c1b77d9aada131861c89bc406813859b62844" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/277d868441b49898caf0ce3cb4e19b439e419133", - "reference": "277d868441b49898caf0ce3cb4e19b439e419133", + "url": "https://api.github.com/repos/laravel/sail/zipball/c28c1b77d9aada131861c89bc406813859b62844", + "reference": "c28c1b77d9aada131861c89bc406813859b62844", "shasum": "" }, "require": { @@ -5700,7 +5775,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2021-01-05T16:40:11+00:00" + "time": "2021-01-19T15:26:58+00:00" }, { "name": "mockery/mockery", @@ -5834,16 +5909,16 @@ }, { "name": "nunomaduro/collision", - "version": "v5.1.0", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "7c2b95589bf81e274e61e47f7672a1b2c3e06eaa" + "reference": "aca954fd03414ba0dd85d7d8e42ba9b251893d1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/7c2b95589bf81e274e61e47f7672a1b2c3e06eaa", - "reference": "7c2b95589bf81e274e61e47f7672a1b2c3e06eaa", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/aca954fd03414ba0dd85d7d8e42ba9b251893d1f", + "reference": "aca954fd03414ba0dd85d7d8e42ba9b251893d1f", "shasum": "" }, "require": { @@ -5853,16 +5928,16 @@ "symfony/console": "^5.0" }, "require-dev": { - "fideloper/proxy": "^4.4.0", - "friendsofphp/php-cs-fixer": "^2.16.4", - "fruitcake/laravel-cors": "^2.0.1", - "laravel/framework": "^8.0", - "laravel/tinker": "^2.4.1", + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4.1", + "friendsofphp/php-cs-fixer": "^2.17.3", + "fruitcake/laravel-cors": "^2.0.3", + "laravel/framework": "^9.0", "nunomaduro/larastan": "^0.6.2", "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.36", - "phpunit/phpunit": "^9.3.3" + "orchestra/testbench": "^7.0", + "phpstan/phpstan": "^0.12.64", + "phpunit/phpunit": "^9.5.0" }, "type": "library", "extra": { @@ -5918,7 +5993,7 @@ "type": "patreon" } ], - "time": "2020-10-29T14:50:40+00:00" + "time": "2021-01-13T10:00:08+00:00" }, { "name": "phar-io/manifest", @@ -6576,16 +6651,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.0", + "version": "9.5.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe" + "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", - "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7bdf4085de85a825f4424eae52c99a1cec2f360", + "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360", "shasum": "" }, "require": { @@ -6663,7 +6738,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.0" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.1" }, "funding": [ { @@ -6675,7 +6750,7 @@ "type": "github" } ], - "time": "2020-12-04T05:05:53+00:00" + "time": "2021-01-17T07:42:25+00:00" }, { "name": "sebastian/cli-parser", diff --git a/resources/views/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php index 869aa72..3380729 100644 --- a/resources/views/dashboard/index.blade.php +++ b/resources/views/dashboard/index.blade.php @@ -6,7 +6,7 @@

Dashboard

diff --git a/resources/views/layout/template.blade.php b/resources/views/layout/template.blade.php index 87c91e0..a483149 100644 --- a/resources/views/layout/template.blade.php +++ b/resources/views/layout/template.blade.php @@ -24,10 +24,7 @@ diff --git a/resources/views/themes/gallery/gallery-detail/list.blade.php b/resources/views/themes/gallery/gallery-detail/list.blade.php index 0e9b3d4..b055cb4 100644 --- a/resources/views/themes/gallery/gallery-detail/list.blade.php +++ b/resources/views/themes/gallery/gallery-detail/list.blade.php @@ -1,7 +1,7 @@ @extends('layout/template') @section('content') -
+
diff --git a/storage/Justus-Roman.ttf b/storage/Justus-Roman.ttf new file mode 100644 index 0000000..74b0851 Binary files /dev/null and b/storage/Justus-Roman.ttf differ diff --git a/storage/OpenSans-Light.ttf b/storage/OpenSans-Light.ttf new file mode 100644 index 0000000..0d38189 Binary files /dev/null and b/storage/OpenSans-Light.ttf differ diff --git a/storage/Unbenannt.png b/storage/Unbenannt.png new file mode 100644 index 0000000..fd9b3eb Binary files /dev/null and b/storage/Unbenannt.png differ diff --git a/storage/logo-sample.png b/storage/logo-sample.png new file mode 100644 index 0000000..e391bd9 Binary files /dev/null and b/storage/logo-sample.png differ diff --git a/storage/make-image-background-transparent-feature-768x570.png b/storage/make-image-background-transparent-feature-768x570.png new file mode 100644 index 0000000..fa5e4c5 Binary files /dev/null and b/storage/make-image-background-transparent-feature-768x570.png differ