<?php namespace App\Http\Controllers; use App\Models\Device; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Gate; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Log; class DeviceController extends Controller { public function index() { return view('devices.index', [ 'devices' => Device::all() ]); } public function create() { $this->authorize('admin-only'); return view('devices.create'); } public function store(Request $request) { $this->authorize('admin-only'); $formFields = $request->validate([ 'title' => 'required', 'device_type' => 'required', 'description' => 'required', 'accessories' => 'required', 'rz_username_buyer' => ['required', Rule::unique('devices', 'device_id')], 'serial_number' => 'required', 'image_url' => 'required', ]); Device::create($formFields); Log::info('Device saved successfully'); return redirect('/devices'); } public function edit(Device $device) { $this->authorize('admin-only'); return view('devices.edit', ['device' => $device]); } public function update(Device $device, Request $request) { $this->authorize('admin-only'); $formFields = $request->validate([ 'title' => 'required', 'device_type' => 'required', 'description' => 'required', 'accessories' => 'required', 'rz_username_buyer' => 'required', 'serial_number' => 'required', 'image_url' => 'required', ]); $device->update($formFields); Log::info('Device updated successfully'); return back(); } public function destroy(Device $device): RedirectResponse { $this->authorize('admin-only'); $device->delete(); Log::info('Device deleted successfully'); return redirect('devices'); } public function show(Device $device) { return view('devices.show', [ 'device' => $device ]); } }