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.'); } }