user(); if (! $admin) { return redirect()->route('admin.login'); } return view('admin.settings.index', compact('admin')); } /** * Update profile information */ public function updateProfile(Request $request) { /** @var \App\Models\Admin|null $admin */ $admin = Auth::guard('admin')->user(); if (! $admin) { return response()->json([ 'success' => false, 'message' => 'Unauthorized' ], 401); } $validator = Validator::make($request->all(), [ 'nama_lengkap' => 'required|string|max:255', 'email' => 'required|email|unique:admins,email,' . $admin->id, 'nomor_telepon' => 'nullable|string|max:15', 'foto_profil' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', ], [ 'nama_lengkap.required' => 'Nama lengkap harus diisi', 'email.required' => 'Email harus diisi', 'email.email' => 'Format email tidak valid', 'email.unique' => 'Email sudah digunakan', 'foto_profil.image' => 'File harus berupa gambar', 'foto_profil.mimes' => 'Format gambar harus jpeg, png, jpg, atau gif', 'foto_profil.max' => 'Ukuran gambar maksimal 2MB', ]); if ($validator->fails()) { return response()->json([ 'success' => false, 'message' => 'Validasi gagal', 'errors' => $validator->errors() ], 422); } try { $data = [ 'nama_lengkap' => $request->nama_lengkap, 'email' => $request->email, 'nomor_telepon' => $request->nomor_telepon, ]; if ($request->hasFile('foto_profil')) { if ($admin->foto_profil && file_exists(public_path('images/photo/' . $admin->foto_profil))) { unlink(public_path('images/photo/' . $admin->foto_profil)); } $file = $request->file('foto_profil'); $fileName = time() . '_' . uniqid() . '.' . $file->getClientOriginalExtension(); $file->move(public_path('images/photo'), $fileName); $data['foto_profil'] = $fileName; } $admin->fill($data); $admin->save(); return response()->json([ 'success' => true, 'message' => 'Profil berhasil diperbarui!', 'admin' => [ 'nama_lengkap' => $admin->nama_lengkap, 'email' => $admin->email, 'foto_profil' => $admin->foto_profil ? asset('images/photo/' . $admin->foto_profil) : null, ] ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Terjadi kesalahan: ' . $e->getMessage() ], 500); } } /** * Update password */ public function updatePassword(Request $request) { /** @var \App\Models\Admin|null $admin */ $admin = Auth::guard('admin')->user(); if (! $admin) { return response()->json([ 'success' => false, 'message' => 'Unauthorized' ], 401); } $validator = Validator::make($request->all(), [ 'current_password' => 'required', 'new_password' => 'required|min:6|confirmed', ], [ 'current_password.required' => 'Password saat ini harus diisi', 'new_password.required' => 'Password baru harus diisi', 'new_password.min' => 'Password baru minimal 6 karakter', 'new_password.confirmed' => 'Konfirmasi password tidak cocok', ]); if ($validator->fails()) { return response()->json([ 'success' => false, 'message' => 'Validasi gagal', 'errors' => $validator->errors() ], 422); } if (!Hash::check($request->current_password, $admin->password)) { return response()->json([ 'success' => false, 'message' => 'Password saat ini salah!' ], 422); } try { $admin->password = Hash::make($request->new_password); $admin->save(); return response()->json([ 'success' => true, 'message' => 'Password berhasil diperbarui!' ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'message' => 'Terjadi kesalahan: ' . $e->getMessage() ], 500); } } }