validate([ 'nama_lengkap' => 'required|string|max:255', 'username' => 'required|string|alpha_dash|unique:users,username,' . $user->id, 'alamat' => 'nullable|string', 'password_baru' => 'nullable|min:8|confirmed', ], [ 'username.unique' => 'Username sudah digunakan.', 'password_baru.confirmed' => 'Konfirmasi password baru tidak cocok.' ]); // Update data dasar $user->nama_lengkap = $request->nama_lengkap; $user->username = $request->username; $user->alamat = $request->alamat; // Update password jika diisi if ($request->filled('password_baru')) { $user->password = Hash::make($request->password_baru); } $user->save(); return back()->with('success', 'Profil Anda berhasil diperbarui!'); } /** * Halaman Account Settings (PIN Pakar) */ public function settings() { $user = Auth::user(); $pinPakar = Pengaturan::where('nama_pengaturan', 'pin_pakar')->first(); return view('account.settings', compact('user', 'pinPakar')); } /** * Update PIN Pakar (Dibatasi hanya untuk Admin) */ public function updatePin(Request $request) { // Proteksi tambahan: hanya role admin yang boleh ubah PIN if (Auth::user()->role !== 'admin') { return back()->with('error', 'Hanya Admin yang dapat mengubah PIN Perbandingan.'); } $request->validate([ 'pin_baru' => 'required|numeric|digits:6', ], [ 'pin_baru.digits' => 'PIN harus berupa 6 digit angka.' ]); // PERBAIKAN: Gunakan updateOrCreate agar otomatis membuat data jika belum ada Pengaturan::updateOrCreate( ['nama_pengaturan' => 'pin_pakar'], // Kriteria pencarian ['nilai_pengaturan' => $request->pin_baru] // Data yang diisi/diupdate ); return back()->with('success', 'PIN Keamanan Pakar berhasil diperbarui!'); } }