support for passworded files

This commit is contained in:
2024-04-25 17:48:47 +10:00
parent a57be26b75
commit bad020924d
8 changed files with 191 additions and 30 deletions

View File

@@ -11,29 +11,6 @@ use Illuminate\Support\Facades\Validator;
class MediaController extends Controller
{
/**
* The disk to store public media.
*
* @var string
*/
private static $publicStorageDisk = 'public';
/**
* The disk to store temporary media.
*
* @var string
*/
private static $tempStorageDisk = 'temp';
/**
* Media preprocessors.
*
* @var array
*/
private static $preProcessors = [
\App\MediaServices\Converters\HEICToJPEG::class,
];
/**
* Display a listing of the resource.
*/
@@ -316,6 +293,18 @@ class MediaController extends Controller
// $mediaData['hash'] = $hash;
// }
if($request->get('password_clear') === 'on') {
$mediaData['password'] = null;
} else {
$password = $request->get('password');
if($password !== null && $password !== '') {
$mediaData['password'] = password_hash($request->get('password'), PASSWORD_DEFAULT);
} else {
unset($mediaData['password']);
}
}
$media->update($mediaData);
// if($file) {
@@ -421,6 +410,26 @@ class MediaController extends Controller
abort(404, 'File not found');
}
if($media->password !== null) {
if(!$request->has('password')) {
return view('media-password');
} else {
$password = $request->get('password');
if($password === '' || $password === null) {
return view('media-password', [
'error' => 'Password is required',
]);
}
if(!password_verify(base64_decode($password), $media->password)) {
return view('media-password', [
'error' => 'Password is incorrect',
]);
}
}
}
$variant = '';
$download = false;
$variants = array_keys($media->getVariantTypes());