upgrade clean code UserManagementView

This commit is contained in:
Nils Burghardt
2025-07-13 18:30:20 +02:00
parent 0f005ca130
commit 6b57a0c5e5

View File

@@ -18,37 +18,37 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import java.util.List;
@Route(value = "admin/users", layout = MainLayout.class)
@PageTitle("Benutzerverwaltung")
@Route(value = "admin/user-management", layout = MainLayout.class)
@PageTitle("User Management")
@RolesAllowed("ROLE_ADMIN")
public class UserAdminView extends VerticalLayout {
public class UserManagementView extends VerticalLayout {
private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;
private final Grid<User> userGrid = new Grid<>(User.class, false);
private final TextField usernameField = new TextField("Benutzername");
private final PasswordField passwordField = new PasswordField("Passwort");
private final MultiSelectComboBox<String> rolesField = new MultiSelectComboBox<>("Rollen");
private final TextField usernameField = new TextField("Username");
private final PasswordField passwordField = new PasswordField("Password");
private final MultiSelectComboBox<String> rolesField = new MultiSelectComboBox<>("Roles");
private final Button saveButton = new Button("Speichern");
private final Button deleteButton = new Button("Löschen");
private final Button saveButton = new Button("Save");
private final Button deleteButton = new Button("Delete");
private User selectedUser;
public UserAdminView(UserRepository userRepository, PasswordEncoder passwordEncoder) {
public UserManagementView(UserRepository userRepository, PasswordEncoder passwordEncoder) {
this.userRepository = userRepository;
this.passwordEncoder = passwordEncoder;
add(new H2("Benutzerverwaltung"));
configureGrid();
configureForm();
refreshGrid();
add(new H2("User Management"));
setupUserGrid();
setupFormLayout();
loadUsersToGrid();
}
private void configureGrid() {
userGrid.addColumn(User::getUsername).setHeader("Benutzername");
userGrid.addColumn(user -> String.join(", ", user.getRoles())).setHeader("Rollen");
private void setupUserGrid() {
userGrid.addColumn(User::getUsername).setHeader("Username");
userGrid.addColumn(user -> String.join(", ", user.getRoles())).setHeader("Roles");
userGrid.setSelectionMode(Grid.SelectionMode.SINGLE);
userGrid.setWidthFull();
@@ -64,10 +64,18 @@ public class UserAdminView extends VerticalLayout {
add(userGrid);
}
private void configureForm() {
private void setupFormLayout() {
rolesField.setItems("ROLE_USER", "ROLE_ADMIN");
saveButton.addClickListener(e -> {
saveButton.addClickListener(e -> saveOrUpdateUser());
deleteButton.addClickListener(e -> deleteUser());
HorizontalLayout formLayout = new HorizontalLayout(usernameField, passwordField, rolesField, saveButton, deleteButton);
formLayout.setWidthFull();
add(formLayout);
}
private void saveOrUpdateUser() {
if (selectedUser != null) {
selectedUser.setUsername(usernameField.getValue());
selectedUser.setRoles(rolesField.getValue());
@@ -85,29 +93,25 @@ public class UserAdminView extends VerticalLayout {
.build();
userRepository.save(newUser);
}
clearForm();
refreshGrid();
});
deleteButton.addClickListener(e -> {
resetFormFields();
loadUsersToGrid();
}
private void deleteUser() {
if (selectedUser != null) {
userRepository.delete(selectedUser);
clearForm();
refreshGrid();
resetFormFields();
loadUsersToGrid();
}
});
HorizontalLayout formLayout = new HorizontalLayout(usernameField, passwordField, rolesField, saveButton, deleteButton);
formLayout.setWidthFull();
add(formLayout);
}
private void refreshGrid() {
private void loadUsersToGrid() {
List<User> users = userRepository.findAll();
userGrid.setItems(users);
}
private void clearForm() {
private void resetFormFields() {
selectedUser = null;
usernameField.clear();
passwordField.clear();