middleware('auth'); // Middleware untuk method yang membutuhkan akses admin $this->middleware('admin')->only(['create', 'store', 'edit', 'update', 'destroy']); } /** * Menampilkan halaman daftar pengguna * * @return \Illuminate\View\View */ public function index() { $pengguna = User::where('tipe_pengguna', 'admin')->get(); $users = User::where('tipe_pengguna', 'user')->get(); $activeTab = 'admin'; // Menandai tab admin sebagai aktif return view('pengguna', compact('pengguna', 'users', 'activeTab')); } /** * Menampilkan form tambah pengguna * * @return \Illuminate\View\View */ public function create() { return view('tambah-pengguna'); } /** * Menyimpan pengguna baru * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function store(Request $request) { try { DB::beginTransaction(); $validated = $request->validate([ 'nama' => 'required|string|max:255', 'username' => 'required|string|max:255|unique:users', 'email' => 'required|string|email|max:255|unique:users', 'no_telp' => 'required|string|max:20', 'alamat' => 'required|string', 'password' => 'required|string|min:8' ]); $validated['password'] = Hash::make($validated['password']); $validated['tipe_pengguna'] = 'admin'; User::create($validated); DB::commit(); return redirect()->route('pengguna')->with('success', 'Admin berhasil ditambahkan'); } catch (\Exception $e) { DB::rollback(); Log::error('Error saat menambah admin: ' . $e->getMessage()); return redirect()->back()->with('error', 'Terjadi kesalahan saat menambah admin')->withInput(); } } /** * Menghapus pengguna * * @param int $id * @return \Illuminate\Http\RedirectResponse */ public function destroy($id) { try { $user = User::findOrFail($id); // Pastikan tidak menghapus diri sendiri if ($user->id === auth()->id()) { return redirect()->back()->with('error', 'Anda tidak dapat menghapus akun Anda sendiri'); } // Pastikan yang dihapus adalah admin if ($user->tipe_pengguna !== 'admin') { return redirect()->back()->with('error', 'Anda hanya dapat menghapus akun admin melalui menu ini'); } $user->delete(); return redirect()->route('pengguna')->with('success', 'Admin berhasil dihapus'); } catch (\Exception $e) { Log::error('Error saat menghapus admin: ' . $e->getMessage()); return redirect()->back()->with('error', 'Terjadi kesalahan saat menghapus admin'); } } }