validate( [ 'name' => 'required|string|max:255', 'username' => 'required|string|max:100|unique:users,username,' . $admin->id_users . ',id_users', 'foto' => 'nullable|image|mimes:jpg,jpeg,png|max:2048', 'password' => 'nullable|min:6|confirmed', ], [ 'name.required' => 'Nama wajib diisi', 'username.required' => 'Username wajib diisi', 'username.unique' => 'Username sudah digunakan', 'foto.image' => 'File harus berupa gambar', 'foto.mimes' => 'Format foto harus JPG atau PNG', 'foto.max' => 'Ukuran foto maksimal 2 MB', 'password.min' => 'Password minimal 6 karakter', 'password.confirmed' => 'Konfirmasi password tidak cocok', ] ); // update data dasar $admin->name = $request->name; $admin->username = $request->username; // upload foto baru if ($request->hasFile('foto')) { // hapus foto lama dari storage if ($admin->foto && Storage::disk('public')->exists($admin->foto)) { Storage::disk('public')->delete($admin->foto); } // simpan foto baru $path = $request->file('foto')->store('admin', 'public'); $admin->foto = $path; } // update password jika diisi if ($request->filled('password')) { $admin->password = Hash::make($request->password); } $admin->save(); return redirect() ->route('admin.profil') ->with('success', 'Profil berhasil diperbarui'); } }