2 Commits

Author SHA1 Message Date
Nils Burghardt
6b57a0c5e5 upgrade clean code UserManagementView 2025-07-13 18:30:20 +02:00
Nils Burghardt
0f005ca130 Remove DB file from Git and add to .gitignore 2025-07-13 18:28:10 +02:00
3 changed files with 53 additions and 48 deletions

1
.gitignore vendored
View File

@@ -93,3 +93,4 @@ coverage/
*.bak
*.tmpdata/*.mv.db
src/main/frontend/generated/
/data/*.mv.db

Binary file not shown.

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,50 +64,54 @@ public class UserAdminView extends VerticalLayout {
add(userGrid);
}
private void configureForm() {
private void setupFormLayout() {
rolesField.setItems("ROLE_USER", "ROLE_ADMIN");
saveButton.addClickListener(e -> {
if (selectedUser != null) {
selectedUser.setUsername(usernameField.getValue());
selectedUser.setRoles(rolesField.getValue());
if (!passwordField.isEmpty()) {
selectedUser.setPassword(passwordEncoder.encode(passwordField.getValue()));
}
userRepository.save(selectedUser);
} else {
User newUser = User.builder()
.username(usernameField.getValue())
.roles(rolesField.getValue())
.enabled(true)
.locked(false)
.password(passwordEncoder.encode(passwordField.getValue()))
.build();
userRepository.save(newUser);
}
clearForm();
refreshGrid();
});
deleteButton.addClickListener(e -> {
if (selectedUser != null) {
userRepository.delete(selectedUser);
clearForm();
refreshGrid();
}
});
saveButton.addClickListener(e -> saveOrUpdateUser());
deleteButton.addClickListener(e -> deleteUser());
HorizontalLayout formLayout = new HorizontalLayout(usernameField, passwordField, rolesField, saveButton, deleteButton);
formLayout.setWidthFull();
add(formLayout);
}
private void refreshGrid() {
private void saveOrUpdateUser() {
if (selectedUser != null) {
selectedUser.setUsername(usernameField.getValue());
selectedUser.setRoles(rolesField.getValue());
if (!passwordField.isEmpty()) {
selectedUser.setPassword(passwordEncoder.encode(passwordField.getValue()));
}
userRepository.save(selectedUser);
} else {
User newUser = User.builder()
.username(usernameField.getValue())
.roles(rolesField.getValue())
.enabled(true)
.locked(false)
.password(passwordEncoder.encode(passwordField.getValue()))
.build();
userRepository.save(newUser);
}
resetFormFields();
loadUsersToGrid();
}
private void deleteUser() {
if (selectedUser != null) {
userRepository.delete(selectedUser);
resetFormFields();
loadUsersToGrid();
}
}
private void loadUsersToGrid() {
List<User> users = userRepository.findAll();
userGrid.setItems(users);
}
private void clearForm() {
private void resetFormFields() {
selectedUser = null;
usernameField.clear();
passwordField.clear();