diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsEditPage.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsEditPage.java index b53b008ca..8f9d261d1 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsEditPage.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsEditPage.java @@ -85,7 +85,7 @@ public class UserAccountsEditPage extends UserAccountsPage { externalAuthId = getStringParameter(PARAMETER_EXTERNAL_AUTH_ID, ""); firstName = getStringParameter(PARAMETER_FIRST_NAME, ""); lastName = getStringParameter(PARAMETER_LAST_NAME, ""); - selectedRoleUri = getStringParameter(PARAMETER_ROLE, ""); + selectedRoleUri = isRootUser() ? "" :getStringParameter(PARAMETER_ROLE, ""); associateWithProfile = isParameterAsExpected( PARAMETER_ASSOCIATE_WITH_PROFILE, "yes"); @@ -127,7 +127,7 @@ public class UserAccountsEditPage extends UserAccountsPage { errorCode = ERROR_NO_FIRST_NAME; } else if (lastName.isEmpty()) { errorCode = ERROR_NO_LAST_NAME; - } else if (selectedRoleUri.isEmpty()) { + } else if (!isRootUser() && selectedRoleUri.isEmpty()) { errorCode = ERROR_NO_ROLE; } else { errorCode = strategy.additionalValidations(); @@ -145,7 +145,7 @@ public class UserAccountsEditPage extends UserAccountsPage { private boolean isEmailValidFormat() { return Authenticator.isValidEmailAddress(emailAddress); } - + private boolean externalAuthIdIsChanged() { return !externalAuthId.equals(userAccount.getExternalAuthId()); } @@ -157,6 +157,10 @@ public class UserAccountsEditPage extends UserAccountsPage { return userAccountsDao.getUserAccountByExternalAuthId(externalAuthId) != null; } + private boolean isRootUser() { + return userAccountsDao.isRootUser(userAccount); + } + public boolean isValid() { return errorCode.isEmpty(); } @@ -177,6 +181,11 @@ public class UserAccountsEditPage extends UserAccountsPage { body.put("lastName", userAccount.getLastName()); body.put("selectedRole", getExistingRoleUri()); } + + if (isRootUser()) { + body.put("selectedRole", ""); + } + body.put("roles", buildRolesList()); if (associateWithProfile) { body.put("associate", Boolean.TRUE); @@ -213,8 +222,12 @@ public class UserAccountsEditPage extends UserAccountsPage { userAccount.setLastName(lastName); userAccount.setExternalAuthId(externalAuthId); - userAccount - .setPermissionSetUris(Collections.singleton(selectedRoleUri)); + if (isRootUser()) { + userAccount.setPermissionSetUris(Collections. emptySet()); + } else { + userAccount.setPermissionSetUris(Collections + .singleton(selectedRoleUri)); + } strategy.setAdditionalProperties(userAccount);