From ea24c27d6e637a40367561cb3bc1a9b40f24249a Mon Sep 17 00:00:00 2001 From: Denis Natusch Date: Mon, 20 Nov 2023 21:38:30 +0100 Subject: [PATCH] Add more attributes to user/customer Closes #42 --- src/main/java/catering/users/ProfileForm.java | 38 +++++++++++++++++++ .../java/catering/users/RegistrationForm.java | 12 ++++-- src/main/java/catering/users/User.java | 14 ++++++- .../java/catering/users/UserController.java | 23 ++++------- .../java/catering/users/UserManagement.java | 11 ++++-- src/main/resources/templates/profile.html | 4 ++ src/main/resources/templates/register.html | 4 ++ 7 files changed, 82 insertions(+), 24 deletions(-) create mode 100644 src/main/java/catering/users/ProfileForm.java diff --git a/src/main/java/catering/users/ProfileForm.java b/src/main/java/catering/users/ProfileForm.java new file mode 100644 index 0000000..148c8c3 --- /dev/null +++ b/src/main/java/catering/users/ProfileForm.java @@ -0,0 +1,38 @@ +package catering.users; + +import jakarta.validation.constraints.NotEmpty; +import java.util.Optional; +import org.springframework.validation.Errors; + +public class ProfileForm { + + private final @NotEmpty String username, address, fullName; + private final Optional password; + + public ProfileForm(String username, Optional password, String address, String fullName) { + this.username = username; + this.address = address; + this.fullName = fullName; + this.password = password; + } + + public String getUsername() { + return username; + } + + public Optional getPassword() { + return password; + } + + public String getAddress() { + return address; + } + + public String getFullName() { + return fullName; + } + + public void validate(Errors errors) { + + } +} diff --git a/src/main/java/catering/users/RegistrationForm.java b/src/main/java/catering/users/RegistrationForm.java index d1e4eb5..62f4cb9 100644 --- a/src/main/java/catering/users/RegistrationForm.java +++ b/src/main/java/catering/users/RegistrationForm.java @@ -5,13 +5,13 @@ import org.springframework.validation.Errors; public class RegistrationForm { - private final @NotEmpty String username, password, address; - - public RegistrationForm(String username, String password, String address) { + private final @NotEmpty String password, username, address, fullName; + public RegistrationForm(String username, String password, String address, String fullName) { this.username = username; - this.password = password; this.address = address; + this.fullName = fullName; + this.password = password; } public String getUsername() { @@ -26,6 +26,10 @@ public class RegistrationForm { return address; } + public String getFullName() { + return fullName; + } + public void validate(Errors errors) { } diff --git a/src/main/java/catering/users/User.java b/src/main/java/catering/users/User.java index 2d1bf24..674b429 100644 --- a/src/main/java/catering/users/User.java +++ b/src/main/java/catering/users/User.java @@ -18,7 +18,7 @@ import org.jmolecules.ddd.types.Identifier; public class User extends AbstractAggregateRoot { private @EmbeddedId UserIdentifier id = new UserIdentifier(); - private String address; + private String address, fullName; @OneToOne private UserAccount userAccount; @@ -26,8 +26,9 @@ public class User extends AbstractAggregateRoot { @SuppressWarnings("unused") private User() {} - public User(UserAccount userAccount,String address){ + public User(UserAccount userAccount, String address, String fullName){ this.address = address; + this.fullName = fullName; this.userAccount = userAccount; }; @@ -51,6 +52,15 @@ public class User extends AbstractAggregateRoot { return true; } + public String getFullName() { + return fullName; + }; + + public boolean setFullName(String name){ + fullName = name; + return true; + } + public UserAccount getUserAccount(){ return this.userAccount; } diff --git a/src/main/java/catering/users/UserController.java b/src/main/java/catering/users/UserController.java index eab74cc..4d97d8d 100644 --- a/src/main/java/catering/users/UserController.java +++ b/src/main/java/catering/users/UserController.java @@ -39,7 +39,7 @@ public class UserController { if (result.hasErrors()){ return "register"; } - userManagement.createCustomer(form.getUsername(),form.getAddress(),form.getPassword()); + userManagement.createCustomer(form.getUsername(),form.getAddress(),form.getPassword(),form.getFullName()); return "redirect:/login"; } @@ -61,25 +61,18 @@ public class UserController { @PostMapping("/profile") @PreAuthorize("isAuthenticated()") - public String editProfile(@LoggedIn UserAccount userAccount, @RequestParam String password, @RequestParam String address, @RequestParam String username) { + public String editProfile(@LoggedIn UserAccount userAccount, @Valid ProfileForm form) { User user = userManagement.getUserByAccount(userAccount).get(); - if (!username.isBlank()) { - user.setUsername(username); + user.setUsername(form.getUsername()); + user.setFullName(form.getFullName()); + user.setAddress(form.getAddress()); + if (!form.getPassword().get().isEmpty()) { + userManagement.setPassword(form.getPassword().get(), user.getUserAccount()); } - if (!address.isBlank()) { - user.setAddress(address); - } - if (!password.isBlank()) { - userManagement.setPassword(password, user.getUserAccount()); - } - userManagement.save(user); - if (!username.isBlank()){ - return "redirect:/logout"; - } - + // by default the user gets logged out by salespoint after changing the user name return "redirect:/profile"; } diff --git a/src/main/java/catering/users/UserManagement.java b/src/main/java/catering/users/UserManagement.java index a9bec49..8e33254 100644 --- a/src/main/java/catering/users/UserManagement.java +++ b/src/main/java/catering/users/UserManagement.java @@ -23,12 +23,17 @@ public class UserManagement { this.userAccounts = userAccounts; } - public User createCustomer(String name, String address, String password) { - return users.save(new User(userAccounts.create(name,UnencryptedPassword.of(password),Role.of("CUSTOMER")), address)); + public User createCustomer( + String username, + String address, + String password, + String fullName + ) { + return users.save(new User(userAccounts.create(username,UnencryptedPassword.of(password),Role.of("CUSTOMER")),address,fullName)); } public User createAdmin(String name, String address, String password) { - return users.save(new User(userAccounts.create(name,UnencryptedPassword.of(password),Role.of("ADMIN")), address)); + return users.save(new User(userAccounts.create(name,UnencryptedPassword.of(password),Role.of("ADMIN")), address, name)); } public User save(User user) { diff --git a/src/main/resources/templates/profile.html b/src/main/resources/templates/profile.html index 0e96246..927e9ac 100644 --- a/src/main/resources/templates/profile.html +++ b/src/main/resources/templates/profile.html @@ -20,6 +20,10 @@

Nutzerinformationen

+
+ + +
diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html index 340b0c6..4263a81 100644 --- a/src/main/resources/templates/register.html +++ b/src/main/resources/templates/register.html @@ -14,6 +14,10 @@
+
+ + +