From b46cb3ce2f4874e06993d05f81f16fb180f69c18 Mon Sep 17 00:00:00 2001 From: "Lam, Doris T (319E)" Date: Thu, 3 Dec 2020 10:52:56 -0800 Subject: [PATCH 1/4] add get users --- .../openmbee/mms/data/domains/global/Base.java | 2 +- .../controllers/LocalUserController.java | 10 ++++++++++ .../security/UserDetailsServiceImpl.java | 5 +++++ .../mms/localuser/security/UsersResponse.java | 17 +++++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 localuser/src/main/java/org/openmbee/mms/localuser/security/UsersResponse.java diff --git a/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java b/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java index 3adaff6a2..f4f372c77 100644 --- a/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java +++ b/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java @@ -15,7 +15,7 @@ import org.springframework.data.annotation.LastModifiedDate; @MappedSuperclass -@JsonIgnoreProperties(value = {"created", "modified"}, allowGetters = true) +@JsonIgnoreProperties(value = {"created", "modified", "id"}) public abstract class Base implements Serializable { private static final long serialVersionUID = 8389104517465359723L; diff --git a/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java b/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java index 524b44a9f..7627cbeae 100644 --- a/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java +++ b/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java @@ -8,11 +8,13 @@ import org.openmbee.mms.core.utils.AuthenticationUtils; import org.openmbee.mms.localuser.security.UserCreateRequest; import org.openmbee.mms.localuser.security.UserDetailsServiceImpl; +import org.openmbee.mms.localuser.security.UsersResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -40,6 +42,14 @@ public UserCreateRequest createUser(@RequestBody UserCreateRequest req) { throw new BadRequestException("User already exists"); } + @GetMapping(value = "/users") + @PreAuthorize(AuthorizationConstants.IS_MMSADMIN) + public UsersResponse getUsers() { + UsersResponse res = new UsersResponse(); + res.setUsers(userDetailsService.getUsers()); + return res; + } + @PostMapping(value = "/password", consumes = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("isAuthenticated()") public Object updatePassword(@RequestBody UserCreateRequest req, diff --git a/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java b/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java index baef8bf6b..e8c560ee3 100644 --- a/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java +++ b/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java @@ -1,5 +1,6 @@ package org.openmbee.mms.localuser.security; +import java.util.List; import java.util.Optional; import org.openmbee.mms.core.exceptions.ForbiddenException; @@ -39,6 +40,10 @@ public UserDetailsImpl loadUserByUsername(String username) throws UsernameNotFou return new UserDetailsImpl(user.get()); } + public List getUsers() { + return userRepository.findAll(); + } + @Transactional public User register(String username, String password, boolean isAdmin) { User user = new User(); diff --git a/localuser/src/main/java/org/openmbee/mms/localuser/security/UsersResponse.java b/localuser/src/main/java/org/openmbee/mms/localuser/security/UsersResponse.java new file mode 100644 index 000000000..f119e7cf8 --- /dev/null +++ b/localuser/src/main/java/org/openmbee/mms/localuser/security/UsersResponse.java @@ -0,0 +1,17 @@ +package org.openmbee.mms.localuser.security; + +import java.util.List; +import org.openmbee.mms.data.domains.global.User; + +public class UsersResponse { + + private List users; + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } +} From f5646f8f56fde753b1e14929dab69fc865ffca56 Mon Sep 17 00:00:00 2001 From: "Lam, Doris T (319E)" Date: Thu, 3 Dec 2020 11:01:20 -0800 Subject: [PATCH 2/4] fill out rest of user info on create user --- .../controllers/LocalUserController.java | 2 +- .../localuser/security/UserCreateRequest.java | 27 +++++++++++++++++++ .../security/UserDetailsServiceImpl.java | 11 +++++--- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java b/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java index 7627cbeae..eda199b8e 100644 --- a/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java +++ b/localuser/src/main/java/org/openmbee/mms/localuser/controllers/LocalUserController.java @@ -36,7 +36,7 @@ public UserCreateRequest createUser(@RequestBody UserCreateRequest req) { try { userDetailsService.loadUserByUsername(req.getUsername()); } catch (UsernameNotFoundException e) { - userDetailsService.register(req.getUsername(), req.getPassword(), req.isAdmin()); + userDetailsService.register(req); return req; } throw new BadRequestException("User already exists"); diff --git a/localuser/src/main/java/org/openmbee/mms/localuser/security/UserCreateRequest.java b/localuser/src/main/java/org/openmbee/mms/localuser/security/UserCreateRequest.java index 48e50111b..485096140 100644 --- a/localuser/src/main/java/org/openmbee/mms/localuser/security/UserCreateRequest.java +++ b/localuser/src/main/java/org/openmbee/mms/localuser/security/UserCreateRequest.java @@ -8,8 +8,35 @@ public class UserCreateRequest implements Serializable { private String username; private String password; + private String email; + private String firstname; + private String lastname; private boolean admin; + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + public String getUsername() { return this.username; } diff --git a/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java b/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java index e8c560ee3..aaa4c13e9 100644 --- a/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java +++ b/localuser/src/main/java/org/openmbee/mms/localuser/security/UserDetailsServiceImpl.java @@ -45,12 +45,15 @@ public List getUsers() { } @Transactional - public User register(String username, String password, boolean isAdmin) { + public User register(UserCreateRequest req) { User user = new User(); - user.setUsername(username); - user.setPassword(passwordEncoder.encode(password)); + user.setEmail(req.getEmail()); + user.setFirstName(req.getFirstname()); + user.setLastName(req.getLastname()); + user.setUsername(req.getUsername()); + user.setPassword(passwordEncoder.encode(req.getPassword())); user.setEnabled(true); - user.setAdmin(isAdmin); + user.setAdmin(req.isAdmin()); return userRepository.save(user); } From e2fc643638a4678554a96e74eb90f8069a1439e9 Mon Sep 17 00:00:00 2001 From: "Lam, Doris T (319E)" Date: Thu, 3 Dec 2020 11:09:46 -0800 Subject: [PATCH 3/4] fix --- .../openmbee/mms/localuser/config/AuthProviderConfig.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/localuser/src/main/java/org/openmbee/mms/localuser/config/AuthProviderConfig.java b/localuser/src/main/java/org/openmbee/mms/localuser/config/AuthProviderConfig.java index 8621ffaed..5116e9a3f 100644 --- a/localuser/src/main/java/org/openmbee/mms/localuser/config/AuthProviderConfig.java +++ b/localuser/src/main/java/org/openmbee/mms/localuser/config/AuthProviderConfig.java @@ -1,5 +1,6 @@ package org.openmbee.mms.localuser.config; +import org.openmbee.mms.localuser.security.UserCreateRequest; import org.openmbee.mms.localuser.security.UserDetailsServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +40,11 @@ public DaoAuthenticationProvider daoAuthenticationProvider() { try { userDetailsService.loadUserByUsername(adminUsername); } catch (UsernameNotFoundException e) { - userDetailsService.register(adminUsername, adminPassword, true); + UserCreateRequest req = new UserCreateRequest(); + req.setAdmin(true); + req.setPassword(adminPassword); + req.setUsername(adminUsername); + userDetailsService.register(req); logger.info(String.format("Creating root user: %s with specified password.", adminUsername)); } From 4b4ae4086901a26f541891b00fd59f2794d4c826 Mon Sep 17 00:00:00 2001 From: "Lam, Doris T (319E)" Date: Thu, 3 Dec 2020 11:26:42 -0800 Subject: [PATCH 4/4] fix test --- .../main/java/org/openmbee/mms/data/domains/global/Base.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java b/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java index f4f372c77..1d7c2abd2 100644 --- a/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java +++ b/data/src/main/java/org/openmbee/mms/data/domains/global/Base.java @@ -15,7 +15,7 @@ import org.springframework.data.annotation.LastModifiedDate; @MappedSuperclass -@JsonIgnoreProperties(value = {"created", "modified", "id"}) +@JsonIgnoreProperties(value = {"created", "modified", "id"}, allowGetters = true) public abstract class Base implements Serializable { private static final long serialVersionUID = 8389104517465359723L;