orderBy('name')->paginate(20); return view('admin.users.index', compact('users')); } public function create(): View { $roles = Role::orderBy('name')->get(); return view('admin.users.create', compact('roles')); } public function store(Request $request): RedirectResponse { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', Password::min(8)->mixedCase()->numbers()], 'role' => ['required', 'string', Rule::exists('roles', 'name')], ]); $user = User::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => Hash::make($validated['password']), ]); $user->assignRole($validated['role']); return redirect() ->route('admin.users.index') ->with('success', "Benutzer \"{$user->name}\" wurde angelegt."); } public function edit(User $user): View { $roles = Role::orderBy('name')->get(); return view('admin.users.edit', compact('user', 'roles')); } public function update(Request $request, User $user): RedirectResponse { $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], 'password' => ['nullable', Password::min(8)->mixedCase()->numbers()], 'role' => ['required', 'string', Rule::exists('roles', 'name')], ]); $user->update([ 'name' => $validated['name'], 'email' => $validated['email'], ]); if (!empty($validated['password'])) { $user->update(['password' => Hash::make($validated['password'])]); } $user->syncRoles([$validated['role']]); return redirect() ->route('admin.users.index') ->with('success', "Benutzer \"{$user->name}\" wurde aktualisiert."); } public function destroy(User $user): RedirectResponse { if ($user->id === auth()->id()) { return redirect() ->route('admin.users.index') ->with('error', 'Du kannst deinen eigenen Account nicht löschen.'); } $name = $user->name; $user->delete(); return redirect() ->route('admin.users.index') ->with('success', "Benutzer \"{$name}\" wurde gelöscht."); } }