paginate(10); return view('users.index', compact('users')); } /** * Formularz dodawania nowego użytkownika. * Wykorzystuje gotowy widok z Breeze (auth.register). */ public function create() { $roles = Role::all(); return view('auth.register', compact('roles')); } /** * Zapis nowego użytkownika i przypisanie ról. */ public function store(Request $request) { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'surname' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', Rule::unique('users')], 'password' => ['required', 'confirmed', Rules\Password::defaults()], 'role' => ['required', 'string', 'exists:roles,name'], // Zmiana z roles na role ]); $user = User::create([ 'name' => $validated['name'], 'surname' => $validated['surname'], 'email' => $validated['email'], 'password' => Hash::make($validated['password']), ]); // Przypisanie wybranej roli $user->assignRole($validated['role']); return redirect()->route('users.index')->with('status', 'Użytkownik został pomyślnie dodany.'); } /** * Formularz edycji wybranego użytkownika. */ public function edit(User $user) { $roles = Role::all(); return view('users.edit', compact('user', 'roles')); } /** * Zapis zmian danych oraz ról użytkownika. */ public function update(Request $request, User $user) { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'surname' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], 'roles' => ['nullable', 'array'], 'roles.*' => ['string', 'exists:roles,name'], ]); $user->update([ 'name' => $validated['name'], 'surname' => $validated['surname'], 'email' => $validated['email'], ]); $user->syncRoles($request->input('roles', [])); return redirect()->route('users.index')->with('status', 'Użytkownik został zaktualizowany.'); } /** * Usuwanie użytkownika. */ public function destroy(User $user) { // Blokada usunięcia samego siebie if (auth()->id() === $user->id) { return redirect()->back()->with('error', 'Nie możesz usunąć własnego konta!'); } $user->delete(); return redirect()->route('users.index')->with('status', 'Użytkownik został usunięty.'); } }