From 6f4a02451063adb2e2c76590b8c27432956d9508 Mon Sep 17 00:00:00 2001 From: j2blake Date: Wed, 15 Jun 2011 20:41:44 +0000 Subject: [PATCH] NIHVIVO-2703 Root user shouldn't require a role, and shouldn't accept one if offered. --- .../accounts/admin/UserAccountsEditPage.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) 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);