paginate(10); return view('admin.users.index', compact('users')); } /** * Show the form for creating a new user */ public function create() { $roles = Role::all(); return view('admin.users.create', compact('roles')); } /** * Store a newly created user */ public function store(Request $request) { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'username' => ['required', 'string', 'max:255', 'unique:users'], 'password' => [ 'required', 'string', 'min:8', 'confirmed', 'regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/', ], 'roles' => ['array'], 'roles.*' => ['exists:roles,name'], ]); $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'username' => $validated['username'], 'password' => Hash::make($validated['password']), ]); if (!empty($validated['roles'])) { $user->assignRole($validated['roles']); } return redirect()->route('admin.users.index') ->with('success', 'Pengguna berhasil ditambahkan.'); } /** * Display the specified user */ public function show(User $user) { $user->load('roles', 'permissions'); return view('admin.users.show', compact('user')); } /** * Show the form for editing the specified user */ public function edit(User $user) { $roles = Role::all(); $userRoles = $user->roles->pluck('name')->toArray(); return view('admin.users.edit', compact('user', 'roles', 'userRoles')); } /** * Update the specified user */ public function update(Request $request, User $user) { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], 'username' => ['required', 'string', 'max:255', Rule::unique('users')->ignore($user->id)], 'password' => [ 'nullable', 'string', 'min:8', 'confirmed', 'regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/', ], 'roles' => ['array'], 'roles.*' => ['exists:roles,name'], ]); $user->update([ 'name' => $validated['name'], 'email' => $validated['email'], 'username' => $validated['username'], ]); // Update password only if provided if (!empty($validated['password'])) { $user->update([ 'password' => Hash::make($validated['password']), ]); } // Sync roles if (isset($validated['roles'])) { $user->syncRoles($validated['roles']); } else { $user->syncRoles([]); } return redirect()->route('admin.users.index') ->with('success', 'Pengguna berhasil diperbarui.'); } /** * Remove the specified user */ public function destroy(User $user) { // Prevent deleting current user if ($user->id === auth()->id()) { return redirect()->route('admin.users.index') ->with('error', 'Anda tidak dapat menghapus akun sendiri.'); } $user->delete(); return redirect()->route('admin.users.index') ->with('success', 'Pengguna berhasil dihapus.'); } }