role !== 'admin') { return redirect('/')->with('error', 'Anda tidak memiliki akses ke halaman tersebut.'); } $users = User::orderBy('id', 'asc')->paginate(10); // Format nama setiap user $users->getCollection()->transform(function ($user) { $user->name = ucwords(strtolower($user->name)); return $user; }); return view('admin.users.index', compact('users')); } /** * Menampilkan detail pengguna. * * @param \App\Models\User $user * @return \Illuminate\View\View */ public function show(User $user) { // Cek apakah pengguna adalah admin if (Auth::user()->role !== 'admin') { return redirect('/')->with('error', 'Anda tidak memiliki akses ke halaman tersebut.'); } $user->name = ucwords(strtolower($user->name)); return view('admin.users.show', compact('user')); } /** * Menghapus pengguna. * * @param \App\Models\User $user * @return \Illuminate\Http\RedirectResponse */ public function destroy(User $user) { // Cek apakah pengguna adalah admin if (Auth::user()->role !== 'admin') { return redirect('/')->with('error', 'Anda tidak memiliki akses ke halaman tersebut.'); } // Tidak bisa menghapus diri sendiri if (Auth::id() === $user->id) { return back()->with('error', 'Anda tidak dapat menghapus akun Anda sendiri.'); } $user->delete(); return redirect()->route('admin.users.index') ->with('success', 'Pengguna berhasil dihapus!'); } public function create() { // Cek apakah pengguna adalah admin if (Auth::user()->role !== 'admin') { return redirect('/')->with('error', 'Anda tidak memiliki akses ke halaman tersebut.'); } return view('admin.users.create'); } /** * Menyimpan user baru. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function store(Request $request) { // Cek apakah pengguna adalah admin if (Auth::user()->role !== 'admin') { return redirect('/')->with('error', 'Anda tidak memiliki akses ke halaman tersebut.'); } $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', 'role' => 'required|in:admin,user', ]); $user = User::create([ 'name' => ucwords(strtolower($request->name)), 'email' => $request->email, 'password' => Hash::make($request->password), 'role' => $request->role, ]); return redirect()->route('admin.users.index') ->with('success', 'Pengguna berhasil ditambahkan!'); } /** * Menampilkan form edit user. * * @param \App\Models\User $user * @return \Illuminate\View\View */ public function edit(User $user) { // Cek apakah pengguna adalah admin if (Auth::user()->role !== 'admin') { return redirect('/')->with('error', 'Anda tidak memiliki akses ke halaman tersebut.'); } $user->name = ucwords(strtolower($user->name)); return view('admin.users.edit', compact('user')); } /** * Memperbarui data user. * * @param \Illuminate\Http\Request $request * @param \App\Models\User $user * @return \Illuminate\Http\RedirectResponse */ public function update(Request $request, User $user) { // Cek apakah pengguna adalah admin if (Auth::user()->role !== 'admin') { return redirect('/')->with('error', 'Anda tidak memiliki akses ke halaman tersebut.'); } $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users,email,' . $user->id, 'password' => 'nullable|string|min:8|confirmed', 'role' => 'required|in:admin,user', ]); $data = [ 'name' => ucwords(strtolower($request->name)), 'email' => $request->email, 'role' => $request->role, ]; // Update password hanya jika diisi if ($request->filled('password')) { $data['password'] = Hash::make($request->password); } $user->update($data); return redirect()->route('admin.users.index') ->with('success', 'Pengguna berhasil diperbarui!'); } }