diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 2ff75fd5..005f6687 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,75 +1,75 @@ { "/js/main.js": "/js/main.js", - "/chunks/request.js": "/chunks/request.js?id=54752eacee1dc25b", - "/chunks/request-upload.js": "/chunks/request-upload.js?id=49626a12bd587b65", - "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=3c2fc454c3fce8d2", - "/chunks/status-check.js": "/chunks/status-check.js?id=33911b8a77451a0e", - "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=c1df85c34d7e9521", - "/chunks/database.js": "/chunks/database.js?id=c686d46622194c7e", - "/chunks/environment.js": "/chunks/environment.js?id=5d4fbf3deab71302", - "/chunks/app-setup.js": "/chunks/app-setup.js?id=56ac1474e0e87cb0", - "/chunks/admin-account.js": "/chunks/admin-account.js?id=666e7ee49b02b57c", - "/chunks/shared.js": "/chunks/shared.js?id=58de7ebceaeecd89", - "/chunks/shared/browser.js": "/chunks/shared/browser.js?id=8726d4eb9d8c6a0e", - "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=e406e713302f961b", - "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=ca8cc89fe5982782", - "/chunks/not-found.js": "/chunks/not-found.js?id=4cb8d3a7a2212c3c", - "/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=c71981d946a9ca71", - "/chunks/admin.js": "/chunks/admin.js?id=bbe36712f0c82d09", - "/chunks/dashboard.js": "/chunks/dashboard.js?id=29e15715c347ce6b", - "/chunks/invoices.js": "/chunks/invoices.js?id=70fb9a603be2f554", - "/chunks/subscriptions.js": "/chunks/subscriptions.js?id=94e96e1bb505ae59", - "/chunks/pages.js": "/chunks/pages.js?id=a78bbcf039e5d9e5", - "/chunks/page-edit.js": "/chunks/page-edit.js?id=ba309ccc95221294", - "/chunks/plans.js": "/chunks/plans.js?id=492aa4439e0fa2ec", - "/chunks/users.js": "/chunks/users.js?id=b5feffcc35d4b023", - "/chunks/user-create.js": "/chunks/user-create.js?id=a29fdec565540fa4", - "/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=b2e842f4f312aff2", - "/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=140d3aa05e7a450e", - "/chunks/user.js": "/chunks/user.js?id=dae4ac26750f99d0", - "/chunks/user-detail.js": "/chunks/user-detail.js?id=598392ba77bb2681", - "/chunks/user-storage.js": "/chunks/user-storage.js?id=0293215520c5e771", - "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=eff779ab6866265e", - "/chunks/user-password.js": "/chunks/user-password.js?id=3fb4538cd2283ff5", - "/chunks/user-delete.js": "/chunks/user-delete.js?id=5a4fad364a41a35c", - "/chunks/plan.js": "/chunks/plan.js?id=d8ffa85dc9b68966", - "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=3010ddb4ba7419e9", - "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=f41fe30f2273279c", - "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=6432308fb4313d44", - "/chunks/payments.js": "/chunks/payments.js?id=051e8246e2b5c9d0", - "/chunks/payments/billings.js": "/chunks/payments/billings.js?id=9068ff2602b50ab4", - "/chunks/payments/settings.js": "/chunks/payments/settings.js?id=208ac221d906d91b", - "/chunks/app-settings.js": "/chunks/app-settings.js?id=692d3291fb9d2cf7", - "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=aef973f6a55425e8", - "/chunks/app-index.js": "/chunks/app-index.js?id=6a442cd46f8ae636", - "/chunks/app-environment.js": "/chunks/app-environment.js?id=96d1de956be9903d", - "/chunks/app-others.js": "/chunks/app-others.js?id=7407aeeb824211f6", - "/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=91065b9cee23b7b4", - "/chunks/app-adsense.js": "/chunks/app-adsense.js?id=18842ed46783ea39", - "/chunks/app-server.js": "/chunks/app-server.js?id=2813cb2498226c31", - "/chunks/app-language.js": "/chunks/app-language.js?id=da8fb3ae026fdfce", - "/chunks/homepage.js": "/chunks/homepage.js?id=4b9bf26e8b0a3e97", - "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=e110e8923b6ca22f", - "/chunks/contact-us.js": "/chunks/contact-us.js?id=5ca104a75598dd39", - "/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=3153532f0d2273c8", - "/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=d630ed9f6f558509", - "/chunks/sign-in.js": "/chunks/sign-in.js?id=e1c4928ecf93bc0f", - "/chunks/sign-up.js": "/chunks/sign-up.js?id=c1cadbfd4ac0df7b", - "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=9c62b8573fbdd567", - "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=926b35b6745d99ba", - "/chunks/settings.js": "/chunks/settings.js?id=3f2a24ce4cfe172b", - "/chunks/profile.js": "/chunks/profile.js?id=4f1d8cad4a4cc40c", - "/chunks/settings-password.js": "/chunks/settings-password.js?id=359880c6417b14fe", - "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=68765cac4e648e90", - "/chunks/billing.js": "/chunks/billing.js?id=e10952f60d374cc2", - "/chunks/platform.js": "/chunks/platform.js?id=a03210047050c0e6", - "/chunks/files.js": "/chunks/files.js?id=f16276650733655f", - "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=61007e9d219737cd", - "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=bdb05363288063d6", - "/chunks/trash.js": "/chunks/trash.js?id=085bcb195aa1b724", - "/chunks/team-folders.js": "/chunks/team-folders.js?id=b36f9e95c4607bd7", - "/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=40c66e9dca7ce9a8", - "/chunks/invitation.js": "/chunks/invitation.js?id=64a211c90b505767", + "/chunks/request.js": "/chunks/request.js?id=bb0e138b9f190b89", + "/chunks/request-upload.js": "/chunks/request-upload.js?id=54fed02f6ced4685", + "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=19a0784e59d768ec", + "/chunks/status-check.js": "/chunks/status-check.js?id=f82f9939c1326fe2", + "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783", + "/chunks/database.js": "/chunks/database.js?id=15cc488117dccf7b", + "/chunks/environment.js": "/chunks/environment.js?id=166cd302ba7338ae", + "/chunks/app-setup.js": "/chunks/app-setup.js?id=15938ff1ad2d6ed2", + "/chunks/admin-account.js": "/chunks/admin-account.js?id=916450217130f3b8", + "/chunks/shared.js": "/chunks/shared.js?id=fa0aa086699172e1", + "/chunks/shared/browser.js": "/chunks/shared/browser.js?id=843bc2d059e81de4", + "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=e907fd044a0d31bf", + "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=672e931a9fb0b672", + "/chunks/not-found.js": "/chunks/not-found.js?id=9f6ce23ce5d969f1", + "/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=f564565faa09d6d6", + "/chunks/admin.js": "/chunks/admin.js?id=e02ede51e45f7813", + "/chunks/dashboard.js": "/chunks/dashboard.js?id=a41b0f486b1f8d36", + "/chunks/invoices.js": "/chunks/invoices.js?id=1416cbf6d1a593ac", + "/chunks/subscriptions.js": "/chunks/subscriptions.js?id=5bf6704f5b599f36", + "/chunks/pages.js": "/chunks/pages.js?id=c8380d571e91e8be", + "/chunks/page-edit.js": "/chunks/page-edit.js?id=fb3f9eda3dc1d15c", + "/chunks/plans.js": "/chunks/plans.js?id=6e8c847c141e41e8", + "/chunks/users.js": "/chunks/users.js?id=ec687ee365c4248a", + "/chunks/user-create.js": "/chunks/user-create.js?id=8dd9d29f024132f5", + "/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=c994595021a98ce6", + "/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=d9f1bcb1fe44a6ae", + "/chunks/user.js": "/chunks/user.js?id=c191b906a0496fe5", + "/chunks/user-detail.js": "/chunks/user-detail.js?id=d53bfd58090b79e2", + "/chunks/user-storage.js": "/chunks/user-storage.js?id=a8e0bce4703232a0", + "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=27d046c1122783ea", + "/chunks/user-password.js": "/chunks/user-password.js?id=23d3aee39f539a3c", + "/chunks/user-delete.js": "/chunks/user-delete.js?id=6bea6f8cadf4d74f", + "/chunks/plan.js": "/chunks/plan.js?id=4b267375ea9f19b3", + "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=a956ceca6865c50c", + "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=715ee86991d5e4db", + "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=1ad77372d342326f", + "/chunks/payments.js": "/chunks/payments.js?id=dc4586691c25de6f", + "/chunks/payments/billings.js": "/chunks/payments/billings.js?id=dd6c9d6a29a47808", + "/chunks/payments/settings.js": "/chunks/payments/settings.js?id=22bce2575affd7af", + "/chunks/app-settings.js": "/chunks/app-settings.js?id=55da23af2b076069", + "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=a694a01f3641712c", + "/chunks/app-index.js": "/chunks/app-index.js?id=efdbfa062749ca00", + "/chunks/app-environment.js": "/chunks/app-environment.js?id=6e5e264c7417af60", + "/chunks/app-others.js": "/chunks/app-others.js?id=abb8d96cd7c3a576", + "/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=1cfffc99465b9a7a", + "/chunks/app-adsense.js": "/chunks/app-adsense.js?id=a5dc9e715f8561bd", + "/chunks/app-server.js": "/chunks/app-server.js?id=3a41e04bde0d3536", + "/chunks/app-language.js": "/chunks/app-language.js?id=7e5f3d5ec447e397", + "/chunks/homepage.js": "/chunks/homepage.js?id=832072b46053df76", + "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=2504793131107b1f", + "/chunks/contact-us.js": "/chunks/contact-us.js?id=9adc7e145be4e160", + "/chunks/successfully-email-verified.js": "/chunks/successfully-email-verified.js?id=25b805ade5230382", + "/chunks/successfully-email-send.js": "/chunks/successfully-email-send.js?id=f4562229776d9f56", + "/chunks/sign-in.js": "/chunks/sign-in.js?id=0d48d229038a3a1e", + "/chunks/sign-up.js": "/chunks/sign-up.js?id=bb92bad614e60d45", + "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=50a1bc5e4ed86ec9", + "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=f652de052dba55c1", + "/chunks/settings.js": "/chunks/settings.js?id=5768cb763e66f11a", + "/chunks/profile.js": "/chunks/profile.js?id=0eca231475e267ab", + "/chunks/settings-password.js": "/chunks/settings-password.js?id=3755d41eaf50a5b1", + "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=994b669a56fd417b", + "/chunks/billing.js": "/chunks/billing.js?id=40e758c87bcf6e89", + "/chunks/platform.js": "/chunks/platform.js?id=1b39b72c0f800081", + "/chunks/files.js": "/chunks/files.js?id=99230d6e76d78e5f", + "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=8ba6e0814135b24a", + "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=c0ff62b58694657e", + "/chunks/trash.js": "/chunks/trash.js?id=d0db7e83583ff0df", + "/chunks/team-folders.js": "/chunks/team-folders.js?id=c52ff8e50d41546c", + "/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=3d220840e64a50a0", + "/chunks/invitation.js": "/chunks/invitation.js?id=9ed8456c9d6d5ce1", "/css/tailwind.css": "/css/tailwind.css", "/css/app.css": "/css/app.css" } diff --git a/src/Domain/Files/Actions/DownloadFileAction.php b/src/Domain/Files/Actions/DownloadFileAction.php index a2773099..58257b23 100644 --- a/src/Domain/Files/Actions/DownloadFileAction.php +++ b/src/Domain/Files/Actions/DownloadFileAction.php @@ -18,12 +18,10 @@ class DownloadFileAction $filePath = "files/$file->user_id/$file->basename"; // Get pretty name - $fileName = getPrettyName($file->basename, $file->name, $file->mimetype); + $fileName = getPrettyName($file); // Check if file exist - if (! Storage::exists($filePath)) { - return response('The file not found.', 404); - } + abort_if(Storage::missing($filePath), 404, 'The file not found.'); // Format response header $header = [ diff --git a/src/Domain/Sharing/Controllers/SharePublicIndexController.php b/src/Domain/Sharing/Controllers/SharePublicIndexController.php index 960af5de..4a87571b 100644 --- a/src/Domain/Sharing/Controllers/SharePublicIndexController.php +++ b/src/Domain/Sharing/Controllers/SharePublicIndexController.php @@ -58,17 +58,24 @@ class SharePublicIndexController extends Controller /** * Get image from storage and show it */ - private function get_single_image(File $file, string $user_id): StreamedResponse + private function get_single_image(File $file, string $userId): StreamedResponse|RedirectResponse { - // Store user download size - ($this->recordDownload)($file->getRawOriginal('filesize'), $user_id); + // Record user download + ($this->recordDownload)($file->filesize, $userId); // Get file path - $path = "/files/$user_id/$file->basename"; + $path = "/files/$userId/$file->basename"; // Check if file exist - if (! Storage::exists($path)) { - abort(404); + abort_if(Storage::missing($path), 404); + + // If s3 redirect to temporary download url + if (isStorageDriver('s3')) { + return redirect()->away(Storage::temporaryUrl($path, now()->addHour(), [ + 'ResponseAcceptRanges' => 'bytes', + 'ResponseContentType' => Storage::mimeType($path), + 'ResponseContentLength' => Storage::size($path), + ])); } return Storage::response($path, "{$file->name}.{$file->mimetype}", [ diff --git a/src/Support/helpers.php b/src/Support/helpers.php index 2d8ad97f..50abb8d2 100644 --- a/src/Support/helpers.php +++ b/src/Support/helpers.php @@ -728,25 +728,20 @@ if (! function_exists('get_file_type_from_mimetype')) { if (! function_exists('getPrettyName')) { /** * Format pretty name file - * - * @param $basename - * @param $name - * @param $mimetype - * @return string */ - function getPrettyName($basename, $name, $mimetype): string + function getPrettyName(File $file): string { - $file_extension = substr(strrchr($basename, '.'), 1); + $file_extension = substr(strrchr($file->basename, '.'), 1); - if (str_contains($name, $file_extension)) { - return $name; + if (str_contains($file->name, $file_extension)) { + return $file->name; } if ($file_extension) { - return $name . '.' . $file_extension; + return $file->name . '.' . $file_extension; } - return $name . '.' . $mimetype; + return $file->name . '.' . $file->mimetype; } }