Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe 2023-09-07 20:50:35 +01:00
commit 5b88089ffc
15 changed files with 113 additions and 78 deletions

View file

@ -161,22 +161,19 @@ class AccessoriesFilesController extends Controller
->header('Content-Type', 'text/plain'); ->header('Content-Type', 'text/plain');
} else { } else {
// Display the file inline
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
// We have to override the URL stuff here, since local defaults in Laravel's Flysystem // We have to override the URL stuff here, since local defaults in Laravel's Flysystem
// won't work, as they're not accessible via the web // won't work, as they're not accessible via the web
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer? if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file); return StorageHelper::downloader($file);
} else {
if ($download != 'true') {
\Log::debug('display the file');
if ($contents = file_get_contents(Storage::url($file))) { // TODO - this will fail on private S3 files or large public ones
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
}
return JsonResponse::create(['error' => 'Failed validation: '], 500);
}
return StorageHelper::downloader($file);
} }
} }
} }

View file

@ -78,7 +78,7 @@ class AssetModelsFilesController extends Controller
* @return View * @return View
* @throws \Illuminate\Auth\Access\AuthorizationException * @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function show($modelId = null, $fileId = null, $download = true) public function show($modelId = null, $fileId = null)
{ {
$model = AssetModel::find($modelId); $model = AssetModel::find($modelId);
// the asset is valid // the asset is valid
@ -99,12 +99,13 @@ class AssetModelsFilesController extends Controller
->header('Content-Type', 'text/plain'); ->header('Content-Type', 'text/plain');
} }
if ($download != 'true') { if (request('inline') == 'true') {
if ($contents = file_get_contents(Storage::url($file))) {
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
}
return JsonResponse::create(['error' => 'Failed validation: '], 500); $headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
} }
return StorageHelper::downloader($file); return StorageHelper::downloader($file);

View file

@ -79,7 +79,7 @@ class AssetFilesController extends Controller
* @return View * @return View
* @throws \Illuminate\Auth\Access\AuthorizationException * @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function show($assetId = null, $fileId = null, $download = true) public function show($assetId = null, $fileId = null)
{ {
$asset = Asset::find($assetId); $asset = Asset::find($assetId);
// the asset is valid // the asset is valid
@ -103,12 +103,13 @@ class AssetFilesController extends Controller
->header('Content-Type', 'text/plain'); ->header('Content-Type', 'text/plain');
} }
if ($download != 'true') { if (request('inline') == 'true') {
if ($contents = file_get_contents(Storage::url($file))) {
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
}
return JsonResponse::create(['error' => 'Failed validation: '], 500); $headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
} }
return StorageHelper::downloader($file); return StorageHelper::downloader($file);

View file

@ -132,7 +132,7 @@ class ComponentsFilesController extends Controller
* @return \Symfony\Component\HttpFoundation\Response * @return \Symfony\Component\HttpFoundation\Response
* @throws \Illuminate\Auth\Access\AuthorizationException * @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function show($componentId = null, $fileId = null, $download = true) public function show($componentId = null, $fileId = null)
{ {
\Log::debug('Private filesystem is: '.config('filesystems.default')); \Log::debug('Private filesystem is: '.config('filesystems.default'));
$component = Component::find($componentId); $component = Component::find($componentId);
@ -157,20 +157,16 @@ class ComponentsFilesController extends Controller
->header('Content-Type', 'text/plain'); ->header('Content-Type', 'text/plain');
} else { } else {
// Display the file inline
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer? if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file); return StorageHelper::downloader($file);
} else {
if ($download != 'true') {
\Log::debug('display the file');
if ($contents = file_get_contents(Storage::url($file))) { // TODO - this will fail on private S3 files or large public ones
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
}
return JsonResponse::create(['error' => 'Failed validation: '], 500);
}
return StorageHelper::downloader($file);
} }
} }
} }

View file

@ -131,7 +131,7 @@ class ConsumablesFilesController extends Controller
* @return \Symfony\Consumable\HttpFoundation\Response * @return \Symfony\Consumable\HttpFoundation\Response
* @throws \Illuminate\Auth\Access\AuthorizationException * @throws \Illuminate\Auth\Access\AuthorizationException
*/ */
public function show($consumableId = null, $fileId = null, $download = true) public function show($consumableId = null, $fileId = null)
{ {
$consumable = Consumable::find($consumableId); $consumable = Consumable::find($consumableId);
@ -155,22 +155,19 @@ class ConsumablesFilesController extends Controller
->header('Content-Type', 'text/plain'); ->header('Content-Type', 'text/plain');
} else { } else {
// Display the file inline
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
// We have to override the URL stuff here, since local defaults in Laravel's Flysystem // We have to override the URL stuff here, since local defaults in Laravel's Flysystem
// won't work, as they're not accessible via the web // won't work, as they're not accessible via the web
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer? if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file); return StorageHelper::downloader($file);
} else {
if ($download != 'true') {
\Log::debug('display the file');
if ($contents = file_get_contents(Storage::url($file))) { // TODO - this will fail on private S3 files or large public ones
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
}
return JsonResponse::create(['error' => 'Failed validation: '], 500);
}
return StorageHelper::downloader($file);
} }
} }
} }

View file

@ -152,21 +152,19 @@ class LicenseFilesController extends Controller
->header('Content-Type', 'text/plain'); ->header('Content-Type', 'text/plain');
} else { } else {
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
// We have to override the URL stuff here, since local defaults in Laravel's Flysystem // We have to override the URL stuff here, since local defaults in Laravel's Flysystem
// won't work, as they're not accessible via the web // won't work, as they're not accessible via the web
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer? if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file); return StorageHelper::downloader($file);
} else {
if ($download != 'true') {
\Log::debug('display the file');
if ($contents = file_get_contents(Storage::url($file))) { // TODO - this will fail on private S3 files or large public ones
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
}
return JsonResponse::create(['error' => 'Failed validation: '], 500);
}
return StorageHelper::downloader($file);
} }
} }

View file

@ -1021,7 +1021,7 @@ class ReportsController extends Controller
$assetsForReport = $acceptances $assetsForReport = $acceptances
->filter(function ($acceptance) { ->filter(function ($acceptance) {
return $acceptance->checkoutable_type == 'App\Models\Asset'; return $acceptance->checkoutable_type == 'App\Models\Asset' && $acceptance->checkoutable->checkedOutToUser();
}) })
->map(function($acceptance) { ->map(function($acceptance) {
return ['assetItem' => $acceptance->checkoutable, 'acceptance' => $acceptance]; return ['assetItem' => $acceptance->checkoutable, 'acceptance' => $acceptance];

View file

@ -2,6 +2,7 @@
namespace App\Http\Controllers\Users; namespace App\Http\Controllers\Users;
use App\Helpers\StorageHelper;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\AssetFileRequest; use App\Http\Requests\AssetFileRequest;
use App\Models\Actionlog; use App\Models\Actionlog;
@ -139,18 +140,25 @@ class UserFilesController extends Controller
// the license is valid // the license is valid
if (isset($user->id)) { if (isset($user->id)) {
$this->authorize('view', $user); $this->authorize('view', $user);
$log = Actionlog::find($fileId); $log = Actionlog::find($fileId);
$file = $log->get_src('users');
return Response::download($file); //FIXME this doesn't use the new StorageHelper yet, but it's complicated... // Display the file inline
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download('private_uploads/users/'.$log->filename, $log->filename, $headers);
}
return Storage::download('private_uploads/users/'.$log->filename);
} }
// Prepare the error message
$error = trans('admin/users/message.user_not_found', ['id' => $userId]);
// Redirect to the licence management page // Redirect to the user management page if the user doesn't exist
return redirect()->route('users.index')->with('error', $error); return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found', ['id' => $userId]));
} }
} }

View file

@ -210,10 +210,15 @@
</td> </td>
<td> <td>
@if ($file->filename) @if ($file->filename)
<a href="{{ route('show.accessoryfile', [$accessory->id, $file->id, 'download' => 'true']) }}" class="btn btn-default"> <a href="{{ route('show.accessoryfile', [$accessory->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
<span class="sr-only">{{ trans('general.download') }}</span> <span class="sr-only">{{ trans('general.download') }}</span>
</a> </a>
<a href="{{ route('show.accessoryfile', [$accessory->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
</td> </td>
<td>{{ $file->created_at }}</td> <td>{{ $file->created_at }}</td>

View file

@ -203,10 +203,15 @@
</td> </td>
<td> <td>
@if ($file->filename) @if ($file->filename)
<a href="{{ route('show.componentfile', [$component->id, $file->id, 'download' => 'true']) }}" class="btn btn-default"> <a href="{{ route('show.componentfile', [$component->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
<span class="sr-only">{{ trans('general.download') }}</span> <span class="sr-only">{{ trans('general.download') }}</span>
</a> </a>
<a href="{{ route('show.componentfile', [$component->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
</td> </td>
<td>{{ $file->created_at }}</td> <td>{{ $file->created_at }}</td>

View file

@ -160,10 +160,14 @@
</td> </td>
<td> <td>
@if ($file->filename) @if ($file->filename)
<a href="{{ route('show.consumablefile', [$consumable->id, $file->id, 'download' => 'true']) }}" class="btn btn-default"> <a href="{{ route('show.consumablefile', [$consumable->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
<span class="sr-only">{{ trans('general.download') }}</span> <span class="sr-only">{{ trans('general.download') }}</span>
</a> </a>
<a href="{{ route('show.consumablefile', [$consumable->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
</td> </td>
<td>{{ $file->created_at }}</td> <td>{{ $file->created_at }}</td>

View file

@ -1266,9 +1266,13 @@
</td> </td>
<td> <td>
@if (($file->filename) && (Storage::exists('private_uploads/assets/'.$file->filename))) @if (($file->filename) && (Storage::exists('private_uploads/assets/'.$file->filename)))
<a href="{{ route('show/assetfile', [$asset->id, $file->id]) }}" class="btn btn-default"> <a href="{{ route('show/assetfile', [$asset->id, $file->id, 'download'=>'true']) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
</a> </a>
<a href="{{ route('show/assetfile', [$asset->id, $file->id, 'inline'=>'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
</td> </td>
<td> <td>
@ -1363,9 +1367,14 @@
</td> </td>
<td> <td>
@if (($file->filename) && (Storage::exists('private_uploads/assetmodels/'.$file->filename))) @if (($file->filename) && (Storage::exists('private_uploads/assetmodels/'.$file->filename)))
<a href="{{ route('show/modelfile', [$asset->model->id, $file->id]) }}" class="btn btn-default"> <a href="{{ route('show/modelfile', [$asset->model->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
</a> </a>
<a href="{{ route('show/modelfile', [$asset->model->id, $file->id, 'inline'=>'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
</td> </td>
<td> <td>

View file

@ -474,10 +474,15 @@
</td> </td>
<td> <td>
@if ($file->filename) @if ($file->filename)
<a href="{{ route('show.licensefile', [$license->id, $file->id, 'download' => 'true']) }}" class="btn btn-default"> <a href="{{ route('show.licensefile', [$license->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
<span class="sr-only">{{ trans('general.download') }}</span> <span class="sr-only">{{ trans('general.download') }}</span>
</a> </a>
<a href="{{ route('show.licensefile', [$license->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
</td> </td>
<td>{{ $file->created_at }}</td> <td>{{ $file->created_at }}</td>

View file

@ -168,9 +168,14 @@
</td> </td>
<td> <td>
@if (($file->filename) && (Storage::exists('private_uploads/assetmodels/'.$file->filename))) @if (($file->filename) && (Storage::exists('private_uploads/assetmodels/'.$file->filename)))
<a href="{{ route('show/modelfile', [$model->id, $file->id]) }}" class="btn btn-default"> <a href="{{ route('show/modelfile', [$model->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
</a> </a>
<a href="{{ route('show/modelfile', [$model->id, $file->id, 'inline'=>'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
</td> </td>
<td> <td>

View file

@ -913,7 +913,7 @@
<td> <td>
@if (($file->filename) && (Storage::exists('private_uploads/users/'.$file->filename))) @if (($file->filename) && (Storage::exists('private_uploads/users/'.$file->filename)))
@if (Helper::checkUploadIsImage($file->get_src('users'))) @if (Helper::checkUploadIsImage($file->get_src('users')))
<a href="{{ route('show/userfile', ['userId' => $user->id, 'fileId' => $file->id, 'download' => 'false']) }}" data-toggle="lightbox" data-type="image"><img src="{{ route('show/userfile', ['userId' => $user->id, 'fileId' => $file->id]) }}" class="img-thumbnail" style="max-width: 50px;"></a> <a href="{{ route('show/userfile', [$user->id, $file->id, 'inline' => 'true']) }}" data-toggle="lightbox" data-type="image"><img src="{{ route('show/userfile', [$user->id, $file->id, 'inline' => 'true']) }}" class="img-thumbnail" style="max-width: 50px;"></a>
@else @else
{{ trans('general.preview_not_available') }} {{ trans('general.preview_not_available') }}
@endif @endif
@ -937,10 +937,14 @@
<td> <td>
@if ($file->filename) @if ($file->filename)
@if (Storage::exists('private_uploads/users/'.$file->filename)) @if (Storage::exists('private_uploads/users/'.$file->filename))
<a href="{{ route('show/userfile', [$user->id, $file->id]) }}" class="btn btn-default"> <a href="{{ route('show/userfile', [$user->id, $file->id]) }}" class="btn btn-sm btn-default">
<i class="fas fa-download" aria-hidden="true"></i> <i class="fas fa-download" aria-hidden="true"></i>
<span class="sr-only">{{ trans('general.download') }}</span> <span class="sr-only">{{ trans('general.download') }}</span>
</a> </a>
<a href="{{ route('show/userfile', [$user->id, $file->id, 'inline' => 'true']) }}" class="btn btn-sm btn-default" target="_blank">
<i class="fa fa-external-link" aria-hidden="true"></i>
</a>
@endif @endif
@endif @endif
</td> </td>