service = $service; } /** * Handle avatar upload request. */ public function upload(Request $request) { $user = Auth::user(); if (!$user) { return response()->json(['error' => 'Unauthorized'], 401); } $rules = [ 'avatar' => 'required|image|max:2048|mimes:jpg,jpeg,png,webp', ]; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } $file = $request->file('avatar'); try { $hash = $this->service->storeFromUploadedFile($user->id, $file); return response()->json(['success' => true, 'hash' => $hash], 200); } catch (\Exception $e) { return response()->json(['error' => 'Processing failed', 'message' => $e->getMessage()], 500); } } }