From a95d579e37f34cc8345479efa2fe2992cf80c84d Mon Sep 17 00:00:00 2001 From: Sven Carstensen Date: Thu, 28 Aug 2025 10:57:19 +0200 Subject: [PATCH] Erweiterungen --- .../de/assecutor/votianlt/model/AppUser.java | 3 ++ .../votianlt/pages/view/AddAppUserView.java | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/main/java/de/assecutor/votianlt/model/AppUser.java b/src/main/java/de/assecutor/votianlt/model/AppUser.java index b3a8592..e9b22e9 100644 --- a/src/main/java/de/assecutor/votianlt/model/AppUser.java +++ b/src/main/java/de/assecutor/votianlt/model/AppUser.java @@ -34,6 +34,9 @@ public class AppUser { @org.springframework.data.mongodb.core.index.Indexed(unique = true) private String email; + @Field("password") + private String password; + @Field("geraet") private String geraet; diff --git a/src/main/java/de/assecutor/votianlt/pages/view/AddAppUserView.java b/src/main/java/de/assecutor/votianlt/pages/view/AddAppUserView.java index cbcb43e..c83d6b4 100644 --- a/src/main/java/de/assecutor/votianlt/pages/view/AddAppUserView.java +++ b/src/main/java/de/assecutor/votianlt/pages/view/AddAppUserView.java @@ -11,6 +11,7 @@ import com.vaadin.flow.component.notification.Notification; import com.vaadin.flow.component.orderedlayout.FlexComponent; import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout; +import com.vaadin.flow.component.textfield.PasswordField; import com.vaadin.flow.component.textfield.TextField; import com.vaadin.flow.data.binder.Binder; import com.vaadin.flow.data.binder.ValidationException; @@ -39,6 +40,8 @@ public class AddAppUserView extends VerticalLayout { private final TextField phoneField = new TextField("Telefon (Mobil)"); private final TextField appCodeField = new TextField("App-Code"); private final TextField emailField = new TextField("E-Mail-Adresse"); + private final PasswordField passwordField = new PasswordField("Passwort"); + private final PasswordField confirmPasswordField = new PasswordField("Passwort wiederholen"); private final ComboBox deviceComboBox = new ComboBox<>("Endgerät"); @Autowired @@ -101,6 +104,10 @@ public class AddAppUserView extends VerticalLayout { phoneField.setWidthFull(); appCodeField.setWidthFull(); emailField.setWidthFull(); + passwordField.setWidthFull(); + passwordField.setRequired(true); + confirmPasswordField.setWidthFull(); + confirmPasswordField.setRequired(true); // Configure device dropdown // Geräteauswahl vorbereiten @@ -116,6 +123,8 @@ public class AddAppUserView extends VerticalLayout { formLayout.add(phoneField); formLayout.add(appCodeField); formLayout.add(emailField); + formLayout.add(passwordField); + formLayout.add(confirmPasswordField); formLayout.add(deviceComboBox); contentContainer.add(formLayout); @@ -144,6 +153,19 @@ public class AddAppUserView extends VerticalLayout { binder.forField(phoneField).bind(AppUser::getTelefon, AppUser::setTelefon); binder.forField(appCodeField).bind(AppUser::getAppCode, AppUser::setAppCode); binder.forField(emailField).bind(AppUser::getEmail, AppUser::setEmail); + binder.forField(passwordField) + .asRequired("Passwort ist erforderlich") + .bind(AppUser::getPassword, AppUser::setPassword); + + // Confirm password field validation + binder.forField(confirmPasswordField) + .asRequired("Passwort wiederholen ist erforderlich") + .withValidator(confirmPassword -> confirmPassword.equals(passwordField.getValue()), + "Passwörter stimmen nicht überein") + .bind( + appUser -> "", // Dummy getter - this field is not stored + (appUser, value) -> {} // Dummy setter - this field is not stored + ); binder.forField(deviceComboBox) .asRequired("Bitte ein Gerät auswählen") .bind( @@ -204,6 +226,12 @@ public class AddAppUserView extends VerticalLayout { // Fill email field emailField.setValue("max.mustermann@example.com"); + // Fill password field + passwordField.setValue("testpassword123"); + + // Fill confirm password field + confirmPasswordField.setValue("testpassword123"); + // Set device to iPhone // deviceComboBox.setValue("iPhone"); // This line is removed as deviceComboBox is now a ComboBox }