authorize('viewAny', User::class); $users = User::with('roles')->paginate(10); return view('users.index', compact('users')); } public function create() { $this->authorize('create', User::class); $roles = Role::all(); return view('users.create', compact('roles')); } public function store(Request $request) { $this->authorize('create', User::class); $data = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|min:8|confirmed', 'roles' => 'array' ]); $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']) ]); $user->syncRoles($data['roles'] ?? []); return redirect()->route('users.index') ->with('success', 'Usuario creado exitosamente'); } public function edit(User $user) { $this->authorize('update', $user); $roles = Role::all(); $userRoles = $user->roles->pluck('id')->toArray(); return view('users.edit', compact('user', 'roles', 'userRoles')); } public function update(UpdateUserRequest $request, User $user) { $user->update($request->validated()); $user->syncRoles($request->roles); return redirect()->route('users.index') ->with('success', 'Usuario actualizado correctamente'); } public function updatePassword(Request $request, User $user) { $this->authorize('update', $user); $request->validate([ 'password' => 'required|min:8|confirmed' ]); $user->update([ 'password' => Hash::make($request->password) ]); return redirect()->back() ->with('success', 'ContraseƱa actualizada correctamente'); } public function destroy(User $user) { $this->authorize('delete', $user); if($user->is_protected) { return redirect()->back() ->with('error', 'No se puede eliminar un usuario protegido'); } $user->delete(); return redirect()->route('users.index') ->with('success', 'Usuario eliminado correctamente'); } }