From f436ef194ec0790b70524f0191c1b992ddb086c6 Mon Sep 17 00:00:00 2001 From: j2blake Date: Thu, 16 Jun 2011 16:35:59 +0000 Subject: [PATCH] NIHVIVO-2716 Detect root users in the UserAccountsSelector, so we can do a special display in the Accounts List page. --- .../vitro/webapp/beans/UserAccount.java | 1 + .../accounts/UserAccountsSelector.java | 13 ++++++----- .../accounts/admin/UserAccountsListPage.java | 13 +++++++---- .../accounts/UserAccountsSelectorTest.java | 22 ++++++++++++++++++- .../accounts/UserAccountsSelectorTest.n3 | 1 + 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/UserAccount.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/UserAccount.java index 457764615..217648473 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/UserAccount.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/UserAccount.java @@ -206,6 +206,7 @@ public class UserAccount { + (", passwordChangeRequired=" + passwordChangeRequired) + (", loginCount=" + loginCount) + (", status=" + status) + (", externalAuthId=" + externalAuthId) + + (", rootUser=" + rootUser) + (", permissionSetUris=" + permissionSetUris) + "]"; } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java index 9c4c51cb1..315f8408a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java @@ -39,7 +39,7 @@ public class UserAccountsSelector { + "PREFIX fn: \n" + "PREFIX auth: \n"; - private static final String ALL_VARIABLES = "?uri ?email ?firstName ?lastName ?pwd ?expire ?count ?status"; + private static final String ALL_VARIABLES = "?uri ?email ?firstName ?lastName ?pwd ?expire ?count ?status ?isRoot"; private static final String COUNT_VARIABLE = "?uri"; @@ -169,7 +169,8 @@ public class UserAccountsSelector { + " OPTIONAL { ?uri auth:md5password ?pwd } \n" + " OPTIONAL { ?uri auth:passwordChangeExpires ?expire } \n" + " OPTIONAL { ?uri auth:loginCount ?count } \n" - + " OPTIONAL { ?uri auth:status ?status }"; + + " OPTIONAL { ?uri auth:status ?status } \n" + + " OPTIONAL { ?uri ?isRoot auth:RootUserAccount }"; } private String filterClauses() { @@ -201,11 +202,10 @@ public class UserAccountsSelector { } /** - * Escape any regex special characters in the string. + * Escape any regex special characters in the string. * - * Note that the SPARQL - * parser requires two backslashes, in order to pass a single backslash to - * the REGEX function. + * Note that the SPARQL parser requires two backslashes, in order to pass a + * single backslash to the REGEX function. */ private String escapeForRegex(String raw) { StringBuilder clean = new StringBuilder(); @@ -327,6 +327,7 @@ public class UserAccountsSelector { user.setPasswordLinkExpires(ifLongPresent(solution, "expire", 0L)); user.setLoginCount(ifIntPresent(solution, "count", 0)); user.setStatus(parseStatus(solution, "status", null)); + user.setRootUser(solution.contains("isRoot")); return user; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsListPage.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsListPage.java index 08476691d..dd2dd427b 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsListPage.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/admin/UserAccountsListPage.java @@ -238,10 +238,15 @@ public class UserAccountsListPage extends UserAccountsPage { private List findPermissionSetLabels(UserAccount account) { List labels = new ArrayList(); - for (String uri : account.getPermissionSetUris()) { - PermissionSet pSet = userAccountsDao.getPermissionSetByUri(uri); - if (pSet != null) { - labels.add(pSet.getLabel()); + + if (account.isRootUser()) { + labels.add("ROOT"); + } else { + for (String uri : account.getPermissionSetUris()) { + PermissionSet pSet = userAccountsDao.getPermissionSetByUri(uri); + if (pSet != null) { + labels.add(pSet.getLabel()); + } } } return labels; diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java index bba2ad4ba..4a08a9766 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java @@ -12,7 +12,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -91,6 +90,27 @@ public class UserAccountsSelectorTest extends AbstractTestClass { Collections .singleton("http://vivo.mydomain.edu/individual/role2"), acct.getPermissionSetUris()); + assertEquals("rootUser", false, acct.isRootUser()); + } + + @Test + public void checkFieldsForRootUser() { + selectOnCriteria(1, 8, DEFAULT_ORDERING, "", ""); + assertSelectedUris(10, "user08"); + + UserAccount acct = selection.getUserAccounts().get(0); + assertEquals("uri", "http://vivo.mydomain.edu/individual/user08", + acct.getUri()); + assertEquals("email", "email@henry.edu", acct.getEmailAddress()); + assertEquals("firstName", "Mary", acct.getFirstName()); + assertEquals("lastName", "McInerney", acct.getLastName()); + assertEquals("password", "garbage", acct.getMd5Password()); + assertEquals("expires", 0L, acct.getPasswordLinkExpires()); + assertEquals("loginCount", 7, acct.getLoginCount()); + assertEquals("status", UserAccount.Status.ACTIVE, acct.getStatus()); + assertEqualSets("permissions", Collections. emptySet(), + acct.getPermissionSetUris()); + assertEquals("rootUser", true, acct.isRootUser()); } // ---------------------------------------------------------------------- diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 index 85d5895c1..7e39d30fb 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 @@ -101,6 +101,7 @@ mydomain:user07 mydomain:user08 a auth:UserAccount ; + a auth:RootUserAccount ; auth:emailAddress "email@henry.edu" ; auth:firstName "Mary" ; auth:lastName "McInerney" ;