diff --git a/src/main/java/de/nilzbu/mytimetracker/ui/view/UserAdminView.java b/src/main/java/de/nilzbu/mytimetracker/ui/view/UserManagementView.java similarity index 53% rename from src/main/java/de/nilzbu/mytimetracker/ui/view/UserAdminView.java rename to src/main/java/de/nilzbu/mytimetracker/ui/view/UserManagementView.java index b19ae3e..71840c5 100644 --- a/src/main/java/de/nilzbu/mytimetracker/ui/view/UserAdminView.java +++ b/src/main/java/de/nilzbu/mytimetracker/ui/view/UserManagementView.java @@ -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 userGrid = new Grid<>(User.class, false); - private final TextField usernameField = new TextField("Benutzername"); - private final PasswordField passwordField = new PasswordField("Passwort"); - private final MultiSelectComboBox rolesField = new MultiSelectComboBox<>("Rollen"); + private final TextField usernameField = new TextField("Username"); + private final PasswordField passwordField = new PasswordField("Password"); + private final MultiSelectComboBox 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 users = userRepository.findAll(); userGrid.setItems(users); } - private void clearForm() { + private void resetFormFields() { selectedUser = null; usernameField.clear(); passwordField.clear();