diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/controller/UsersController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/controller/UsersController.java index f4c63c9f4..e1f1fd373 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/controller/UsersController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/controller/UsersController.java @@ -100,7 +100,10 @@ ResponseEntity updateOne(@PathVariable(value = "username") String username, @ if (StringUtils.isNotBlank(user.getPassword())) { persistedUser.setPassword(BCrypt.hashpw(user.getPassword(), BCrypt.gensalt())); } - userRoleService.updateUserRole(persistedUser); + if (StringUtils.isNotBlank(user.getRole())) { + persistedUser.setRole(user.getRole()); + userRoleService.updateUserRole(persistedUser); + } User savedUser = userRepository.save(persistedUser); return ResponseEntity.ok(savedUser); } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/User.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/User.java index d268dd59b..5993aea72 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/User.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/User.java @@ -55,13 +55,13 @@ public class User extends AbstractAuditable { private Set roles = new HashSet<>(); public String getRole() { - Set roles = this.getRoles(); - if (roles.size() != 1) { - if (StringUtils.isNotBlank(this.role)) { - return this.role; + if (StringUtils.isBlank(this.role)) { + Set roles = this.getRoles(); + if (roles.size() != 1) { + throw new RuntimeException(String.format("User with username [%s] does not have exactly one role!", this.getUsername())); } - throw new RuntimeException(String.format("User with username [%s] does not have exactly one role!", this.getUsername())); + this.role = roles.iterator().next().getName(); } - return roles.iterator().next().getName(); + return this.role; } }