diff --git a/app/Http/Controllers/MailController.php b/app/Http/Controllers/MailController.php index df251833d54e7a79a61a416107aa18cacea1303a..5b58f232119324f5a337f674f616265fc61d3e01 100644 --- a/app/Http/Controllers/MailController.php +++ b/app/Http/Controllers/MailController.php @@ -28,14 +28,15 @@ class MailController extends Controller $returnMessage = ''; # Wir benötigen 3 Felder von dem Benutzer wenn diese nicht übermittelt wurden, oder nicht korrekt sind geben wir einen Error zurück + $input_data = $request->all(); + $maxFileSize = 5 * 1024 * 1024; $validator = Validator::make( - [ - 'email' => $request->input('email'), - 'pcsrf' => $request->input('pcsrf'), - ], + $input_data, [ 'email' => 'required|email', 'pcsrf' => ['required', 'string', new \App\Rules\PCSRF], + 'attachments' => ['max:5'], + 'attachments.*' => ['max:' . $maxFileSize], ] ); @@ -63,8 +64,9 @@ class MailController extends Controller } $message = $request->input('message'); $subject = $request->input('subject'); + $files = $request->file("attachments"); Mail::to($mailto) - ->send(new Kontakt($name, $replyTo, $subject, $message)); + ->send(new Kontakt($name, $replyTo, $subject, $message, $files)); $returnMessage = trans('kontakt.success.1'); $messageType = "success"; @@ -74,6 +76,8 @@ class MailController extends Controller ->with('title', 'Kontakt') ->with('js', ['lib.js']) ->with($messageType, $returnMessage); + + } public function donation(Request $request) diff --git a/app/Mail/Kontakt.php b/app/Mail/Kontakt.php index ff1ed0bd1549b134a75481a8f478f5350410a7c5..11164ff040b847025ff6370c7d6171be4a8454a4 100644 --- a/app/Mail/Kontakt.php +++ b/app/Mail/Kontakt.php @@ -15,12 +15,13 @@ class Kontakt extends Mailable * * @return void */ - public function __construct($name, $from, $subject, $message) + public function __construct($name, $from, $subject, $message, $attachments) { $this->name = $name; $this->reply = $from; $this->subject = $subject; $this->message = $message; + $this->attachedFiles = $attachments; } /** @@ -30,9 +31,14 @@ class Kontakt extends Mailable */ public function build() { - return $this->from($this->reply, $this->name) + $mail = $this->from($this->reply, $this->name) ->subject($this->subject) ->text('kontakt.mail') ->with('messageText', $this->message); + + foreach($this->attachedFiles as $attachment){ + $mail->attachData(file_get_contents($attachment->getRealPath()), $attachment->getClientOriginalName()); + } + return $mail; } } diff --git a/config/nginx-default-dev.conf b/config/nginx-default-dev.conf index 0424e725ec0a6ef5844cad5dd64bd58e149d3bee..87ac35a8de725f0b2a648b0bac55002cf5e119fc 100644 --- a/config/nginx-default-dev.conf +++ b/config/nginx-default-dev.conf @@ -4,6 +4,8 @@ server { root /html/public; index index.php index.html index.htm; + client_max_body_size 50M; + #charset koi8-r; #access_log /var/log/nginx/host.access.log main; diff --git a/config/nginx-default.conf b/config/nginx-default.conf index e418b8d6d53316d2b680e762ed1024f03b58ff14..6f95ee06cc880c095e9165dabda022a69b82fa02 100644 --- a/config/nginx-default.conf +++ b/config/nginx-default.conf @@ -4,6 +4,8 @@ server { root /html/public; index index.php index.html index.htm; + client_max_body_size 50M; + #charset koi8-r; #access_log /var/log/nginx/host.access.log main; diff --git a/config/nginx.conf b/config/nginx.conf index 96b512b5d167229b8eeb3fd3fc35865e455ef503..a9dec6136bca901482e4f685b36be9a3b69a1646 100644 --- a/config/nginx.conf +++ b/config/nginx.conf @@ -26,6 +26,7 @@ http { #tcp_nopush on; keepalive_timeout 65; + client_max_body_size 30M; gzip on; diff --git a/resources/lang/de/kontakt.php b/resources/lang/de/kontakt.php index 50e411deba50f426b77556821fe45bbd640651ff..718a3012a3826dc1ca7f628b1a457dcf31a43601 100644 --- a/resources/lang/de/kontakt.php +++ b/resources/lang/de/kontakt.php @@ -10,6 +10,7 @@ Alternativ können Sie uns natürlich auch per <a href="mailto:support@suma-ev.d 'form.6' => 'Ihre Nachricht', 'form.7' => 'Betreff', 'form.8' => 'Senden', + 'form.9' => 'Bis zu 5 Anhänge hinzufügen (Dateigröße < 5 MB)', 'letter.1' => 'Per Brief-Post', 'letter.2' => 'Wir ziehen es vor, auf digitalem Wege kontaktiert zu werden. Wenn Sie jedoch eine postalische Kontaktaufnahme als unbedingt nötig erachten, diff --git a/resources/views/kontakt/kontakt.blade.php b/resources/views/kontakt/kontakt.blade.php index 004e37fe05aeeaa7fc2e9b6227d5285d213c66b1..50c177e655a18d85d406780f6029e07854724228 100644 --- a/resources/views/kontakt/kontakt.blade.php +++ b/resources/views/kontakt/kontakt.blade.php @@ -3,44 +3,48 @@ @section('title', $title ) @section('content') - <div id="kontakt"> - <h1 class="page-title">{!! trans('kontakt.headline.1') !!}</h1> - <div class="card-heavy"> - <h2>{!! trans('kontakt.form.1') !!}</h2> - <p>{!! trans('kontakt.form.2') !!}</p> - @if(isset($formerrors)) - @foreach($formerrors->errors()->all() as $errormessage) - <div class="alert alert-danger" role="alert">{{$errormessage}}</div> - @endforeach - @endif - <form class="contact" name="contact" method="post" action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/kontakt") }}"> - {{ csrf_field() }} - <input type="hidden" name="pcsrf" value="{{ base64_encode(\time()) }}"> - <div class="form-group kontakt-form-group"> - <input class="form-control" name="name" placeholder="{!!trans('kontakt.form.name')!!}" type="text" required @if(isset($formerrors) && Request::has('name'))value="{{Request::input('name')}}"@endif> - </div> - <div class="form-group kontakt-form-group"> - <input class="form-control" name="email" placeholder="{!! trans('kontakt.form.5') !!}" type="email" required @if(isset($formerrors) && Request::has('email'))value="{{Request::input('email')}}"@endif> - </div> - <div class="form-group kontakt-form-group"> - <input class="form-control" name="subject" placeholder="{!! trans('kontakt.form.7') !!}" type="text" required @if(isset($formerrors) && Request::has('subject'))value="{{Request::input('subject')}}"@endif> - </div> - <div class="form-group kontakt-form-group"> - @if(isset($url) && $url !== "") - <label for="message">Wenn MetaGer bestimmte Webseiten nicht angezeigt hat, von denen Sie wissen, dass es sie gibt: Bitte nennen Sie deren Adresse/n (http:// ...???...). Wir werden das detailliert untersuchen.</label> - @endif - <textarea class="form-control" id="message" name="message" placeholder="{!! trans('kontakt.form.6') !!}" required>@if(isset($formerrors) && Request::has('message')){{Request::input('message')}}@endif</textarea> - </div> - <div class="form-group kontakt-form-group"> - <button title="" data-original-title="" class="btn btn-default encrypt-btn" type="submit">{!! trans('kontakt.form.8') !!}</button> - </div> - </form> - </div> - <div class="card-heavy"> - <h2>{!! trans('kontakt.letter.1') !!}</h2> - <p>{!! trans('kontakt.letter.2') !!}</p> - <address>{!! trans('kontakt.letter.3') !!}</address> - </div> - <script src="{{ mix('js/lib.js') }}"></script> - </div> + <div id="kontakt"> + <h1 class="page-title">{!! trans('kontakt.headline.1') !!}</h1> + <div class="card-heavy"> + <h2>{!! trans('kontakt.form.1') !!}</h2> + <p>{!! trans('kontakt.form.2') !!}</p> + @if(isset($formerrors)) + @foreach($formerrors->errors()->all() as $errormessage) + <div class="alert alert-danger" role="alert">{{$errormessage}}</div> + @endforeach + @endif + <form class="contact" name="contact" method="post" action="{{ LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), "/kontakt") }}" enctype="multipart/form-data"> + {{ csrf_field() }} + <input type="hidden" name="pcsrf" value="{{ base64_encode(\time()) }}"> + <div class="form-group kontakt-form-group"> + <input class="form-control" name="name" placeholder="{!!trans('kontakt.form.name')!!}" type="text" required @if(isset($formerrors) && Request::has('name'))value="{{Request::input('name')}}"@endif> + </div> + <div class="form-group kontakt-form-group"> + <input class="form-control" name="email" placeholder="{!! trans('kontakt.form.5') !!}" type="email" required @if(isset($formerrors) && Request::has('email'))value="{{Request::input('email')}}"@endif> + </div> + <div class="form-group kontakt-form-group"> + <input class="form-control" name="subject" placeholder="{!! trans('kontakt.form.7') !!}" type="text" required @if(isset($formerrors) && Request::has('subject'))value="{{Request::input('subject')}}"@endif> + </div> + <div class="form-group kontakt-form-group"> + @if(isset($url) && $url !== "") + <label for="message">Wenn MetaGer bestimmte Webseiten nicht angezeigt hat, von denen Sie wissen, dass es sie gibt: Bitte nennen Sie deren Adresse/n (http:// ...???...). Wir werden das detailliert untersuchen.</label> + @endif + <textarea class="form-control" id="message" name="message" placeholder="{!! trans('kontakt.form.6') !!}" required>@if(isset($formerrors) && Request::has('message')){{Request::input('message')}}@endif</textarea> + </div> + <div class="form-group kontakt-form-group"> + <label for="attachments">@lang("kontakt.form.9")</label> + <input type="file" multiple="multiple" name="attachments[]" id=""> + </div> + <div class="form-group kontakt-form-group"> + <button title="" data-original-title="" class="btn btn-default encrypt-btn" type="submit">{!! trans('kontakt.form.8') !!}</button> + </div> + </form> + </div> + <div class="card-heavy"> + <h2>{!! trans('kontakt.letter.1') !!}</h2> + <p>{!! trans('kontakt.letter.2') !!}</p> + <address>{!! trans('kontakt.letter.3') !!}</address> + </div> + <script src="{{ mix('js/lib.js') }}"></script> + </div> @endsection