shouldReport($exception)) { $this->sendEmail($exception); } parent::report($exception); } /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Throwable $exception * @return \Symfony\Component\HttpFoundation\Response * * @throws \Throwable */ public function render($request, Throwable $exception) { return parent::render($request, $exception); } /** * Convert an authentication exception into a response. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Auth\AuthenticationException $exception * @return \Symfony\Component\HttpFoundation\Response */ protected function unauthenticated($request, \Illuminate\Auth\AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['message' => $exception->getMessage()], 401); } try { // HOTFIX: DomainContext temporär deaktiviert // TODO: Nach Claude v2 Implementation wieder aktivieren // $context = app(\App\Domain\DomainContext::class); // $loginRoute = match($context->type) { // 'portal' => 'portal.login.form', // 'crm' => 'login', // CRM hat eine eigene login route // default => 'login' // }; // Temporär: Verwende Standard-Login-Route return redirect()->guest(route('login')); } catch (\Exception $e) { // Fallback: Weiterleitung zur Hauptdomain return redirect()->guest('https://' . config('app.domain') . config('app.tld_care') . '/login'); } } public function sendEmail(Throwable $exception) { try { $e = FlattenException::create($exception); $handler = new HtmlErrorRenderer(true); // boolean, true raises debug flag... $css = $handler->getStylesheet(); $content = $handler->getBody($e); //Mail::to(config('app.exception_mail'))->send(new MailContact($contact)); // Verwende normale Mail-Klasse statt Facade, um Probleme bei der Initialisierung zu vermeiden $to = config('app.exception_mail'); $subject = 'mivita Exception: ' . \Request::fullUrl(); if ($to) { \Mail::send('emails.exception', compact('css', 'content'), function ($message) use ($to, $subject) { $message ->to($to) ->subject($subject) ; }); } } catch (Throwable $ex) { // Einfache Fehlerprotokollierung ohne Facade file_put_contents( storage_path('logs/laravel-' . date('Y-m-d') . '.log'), '[' . date('Y-m-d H:i:s') . '] exception-handler-error: ' . $ex->getMessage() . "\n", FILE_APPEND ); } } }