diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java index 618efe5cd1a57cdaa03c76f8ad44cc6889cfb24d..0272414e95855649893e9b311cf84524979c11bb 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java @@ -10,6 +10,7 @@ import gov.anl.aps.dm.portal.model.beans.UserInfoFacade; import gov.anl.aps.dm.portal.model.entities.CloneableEntity; import gov.anl.aps.dm.portal.model.entities.Experiment; import gov.anl.aps.dm.portal.model.entities.RoleType; +import gov.anl.aps.dm.portal.utilities.CryptUtility; import gov.anl.aps.dm.portal.utilities.SessionUtility; import java.util.ArrayList; import java.util.Collection; @@ -156,7 +157,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF public UserInfoController() { } - + public int getRows() { return rows; } @@ -173,7 +174,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF } initialized = true; } - + @Override public void clear() { userExperimentsListTable.resetList(); @@ -187,7 +188,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF public void setUserExperimentsListTable(UserExperimentsTable userExperimentsListTable) { this.userExperimentsListTable = userExperimentsListTable; } - + @Override protected UserInfoFacade getFacade() { return userInfoFacade; @@ -223,15 +224,21 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF } @Override - public void prepareEntityInsert(UserInfo user) throws ObjectAlreadyExists, MissingProperty{ + public void prepareEntityInsert(UserInfo user) throws ObjectAlreadyExists, MissingProperty { verifyMandatoryParam(user); UserInfo existingUser = userInfoFacade.findByUsername(user.getUsername()); if (existingUser != null) { throw new ObjectAlreadyExists("User " + user.getUsername() + " already exists."); } + if (passwordEntry != null && !passwordEntry.isEmpty()) { + logger.debug("Will crypt provided password for user " + user.getUsername()); + String cryptedPassword = CryptUtility.cryptPasswordWithPbkdf2(passwordEntry); + user.setPassword(cryptedPassword); + } + passwordEntry = null; logger.debug("Inserting new user " + user.getUsername()); } - + private void verifyMandatoryParam(UserInfo user) throws MissingProperty { int missing = 0; if ((user.getUsername() == null) || (user.getUsername().length() == 0)) { @@ -260,26 +267,28 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF case 1: throw new MissingProperty("Username is missing."); } - } + } } - + @Override public void prepareEntityUpdate(UserInfo user) throws DmPortalException { verifyMandatoryParam(user); if (passwordEntry != null && !passwordEntry.isEmpty()) { - user.setPassword(passwordEntry); + logger.debug("Will crypt provided password for user " + user.getUsername()); + String cryptedPassword = CryptUtility.cryptPasswordWithPbkdf2(passwordEntry); + user.setPassword(cryptedPassword); } passwordEntry = null; } - @Override - protected String getObjectAlreadyExistMessage(UserInfo user) { + @Override + protected String getObjectAlreadyExistMessage(UserInfo user) { if (user == null) { return null; } - return "User " + user.getUsername() + " already exists."; + return "User " + user.getUsername() + " already exists."; } - + public String prepareSessionUserEdit(String viewPath) { UserInfo sessionUser = (UserInfo) SessionUtility.getUser(); if (sessionUser == null) { @@ -288,7 +297,7 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF prepareEdit(sessionUser); return viewPath + "?faces-redirect=true"; } - + public String getPasswordEntry() { return passwordEntry; } @@ -300,10 +309,9 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF public boolean notSelected() { return current == null; } - + @FacesConverter(forClass = UserInfo.class) - public static class UserInfoControllerConverter implements Converter - { + public static class UserInfoControllerConverter implements Converter { @Override public Object getAsObject(FacesContext facesContext, UIComponent component, String value) { @@ -335,12 +343,11 @@ public class UserInfoController extends CrudEntityController<UserInfo, UserInfoF if (object instanceof UserInfo) { UserInfo o = (UserInfo) object; return getStringKey(o.getId()); - } - else { + } else { throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + UserInfo.class.getName()); } } } -} \ No newline at end of file +} diff --git a/src/java/DmWebPortal/web/views/userInfo/private/userInfoCreatePanelGrid.xhtml b/src/java/DmWebPortal/web/views/userInfo/private/userInfoCreatePanelGrid.xhtml index c996ae2b2eb62061bf9270346256a24ec4eb93a7..98998af7ebbf317d4f78e8e50713541cb77b1272 100644 --- a/src/java/DmWebPortal/web/views/userInfo/private/userInfoCreatePanelGrid.xhtml +++ b/src/java/DmWebPortal/web/views/userInfo/private/userInfoCreatePanelGrid.xhtml @@ -28,7 +28,7 @@ <h:inputText id="email" value="#{userInfoObject.email}" title="Email" styleClass="entityDataText"/> <h:outputLabel for="password" value="Password" styleClass="entityDataLabel"/> - <p:password id="password" value="#{userInfoObject.password}" title="Password" feedback="true" styleClass="entityDataText"/> + <p:password id="password" value="#{userInfoController.passwordEntry}" title="Password" feedback="true" styleClass="entityDataText"/> <h:outputLabel for="globusUsername" value="Globus Username" styleClass="entityDataEmphasizedLabel"/> <h:inputText id="globusUsername" value="#{userInfoObject.globusUsername}" title="Globus Username" styleClass="entityDataEmphasizedText"/>