allowed mimetypes from database

This commit is contained in:
Arno Kaimbacher 2019-04-02 18:03:29 +02:00
parent 2f930457d1
commit 415016a4c2
9 changed files with 128 additions and 202 deletions

View file

@ -431,8 +431,8 @@ class IndexController extends Controller
$user = Auth::user();
$dataset->user()->associate($user)->save();
// $error = 'Always throw this error';
// throw new \Exception($error);
$error = 'Always throw this error';
throw new \Exception($error);
// all good//commit everything
DB::commit();

View file

@ -1,21 +1,15 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Exceptions\GeneralException;
use App\Http\Controllers\Controller;
use Illuminate\View\View;
use Illuminate\Support\Facades\Config;
use App\Models\MimeType;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Illuminate\View\View;
class MimetypeController extends Controller
{
// public function download($id)
// {
// //$report = $this->report->find($id);
// $file = File::findOrFail($id);
// $file_path = public_path('storage/' . $file->path_name);
// return response()->download($file_path, $file->label, ['Content-Type:' . $file->mime_type]);
// }
public function __construct()
{
$this->middleware('auth');
@ -23,15 +17,15 @@ class MimetypeController extends Controller
public function index(): View
{
//$direction = 'asc'; // or desc
$mimetypes = Config::get('enums.mime_types');
//$checkeds = $document->licenses->pluck('id')->toArray();
$checkeds = Config::get('enums.mimetypes_allowed');
// $mimetypes = Config::get('enums.mime_types');
// $checkeds = Config::get('enums.mimetypes_allowed');
$direction = 'asc'; // or desc
$mimetypes = MimeType::orderBy('name', $direction)->get();
return view('settings.filetype.index', [
'options' => $mimetypes,
'checkeds' => $checkeds
]);
'mimetypes' => $mimetypes,
// 'checkeds' => $checkeds
]);
}
public function update(Request $request)
@ -40,11 +34,37 @@ class MimetypeController extends Controller
Config::set('enums.mimetypes_allowed', $mimetypes);
return redirect()->back()->with('success', 'Mimetypes are updated');
// session()->flash('flash_message', 'allowed mimtypes have been updated!');
// return redirect()->route('settings.document');
// throw new GeneralException(trans('exceptions.backend.dataset.update_error'));
}
/**
* deactivate mimetype
*
* @param int $id
* @return \Illuminate\Http\RedirectResponse
*/
public function down($id): RedirectResponse
{
$mimetype = MimeType::findOrFail($id);
$mimetype->update(['enabled' => 0]);
session()->flash('flash_message', 'mimetype has been deactivated!');
return redirect()->route('settings.mimetype.index');
}
/**
* activate mimetype.
*
* @param int $id
* @return \Illuminate\Http\RedirectResponse
*/
public function up($id): RedirectResponse
{
$mimetype = MimeType::findOrFail($id);
$mimetype->update(['enabled' => 1]);
session()->flash('flash_message', 'mimetype has been activated!');
return redirect()->route('settings.mimetype.index');
}
}

16
app/Models/MimeType.php Normal file
View file

@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MimeType extends Model
{
protected $table = 'mime_types';
// for using $input = $request->all();
//$project = Project::create($input);
protected $fillable = [
'name', 'file_extension', 'enabled',
];
}

View file

@ -3,7 +3,8 @@
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Config;
//use Illuminate\Support\Facades\Config;
use App\Models\MimeType;
class RdrFiletypes implements Rule
{
@ -16,7 +17,10 @@ class RdrFiletypes implements Rule
*/
public function __construct()
{
$this->mimetypes = Config::get('enums.mimetypes_allowed', ['application/pdf']);
//$this->mimetypes = Config::get('enums.mimetypes_allowed', ['application/pdf']);
$this->mimetypes = MimeType::where('enabled', 1)
->pluck('name')
->toArray();
// $this->maxFileSize = Config::get('enums.max_filesize');
}
@ -30,9 +34,9 @@ class RdrFiletypes implements Rule
public function passes($attribute, $value)
{
//return Rule::in($this->filetypes);
$test = $value->getMimeType();//"application/pdf"
$mimeType = $value->getMimeType();//"application/pdf"
return $value->getPath() != '' &&
in_array($value->getMimeType(), $this->mimetypes);
in_array($mimeType, $this->mimetypes);
// in_array($value->guessExtension(), $this->filetypes); //file extension
@ -49,23 +53,4 @@ class RdrFiletypes implements Rule
{
return 'attribute :attribute has not a valid mime type.';
}
/**
* Get the size of an attribute.
*
* @param string $attribute
* @param mixed $value
* @return mixed
*/
private function getSize($attribute, $value)
{
if (is_numeric($value) && $hasNumeric) {
return array_get($this->data, $attribute);
} elseif (is_array($value)) {
return count($value);
} elseif ($value instanceof File) {
return $value->getSize() / 1024;
}
return mb_strlen($value);
}
}