Files
WitShop/app/Http/Controllers/Shop/AccountController.php
T
marcoandClaude Sonnet 4.6 41078fdc08 Initial commit: WitShop Laravel Online-Shop
- Laravel 11, Blade, Alpine.js, Tailwind CSS
- Produkt- & Kategorieverwaltung mit Varianten
- Checkout (Vorkasse + Rechnung), Session-Warenkorb
- Admin-Backend (Dashboard, Bestellungen, Kunden, CMS)
- DSGVO-konform: Cookie-Consent, Impressum, Widerruf, AGB
- PDF-Rechnung via dompdf, SMTP-Mailversand
- Kundenverwaltung mit manueller Freischaltung

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 00:34:09 +02:00

85 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers\Shop;
use App\Http\Controllers\Controller;
use App\Models\Address;
use App\Models\Order;
use Illuminate\Http\Request;
class AccountController extends Controller
{
public function index()
{
$orders = auth()->user()->orders()->latest()->take(5)->get();
return view('shop.account.index', compact('orders'));
}
public function orders()
{
$orders = auth()->user()->orders()->latest()->paginate(10);
return view('shop.account.orders', compact('orders'));
}
public function orderDetail(Order $order)
{
abort_unless($order->user_id === auth()->id(), 403);
$order->load('items', 'addresses');
return view('shop.account.order', compact('order'));
}
public function addresses()
{
$addresses = auth()->user()->addresses()->get();
return view('shop.account.addresses', compact('addresses'));
}
public function storeAddress(Request $request)
{
$data = $request->validate([
'first_name' => 'required|string|max:100',
'last_name' => 'required|string|max:100',
'company' => 'nullable|string|max:255',
'street' => 'required|string|max:255',
'zip' => 'required|string|max:10',
'city' => 'required|string|max:100',
'country' => 'required|string|max:2',
'phone' => 'nullable|string|max:50',
]);
$data['user_id'] = auth()->id();
Address::create($data);
return back()->with('success', 'Adresse gespeichert.');
}
public function destroyAddress(Address $address)
{
abort_unless($address->user_id === auth()->id(), 403);
$address->delete();
return back()->with('success', 'Adresse gelöscht.');
}
public function settings()
{
return view('shop.account.settings');
}
public function updateSettings(Request $request)
{
$data = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email,' . auth()->id(),
'password' => 'nullable|min:8|confirmed',
]);
$user = auth()->user();
$user->name = $data['name'];
$user->email = $data['email'];
if (!empty($data['password'])) {
$user->password = bcrypt($data['password']);
}
$user->save();
return back()->with('success', 'Einstellungen gespeichert.');
}
}