account) { abort(404); } if (! Request::get('profile_image_consent')) { \Session()->flash('alert-danger', __('account.profile_image_consent_required')); return redirect(route('user_edit')); } try { $image = Slim::getImages('images')[0]; if (isset($image['output']['data'])) { $stored = Slim::storeCroppedImage($image, 'images/profile'); if ($stored === null) { \Session()->flash('alert-danger', 'File is not jpg or png!'); return redirect(route('user_edit')); } if ($user->account->profile_image) { \Storage::disk('public')->delete('images/profile/'.$user->account->profile_image); } $user->account->profile_image = $stored['filename']; $user->account->save(); \Session()->flash('alert-success', __('msg.file_uploaded')); return redirect(route('user_edit')); } \Session()->flash('alert-danger', __('msg.file_empty')); return redirect(route('user_edit')); } catch (\Exception $e) { // Details ins Log, nicht ins UI — die Exception enthält Serverpfade. \Log::warning('ProfileImageController: Upload fehlgeschlagen für User '.$user->id.': '.$e->getMessage()); \Session()->flash('alert-danger', __('msg.file_upload_failed')); return redirect(route('user_edit')); } } public function deleteImage(): RedirectResponse { $user = Auth::user(); if ($user->account?->profile_image) { \Storage::disk('public')->delete('images/profile/'.$user->account->profile_image); $user->account->profile_image = null; $user->account->save(); \Session()->flash('alert-success', __('msg.file_deleted')); } return redirect(route('user_edit')); } }