diff --git a/webapp/config/web.xml b/webapp/config/web.xml index 7140c90f7..febbe60a4 100644 --- a/webapp/config/web.xml +++ b/webapp/config/web.xml @@ -105,11 +105,11 @@ - + @@ -635,15 +635,6 @@ /keywordEdit - - UserEditController - edu.cornell.mannlib.vitro.webapp.controller.edit.UserEditController - - - UserEditController - /userEdit - - OntologyEditController edu.cornell.mannlib.vitro.webapp.controller.edit.OntologyEditController @@ -743,16 +734,6 @@ /addRestriction - - - UsersListingController - edu.cornell.mannlib.vitro.webapp.controller.edit.listing.UsersListingController - - - UsersListingController - /listUsers - - AccountsAdmin edu.cornell.mannlib.vitro.webapp.controller.accounts.admin.UserAccountsAdminController diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/User.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/User.java deleted file mode 100644 index 67005be08..000000000 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/beans/User.java +++ /dev/null @@ -1,137 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.beans; - -import java.text.Collator; -import java.util.Date; - -public class User implements Comparable { - - public final static int MIN_PASSWORD_LENGTH = 6; - public final static int MAX_PASSWORD_LENGTH = 12; - - private String URI = null; - private String namespace = null; - private String localName = null; - private String username = null; - private String oldPassword = null; - private String md5password = null; - private Date modTime = null; - private Date firstTime = null; - private int loginCount = 0; - private String roleURI = null; - private String lastName = null; - private String firstName = null; - - public String getURI() { - return URI; - } - public void setURI(String URI) { - this.URI = URI; - } - - public String getNamespace() { - return namespace; - } - public void setNamespace(String namespace) { - this.namespace = namespace; - } - - public String getLocalName() { - return localName; - } - public void setLocalName(String localName) { - this.localName = localName; - } - - public String getUsername() { - return username; - } - public void setUsername(String username) { - this.username = username; - } - - public String getOldPassword() { - return oldPassword; - } - public void setOldPassword(String oldPassword) { - this.oldPassword = oldPassword; - } - - public String getMd5password() { - return md5password; - } - public void setMd5password(String md5password) { - this.md5password = md5password; - } - - public Date getModTime() { - return modTime; - } - public void setModTime(Date modTime) { - this.modTime = modTime; - } - - public Date getFirstTime() { - return firstTime; - } - public void setFirstTime(Date firstTime) { - this.firstTime = firstTime; - } - - public int getLoginCount() { - return loginCount; - } - public void setLoginCount(int loginCount) { - this.loginCount = loginCount; - } - - public String getRoleURI() { - return roleURI; - } - public void setRoleURI(String roleURI) { - this.roleURI = roleURI; - } - - public String getLastName() { - return lastName; - } - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getFirstName() { - return firstName; - } - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - @Override - public int compareTo(User other) { - Collator collator = Collator.getInstance(); - if( this.getUsername() == null && other.getUsername() == null ) - return 0; - else if( this.getUsername() == null ) - return -1; - else if( other.getUsername() == null) - return 1; - else - return collator.compare(this.getUsername(),other.getUsername()); - } - - @Override - public String toString() { - return "User[URI=" + URI + ", namespace=" + namespace + ", localName=" - + localName + ", username=" + username + ", oldPassword=" - + oldPassword + ", md5password=" + md5password + ", modTime=" - + dateToString(modTime) + ", firstTime=" - + dateToString(firstTime) + ", loginCount=" + loginCount - + ", roleURI=" + roleURI + ", lastName=" + lastName - + ", firstName=" + firstName + "]"; - } - - private String dateToString(Date date) { - return (date == null) ? "null" : String.valueOf(date.getTime()); - } -} diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MailUsersServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MailUsersServlet.java index 351f10921..647ebcab2 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MailUsersServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/MailUsersServlet.java @@ -3,6 +3,7 @@ package edu.cornell.mannlib.vitro.webapp.controller; import java.io.IOException; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; @@ -22,7 +23,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import edu.cornell.mannlib.vitro.webapp.dao.UserDao; +import edu.cornell.mannlib.vitro.webapp.beans.UserAccount; +import edu.cornell.mannlib.vitro.webapp.dao.UserAccountsDao; import edu.cornell.mannlib.vitro.webapp.email.FreemarkerEmailFactory; public class MailUsersServlet extends VitroHttpServlet { @@ -74,10 +76,8 @@ public class MailUsersServlet extends VitroHttpServlet { int recipientCount = 0; String deliveryfrom = null; - UserDao uDao = vreq.getFullWebappDaoFactory().getUserDao(); - // get Individuals that the User mayEditAs - deliverToArray = uDao.getUserAccountEmails(); + deliverToArray = getEmailsForAllUserAccounts(vreq); //Removed all form type stuff b/c recipients pre-configured recipientCount=(deliverToArray == null) ? 0 : deliverToArray.size(); @@ -208,6 +208,18 @@ public class MailUsersServlet extends VitroHttpServlet { } } + + private List getEmailsForAllUserAccounts(VitroRequest vreq) { + UserAccountsDao uaDao = vreq.getFullWebappDaoFactory() + .getUserAccountsDao(); + + List emails = new ArrayList(); + for (UserAccount user : uaDao.getAllUserAccounts()) { + emails.add(user.getEmailAddress()); + } + + return emails; + } @Override public void doPost( HttpServletRequest request, HttpServletResponse response ) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java index 51b8f0a3b..fbcf541ec 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/user/UserAccountsMyAccountPage.java @@ -9,15 +9,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vedit.beans.LoginStatusBean; -import edu.cornell.mannlib.vitro.webapp.beans.User; import edu.cornell.mannlib.vitro.webapp.beans.UserAccount; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.accounts.UserAccountsPage; import edu.cornell.mannlib.vitro.webapp.controller.accounts.admin.UserAccountsEditPage; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; -import edu.cornell.mannlib.vitro.webapp.dao.UserDao; -import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; /** * Handle the "My Account" form display and submission. @@ -57,7 +54,7 @@ public class UserAccountsMyAccountPage extends UserAccountsPage { public UserAccountsMyAccountPage(VitroRequest vreq) { super(vreq); - this.userAccount = getLoggedInUser(); + this.userAccount = LoginStatusBean.getCurrentUser(vreq); this.strategy = UserAccountsMyAccountPageStrategy.getInstance(vreq, this, isExternalAccount()); @@ -111,25 +108,6 @@ public class UserAccountsMyAccountPage extends UserAccountsPage { return errorCode.isEmpty(); } - private UserAccount getLoggedInUser() { - // TODO This is a bogus measure. - // TODO It only works because for now we are not deleting old User - // structures, and there is a new UserAccount with email set to the old - // User username. - String uri = LoginStatusBean.getBean(vreq).getUserURI(); - WebappDaoFactory wdf = (WebappDaoFactory) this.ctx - .getAttribute("webappDaoFactory"); - User u = wdf.getUserDao().getUserByURI(uri); - - UserAccount ua = userAccountsDao.getUserAccountByEmail(u.getUsername()); - if (ua == null) { - throw new IllegalStateException("Couldn't find a UserAccount " - + "for uri: '" + uri + "'"); - } - log.debug("Logged-in user is " + ua); - return ua; - } - private boolean isExternalAccount() { return LoginStatusBean.getBean(vreq).hasExternalAuthentication(); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/N3MultiPartUpload.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/N3MultiPartUpload.java index 338bb3bea..4c397e20e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/N3MultiPartUpload.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/N3MultiPartUpload.java @@ -33,10 +33,9 @@ import com.hp.hpl.jena.rdf.model.StmtIterator; import com.hp.hpl.jena.shared.Lock; import edu.cornell.mannlib.vedit.beans.LoginStatusBean; +import edu.cornell.mannlib.vitro.webapp.beans.UserAccount; import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties; import edu.cornell.mannlib.vitro.webapp.controller.VitroHttpServlet; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.dao.UserDao; import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.EditConfiguration; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.Field; @@ -507,12 +506,14 @@ public class N3MultiPartUpload extends VitroHttpServlet { } public void sendUserEmail(HttpServletRequest request, HttpSession session, String uploadFileName) { - LoginStatusBean loginBean = LoginStatusBean.getBean(request); - String userURI = loginBean.getUserURI(); + UserAccount userAccount = LoginStatusBean.getCurrentUser(request); + if (userAccount == null) { + return; + } + try{ - System.out.println("User URI is " + userURI); - UserDao uDao = (new VitroRequest(request)).getFullWebappDaoFactory().getUserDao(); - String email = uDao.getUserEmailAddress(userURI); + System.out.println("User URI is " + userAccount.getUri()); + String email = userAccount.getEmailAddress(); String deliveryFrom = "hjk54@cornell.edu";//TO DO: replace with email address to be used //Now send message MailUtil mu = new MailUtil(request); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/UserEditController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/UserEditController.java deleted file mode 100644 index 49a1038c7..000000000 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/UserEditController.java +++ /dev/null @@ -1,138 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.controller.edit; - -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import edu.cornell.mannlib.vedit.controller.BaseEditController; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.ManageUserAccounts; -import edu.cornell.mannlib.vitro.webapp.beans.Individual; -import edu.cornell.mannlib.vitro.webapp.beans.IndividualImpl; -import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; -import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement; -import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatementImpl; -import edu.cornell.mannlib.vitro.webapp.beans.User; -import edu.cornell.mannlib.vitro.webapp.controller.Controllers; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.dao.UserDao; -import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; - -public class UserEditController extends BaseEditController { - - private String[] roleNameStr = new String[51]; - private static final Log log = LogFactory.getLog(UserEditController.class.getName()); - - public UserEditController() { - roleNameStr[1] = "self editor"; - roleNameStr[4] = "editor"; - roleNameStr[5] = "curator"; - roleNameStr[50] = "system administrator"; - } - - @Override - public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException { - if (!isAuthorizedToDisplayPage(request, response, new Actions(new ManageUserAccounts()))) { - return; - } - - VitroRequest vreq = new VitroRequest(request); - - UserDao uDao = vreq.getFullWebappDaoFactory().getUserDao(); - - String userURIStr = request.getParameter("uri"); - User u = null; - - if (userURIStr == null) { - throw new ServletException(this.getClass().getName()+" expects user URI in 'uri' request parameter"); - } else { - u = uDao.getUserByURI(userURIStr); - } - - if (u == null) { - throw new ServletException(this.getClass().getName()+" could not find user "+userURIStr); - } - - ArrayList results = new ArrayList(); - results.add("Email address"); - results.add("first name"); - results.add("last name"); - results.add("login count"); - results.add("role"); - - String EMPTY = ""; - - String usernameStr = (u.getUsername() != null) ? u.getUsername() : ""; - results.add(usernameStr); - String firstNameStr = (u.getFirstName() != null) ? u.getFirstName() : EMPTY; - results.add(firstNameStr); - String lastNameStr = (u.getLastName() != null) ? u.getLastName() : EMPTY; - results.add(lastNameStr); - String loginCountStr = Integer.toString(u.getLoginCount()); - results.add(loginCountStr); - String roleStr = ""; - try { - roleStr = roleNameStr[Integer.decode(u.getRoleURI())]; - } catch (Exception e) {} - results.add(roleStr); - - request.setAttribute("results",results); - - List mayEditAsUris = uDao.getIndividualsUserMayEditAs(u.getURI()); - if( mayEditAsUris != null && mayEditAsUris.size() > 0 ){ - List mayEditAsStmts = - new ArrayList(mayEditAsUris.size()); - for(String objURI: mayEditAsUris){ - Individual editAs = vreq.getFullWebappDaoFactory().getIndividualDao().getIndividualByURI(objURI); - ObjectPropertyStatement stmt = new ObjectPropertyStatementImpl(); - stmt.setSubjectURI(u.getURI()); - stmt.setPropertyURI(VitroVocabulary.MAY_EDIT_AS); - stmt.setObjectURI(objURI); - stmt.setObject(editAs); - mayEditAsStmts.add(stmt); - } - request.setAttribute("mayEditAsStmts", mayEditAsStmts); - } - - /* these are set so that we can use the PropertyEditLinks jsp tags */ - ObjectProperty prop = new ObjectProperty(); - prop.setURI(VitroVocabulary.MAY_EDIT_AS); - request.setAttribute("mayEditObjProp",prop); - Individual entity = new IndividualImpl(); - entity.setURI(u.getURI()); - request.setAttribute("entity", entity); - - request.setAttribute("results", results); - request.setAttribute("columncount", new Integer(5)); - request.setAttribute("suppressquery", "true"); - - RequestDispatcher rd = request.getRequestDispatcher(Controllers.BASIC_JSP); - request.setAttribute("user", u); - request.setAttribute("bodyJsp","/templates/edit/specific/user_edit.jsp"); - request.setAttribute("title","User Account Control Panel"); - request.setAttribute("css", ""); - - try { - rd.forward(request, response); - } catch (Exception e) { - log.error(this.getClass().getName()+" could not forward to view."); - log.error(e.getMessage()); - log.error(e.getStackTrace()); - } - - } - - public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException { - doPost(request,response); - } - -} diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/UserRetryController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/UserRetryController.java deleted file mode 100644 index 36d5d7c6f..000000000 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/edit/UserRetryController.java +++ /dev/null @@ -1,365 +0,0 @@ -/* $This file is distributed under the terms of the license in /doc/license.txt$ */ - -package edu.cornell.mannlib.vitro.webapp.controller.edit; - -import java.io.IOException; -import java.net.URLEncoder; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; - -import javax.servlet.RequestDispatcher; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import edu.cornell.mannlib.vedit.beans.EditProcessObject; -import edu.cornell.mannlib.vedit.beans.FormObject; -import edu.cornell.mannlib.vedit.beans.LoginStatusBean; -import edu.cornell.mannlib.vedit.beans.Option; -import edu.cornell.mannlib.vedit.controller.BaseEditController; -import edu.cornell.mannlib.vedit.forwarder.PageForwarder; -import edu.cornell.mannlib.vedit.forwarder.impl.UrlForwarder; -import edu.cornell.mannlib.vedit.listener.ChangeListener; -import edu.cornell.mannlib.vedit.util.FormUtils; -import edu.cornell.mannlib.vedit.validator.ValidationObject; -import edu.cornell.mannlib.vedit.validator.Validator; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.Actions; -import edu.cornell.mannlib.vitro.webapp.auth.requestedAction.usepages.ManageUserAccounts; -import edu.cornell.mannlib.vitro.webapp.beans.User; -import edu.cornell.mannlib.vitro.webapp.controller.Controllers; -import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.controller.authenticate.Authenticator; -import edu.cornell.mannlib.vitro.webapp.dao.UserDao; - -public class UserRetryController extends BaseEditController { - - private static final String ROLE_PROTOCOL = "role:/"; // this is weird; need to revisit - private static final Log log = LogFactory.getLog(UserRetryController.class.getName()); - - @Override - public void doPost (HttpServletRequest req, HttpServletResponse response) { - if (!isAuthorizedToDisplayPage(req, response, new Actions(new ManageUserAccounts()))) { - return; - } - - VitroRequest request = new VitroRequest(req); - - //create an EditProcessObject for this and put it in the session - EditProcessObject epo = super.createEpo(request); - epo.setDataAccessObject(request.getFullWebappDaoFactory().getVClassDao()); - - String action = null; - if (epo.getAction() == null) { - action = "insert"; - epo.setAction("insert"); - } else { - action = epo.getAction(); - } - - UserDao uDao = request.getFullWebappDaoFactory().getUserDao(); - epo.setDataAccessObject(uDao); - - User userForEditing = null; - if (!epo.getUseRecycledBean()){ - if (request.getParameter("uri") != null) { - try { - userForEditing = uDao.getUserByURI(request.getParameter("uri")); - userForEditing.setRoleURI(ROLE_PROTOCOL+userForEditing.getRoleURI()); - action = "update"; - epo.setAction("udpate"); - } catch (NullPointerException e) { - log.error("Need to implement 'record not found' error message."); - } - } else { - userForEditing = new User(); - userForEditing.setRoleURI(ROLE_PROTOCOL+"1"); - } - epo.setOriginalBean(userForEditing); - } else { - userForEditing = (User) epo.getNewBean(); - } - - populateBeanFromParams(userForEditing, request); - - //validators - Validator v = new PairedPasswordValidator(); - HashMap> validatorMap = new HashMap>(); - List vList = Collections.singletonList(v); - validatorMap.put("Md5password", vList); - validatorMap.put("passwordConfirmation", vList); - epo.setValidatorMap(validatorMap); - - //preprocessors - - //set up any listeners - epo.setChangeListenerList(Collections.singletonList(new UserPasswordChangeListener())); - - //make a postinsert pageforwarder that will send us to a new class's fetch screen - epo.setPostInsertPageForwarder(new UserInsertPageForwarder()); - //make a postdelete pageforwarder that will send us to the list of classes - epo.setPostDeletePageForwarder(new UrlForwarder("listUsers")); - - //set the getMethod so we can retrieve a new bean after we've inserted it - try { - Class[] args = new Class[] {String.class}; - epo.setGetMethod(uDao.getClass().getDeclaredMethod("getUserByURI",args)); - } catch (NoSuchMethodException e) { - log.error(this.getClass().getName()+" could not find the getVClassByURI method"); - } - - HashMap> optionMap = new HashMap>(); - - LoginStatusBean loginBean = LoginStatusBean.getBean(request); - List