PDF-Generator für Eventschluss; CSRF-Protection

This commit is contained in:
2026-04-06 15:03:15 +02:00
parent 9cac0294cd
commit b48c689d31
11 changed files with 654 additions and 5 deletions

View File

@@ -10,8 +10,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Mail;
use Log;
use Nette\Utils\Random;
use Dompdf\Dompdf;
class PreApplicationController extends Controller
{
@@ -159,4 +158,38 @@ class PreApplicationController extends Controller
}
abort(404);
}
public function generatePDF(Request $request){
if(Auth::check()){
if(!$request->has('event_id')){
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.event_id_missing")];
}
$event = ChaosEvents::find($request->input('event_id'));
if(!$event){
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.event_not_found")];
}
if($event->active == 0 || $event->to_date_internal < today()){
return ["messageStatus" => "failure", "errorMessage" => __("controller_messages.PreApplicationController.event_not_active")];
}
$options = new \Dompdf\Options();
$options->set('isRemoteEnabled', true);
$options->set('isHtml5ParserEnabled', true);
$options->set('chroot', public_path());
$dompdf = new Dompdf($options);
$dompdf->setPaper('A4', 'portrait');
$applications = PreApplications::where('event_id', $request->input('event_id'))->get();
$dompdf->loadHtml(view('pdf.pre_application', ['applications' => $applications, 'event' => $event]));
$dompdf->render();
$dompdf->stream('Voranträge_' . $event->shortname . '_' . $event->from_date_visible->format('Y') . '.pdf', ['Attachment' => 0]);
exit;
}
abort(404);
}
}