NIHVIVO-1430 When a user logs in, change what is viewed. Consolidate the logic so an external user is more like an internal user.
This commit is contained in:
parent
0740e57749
commit
5d4625d421
9 changed files with 225 additions and 183 deletions
|
@ -71,6 +71,7 @@ public class AuthenticatorStub extends Authenticator {
|
|||
|
||||
private final Map<String, User> usersByName = new HashMap<String, User>();
|
||||
private final Map<String, List<String>> editingPermissions = new HashMap<String, List<String>>();
|
||||
private final Map<String, String> associatedUris = new HashMap<String, String>();
|
||||
private final List<String> recordedLogins = new ArrayList<String>();
|
||||
private final Map<String, String> newPasswords = new HashMap<String, String>();
|
||||
|
||||
|
@ -84,11 +85,15 @@ public class AuthenticatorStub extends Authenticator {
|
|||
usersByName.put(user.getUsername(), user);
|
||||
}
|
||||
|
||||
public void addEditingPermission(String userUri, String personUri) {
|
||||
if (!editingPermissions.containsKey(userUri)) {
|
||||
editingPermissions.put(userUri, new ArrayList<String>());
|
||||
public void addEditingPermission(String username, String personUri) {
|
||||
if (!editingPermissions.containsKey(username)) {
|
||||
editingPermissions.put(username, new ArrayList<String>());
|
||||
}
|
||||
editingPermissions.get(userUri).add(personUri);
|
||||
editingPermissions.get(username).add(personUri);
|
||||
}
|
||||
|
||||
public void setAssociatedUri(String username, String individualUri) {
|
||||
associatedUris.put(username, individualUri);
|
||||
}
|
||||
|
||||
public List<String> getRecordedLoginUsernames() {
|
||||
|
@ -113,6 +118,11 @@ public class AuthenticatorStub extends Authenticator {
|
|||
return usersByName.get(username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAssociatedIndividualUri(String username) {
|
||||
return associatedUris.get(username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCurrentPassword(String username, String clearTextPassword) {
|
||||
if (!isExistingUser(username)) {
|
||||
|
@ -129,10 +139,9 @@ public class AuthenticatorStub extends Authenticator {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<String> asWhomMayThisUserEdit(User user) {
|
||||
String userUri = user.getURI();
|
||||
if (editingPermissions.containsKey(userUri)) {
|
||||
return editingPermissions.get(userUri);
|
||||
public List<String> asWhomMayThisUserEdit(String username) {
|
||||
if (editingPermissions.containsKey(username)) {
|
||||
return editingPermissions.get(username);
|
||||
} else {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ import edu.cornell.mannlib.vitro.testing.AbstractTestClass;
|
|||
import edu.cornell.mannlib.vitro.webapp.beans.User;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.authenticate.AuthenticatorStub;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.authenticate.LoginRedirector;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.login.LoginProcessBean;
|
||||
import edu.cornell.mannlib.vitro.webapp.controller.login.LoginProcessBean.State;
|
||||
|
||||
|
@ -96,26 +97,26 @@ public class AuthenticateTest extends AbstractTestClass {
|
|||
}
|
||||
|
||||
private User createNewDbaUser() {
|
||||
User dbaUser = new User();
|
||||
dbaUser.setUsername(USER_DBA_NAME);
|
||||
dbaUser.setURI(USER_DBA_URI);
|
||||
dbaUser.setRoleURI("50");
|
||||
dbaUser.setMd5password(Authenticate.applyMd5Encoding(USER_DBA_PASSWORD));
|
||||
dbaUser.setFirstTime(null);
|
||||
dbaUser.setLoginCount(0);
|
||||
return dbaUser;
|
||||
User user = new User();
|
||||
user.setUsername(USER_DBA_NAME);
|
||||
user.setURI(USER_DBA_URI);
|
||||
user.setRoleURI("50");
|
||||
user.setMd5password(Authenticate.applyMd5Encoding(USER_DBA_PASSWORD));
|
||||
user.setFirstTime(null);
|
||||
user.setLoginCount(0);
|
||||
return user;
|
||||
}
|
||||
|
||||
private User createOldHandUser() {
|
||||
User ohUser = new User();
|
||||
ohUser.setUsername(USER_OLDHAND_NAME);
|
||||
ohUser.setURI(USER_OLDHAND_URI);
|
||||
ohUser.setRoleURI("1");
|
||||
ohUser.setMd5password(Authenticate
|
||||
User user = new User();
|
||||
user.setUsername(USER_OLDHAND_NAME);
|
||||
user.setURI(USER_OLDHAND_URI);
|
||||
user.setRoleURI("1");
|
||||
user.setMd5password(Authenticate
|
||||
.applyMd5Encoding(USER_OLDHAND_PASSWORD));
|
||||
ohUser.setLoginCount(USER_OLDHAND_LOGIN_COUNT);
|
||||
ohUser.setFirstTime(new Date(0));
|
||||
return ohUser;
|
||||
user.setLoginCount(USER_OLDHAND_LOGIN_COUNT);
|
||||
user.setFirstTime(new Date(0));
|
||||
return user;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
@ -201,7 +202,7 @@ public class AuthenticateTest extends AbstractTestClass {
|
|||
auth.doPost(request, response);
|
||||
|
||||
assertNoProcessBean();
|
||||
assertExpectedRedirect(URL_SITE_ADMIN_PAGE);
|
||||
assertExpectedRedirect(URL_HOME_PAGE);
|
||||
assertExpectedLoginSessions(USER_OLDHAND_NAME);
|
||||
}
|
||||
|
||||
|
@ -291,14 +292,35 @@ public class AuthenticateTest extends AbstractTestClass {
|
|||
// ----------------------------------------------------------------------
|
||||
|
||||
@Test
|
||||
public void redirectOnSession() {
|
||||
session.setAttribute("postLoginRequest", URL_SESSION_REDIRECT);
|
||||
public void redirectReturnToRestrictedPage() {
|
||||
LoginRedirector.setReturnUrlFromForcedLogin(request,
|
||||
URL_SESSION_REDIRECT);
|
||||
loginNotFirstTime();
|
||||
assertExpectedLiteralRedirect(URL_SESSION_REDIRECT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void redirectOnServletContext() {
|
||||
public void redirectDbaToSiteAdmin() {
|
||||
authenticator.getUserByUsername(USER_OLDHAND_NAME).setRoleURI("50");
|
||||
loginNotFirstTime();
|
||||
assertExpectedRedirect(URL_SITE_ADMIN_PAGE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void redirectSelfEditor() {
|
||||
authenticator.setAssociatedUri(USER_OLDHAND_NAME, "selfEditorURI");
|
||||
loginNotFirstTime();
|
||||
assertExpectedRedirect(URL_SELF_EDITOR_PAGE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void redirectUnrecognizedUserToHome() {
|
||||
loginNotFirstTime();
|
||||
assertExpectedRedirect(URL_HOME_PAGE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void redirectUnrecognizedUserToApplicationHome() {
|
||||
servletContext.setAttribute("postLoginRequest",
|
||||
URL_CONTEXT_REDIRECT_LOCAL);
|
||||
loginNotFirstTime();
|
||||
|
@ -306,26 +328,13 @@ public class AuthenticateTest extends AbstractTestClass {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void redirectOnServletContextToExternalUrl() {
|
||||
public void redirectUnrecognizedUserToApplicationExternalHome() {
|
||||
servletContext.setAttribute("postLoginRequest",
|
||||
URL_CONTEXT_REDIRECT_REMOTE);
|
||||
loginNotFirstTime();
|
||||
assertExpectedLiteralRedirect(URL_CONTEXT_REDIRECT_REMOTE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void redirectSelfEditor() {
|
||||
authenticator.addEditingPermission(USER_OLDHAND_URI, "selfEditorURI");
|
||||
loginNotFirstTime();
|
||||
assertExpectedRedirect(URL_SELF_EDITOR_PAGE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void redirectNoneOfTheAbove() {
|
||||
loginNotFirstTime();
|
||||
assertExpectedRedirect(URL_SITE_ADMIN_PAGE);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// helper methods
|
||||
// ----------------------------------------------------------------------
|
||||
|
@ -384,7 +393,8 @@ public class AuthenticateTest extends AbstractTestClass {
|
|||
LoginProcessBean bean = LoginProcessBean.getBean(request);
|
||||
assertEquals("state", state, bean.getState());
|
||||
assertEquals("info message", infoMessage, bean.getInfoMessageAndClear());
|
||||
assertEquals("error message", errorMessage, bean.getErrorMessageAndClear());
|
||||
assertEquals("error message", errorMessage,
|
||||
bean.getErrorMessageAndClear());
|
||||
assertEquals("username", username, bean.getUsername());
|
||||
}
|
||||
|
||||
|
@ -412,7 +422,7 @@ public class AuthenticateTest extends AbstractTestClass {
|
|||
assertEquals("recorded logins", expected, actualRecorded);
|
||||
}
|
||||
|
||||
/** Boilerplate login process for the rediret tests. */
|
||||
/** Boilerplate login process for the redirect tests. */
|
||||
private void loginNotFirstTime() {
|
||||
setProcessBean(LOGGING_IN);
|
||||
setLoginNameAndPassword(USER_OLDHAND_NAME, USER_OLDHAND_PASSWORD);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue