From b335420e18b7c9eedef34d58410f15949f6b87a7 Mon Sep 17 00:00:00 2001 From: "Barbara B. Frosik" <bfrosik@aps.anl.gov> Date: Wed, 21 Jan 2015 21:48:38 +0000 Subject: [PATCH] --- .../controllers/ExperimentController.java | 200 ++++++++++-------- .../portal/controllers/LoginController.java | 17 +- .../controllers/UserSystemRoleController.java | 9 - .../model/entities/UserExperimentRolePK.java | 4 +- .../dm/portal/model/entities/UserInfo.java | 42 ++-- .../model/tempstorage/ExperimentUser.java | 132 ------------ .../DmWebPortal/web/resources/css/login.css | 11 + .../web/views/experiment/edit.xhtml | 2 +- .../experimentUserRemoveDialog.xhtml | 2 +- .../experimentUsersEditDataTable.xhtml | 2 +- .../DmWebPortal/web/views/loginHelp.xhtml | 74 +++++++ .../web/views/userSystemRole/list.xhtml | 2 +- .../systemRoleListDataTable.xhtml | 2 +- 13 files changed, 253 insertions(+), 246 deletions(-) delete mode 100644 src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java create mode 100644 src/java/DmWebPortal/web/views/loginHelp.xhtml diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java index 6af9e452..cc5e5b4a 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java @@ -1,3 +1,4 @@ + package gov.anl.aps.dm.portal.controllers; import gov.anl.aps.dm.portal.exceptions.DmPortalException; @@ -6,6 +7,7 @@ import gov.anl.aps.dm.portal.exceptions.InvalidDate; import gov.anl.aps.dm.portal.exceptions.MissingProperty; import gov.anl.aps.dm.portal.model.entities.Experiment; import gov.anl.aps.dm.portal.model.beans.ExperimentFacade; +import gov.anl.aps.dm.portal.model.beans.ExperimentTypeFacade; import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade; import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade; import gov.anl.aps.dm.portal.model.beans.UserInfoFacade; @@ -13,7 +15,6 @@ import gov.anl.aps.dm.portal.model.entities.CloneableEntity; import gov.anl.aps.dm.portal.model.entities.RoleType; import gov.anl.aps.dm.portal.model.entities.UserExperimentRole; import gov.anl.aps.dm.portal.model.entities.UserInfo; -// import gov.anl.aps.dm.portal.model.tempstorage.ExperimentUser; import gov.anl.aps.dm.portal.utilities.SessionUtility; import java.util.ArrayList; import java.util.HashMap; @@ -39,6 +40,9 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper @EJB private ExperimentFacade experimentFacade; + @EJB + private ExperimentTypeFacade experimentTypeFacade; + @EJB private UserInfoFacade userInfoFacade; @@ -55,15 +59,9 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper int userId; int experimentId; private final boolean [] roles; -// private final boolean [] updatedRoles; - int maxRoleId = 4; // this is hardcoded, should be determined from the RoleType data table. - // for now leave it hardcoded - -// Map<RoleType, Boolean> roles = new HashMap(); public ExperimentUser(int experimentId, int userId) { - roles = new boolean[maxRoleId+1]; -// updatedRoles = new boolean[maxRoleId+1]; + roles = new boolean[maxExperimentRoleTypeId]; this.experimentId = experimentId; this.userId = userId; } @@ -111,7 +109,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper public void setIsInRole(RoleType role, boolean isInRole) { roles[role.getId()] = isInRole; -// updatedRoles[role.getId()] = isInRole; } public boolean[] getRoles() { @@ -120,14 +117,18 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper public void removeAllExperimentRoles() { UserExperimentRole userExperimentRole; - for (int i = 1; i <= maxRoleId; i++) { + for (int i = 1; i <= 4; i++) { if (roles[i]) { userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, i); userExperimentRoleFacade.remove(userExperimentRole); -// updatedRoles[i] = false; } } } + + public void removeExperimentRole(int roleId) { + UserExperimentRole userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, roleId); + userExperimentRoleFacade.remove(userExperimentRole); + } public boolean canAddUsers() { return roles[2] || roles[3]; @@ -135,7 +136,7 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper @Override public int hashCode() { - return userId * 1000 + experimentId; + return userId + experimentId * 100; } @Override @@ -157,46 +158,35 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper } @Override - public List<ExperimentUser> findAll() { - try { - List<UserInfo> list = userInfoFacade.findUsersInExperiment(getCurrent().getId()); - List<ExperimentUser> tempUsersList = convertExperimentUsers(list); - return new ArrayList<>(tempUsersList); - } catch (NumberFormatException e) { - return null; - } + public List<ExperimentUser> findAll() { + List<UserInfo> list = userInfoFacade.findUsersInExperiment(getCurrent().getId()); + return convertExperimentUsers(list); +// return new ArrayList<>(tempUsersList); } List<ExperimentUser> convertExperimentUsers(List<UserInfo> list) { - logger.debug("converring ExperimentUser "); + logger.debug("converting ExperimentUser "); List<RoleType> roleTypes = roleTypeFacade.findByRoleSystemType(false); + ExperimentUser experimentUser; for (UserInfo user : list) { - ExperimentUser eUser = new ExperimentUser(getCurrent().getId(), user.getId()); - eUser.setUsername(user.getUsername()); - if (experimentUsers.containsKey(eUser)) { - eUser = experimentUsers.get(eUser); - } else { - experimentUsers.put(eUser, eUser); + if ((experimentUser = experimentUsers.get(user)) == null) { + experimentUser = new ExperimentUser(getCurrent().getId(), user.getId()); + experimentUser.setUsername(user.getUsername()); + experimentUser.setName(user.getLastName() + ", " + user.getFirstName()); + experimentUsers.put(user, experimentUser); } - eUser.setName(user.getLastName() + ", " + user.getFirstName()); for (RoleType roleType : roleTypes) { boolean inRole = user.inRole(roleType.getId(), getCurrent().getId()); - eUser.setIsInRole(roleType, inRole); + experimentUser.setIsInRole(roleType, inRole); } } - return new ArrayList<>(experimentUsers.keySet()); + return new ArrayList<>(experimentUsers.values()); } @Override public String getTableName() { return "experimentUsersTable"; } - - @Override - public void resetList() { -// experimentUsers.clear(); - super.resetList(); - } } class NoExperimentUsersTypeTable extends DataTableController<UserInfo> { @@ -221,9 +211,16 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper private ExperimentController.ExperimentUsersTable experimentUsersListTable; private ExperimentController.ExperimentUsersTable experimentUsersEditTable; private ExperimentController.NoExperimentUsersTypeTable noExperimentUsersTypeTable; - final private Map<ExperimentUser, ExperimentUser> experimentUsers = new HashMap<>(); + final private Map<UserInfo, ExperimentUser> experimentUsers = new HashMap<>(); + int maxExperimentRoleTypeId = 5; public ExperimentController() { +// List<RoleType> roleTypesList = roleTypeFacade.findAll(); +// for (RoleType roleType : roleTypesList) { +// if ((roleType.getId() > maxExperimentRoleTypeId) && !roleType.isIsSystemRole()) { +// maxExperimentRoleTypeId = roleType.getId(); +// } +// } this.experimentUsersListTable = new ExperimentController.ExperimentUsersTable(); this.experimentUsersEditTable = new ExperimentController.ExperimentUsersTable(); this.noExperimentUsersTypeTable = new ExperimentController.NoExperimentUsersTypeTable(); @@ -300,34 +297,6 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper return "Experiment " + experiment.getName() + " already exists."; } - @Override - public String update() { -// findUsersInExperiment(int experimentId) - for (ExperimentUser experimentUser: experimentUsers.keySet()) { - UserInfo userInfo = userInfoFacade.find(experimentUser.userId); - for (int i = 2; i <= 4; i++) { - UserExperimentRole userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(experimentUser.userId, experimentUser.experimentId, i); - if (experimentUser.roles[i] && (userExperimentRole == null)) { - userExperimentRole = new UserExperimentRole(experimentUser.userId, experimentUser.experimentId, i); - userExperimentRoleFacade.create(userExperimentRole); -// userInfo.addUserExperimentRole(userExperimentRole); - logger.debug("adding userExperimentRole " + experimentUser.userId + " " + experimentUser.experimentId + " " + i); - } - else if (!experimentUser.roles[i] && (userExperimentRole != null)) { - userExperimentRoleFacade.remove(userExperimentRole); -// userInfo.removeUserExperimentRole(userExperimentRole); - logger.debug("removing userExperimentRole " + experimentUser.userId + " " + experimentUser.experimentId + " " + i); - } -// experimentUser.roles[i] = experimentUser.updatedRoles[i]; - } - } - -// clear(); - experimentUsersListTable.resetList(); - experimentUsersEditTable.resetList(); - return super.update(); - } - private void verifyExperiment(Experiment experiment) throws InvalidDate, MissingProperty { if (experiment.getExperimentType() == null) { throw new MissingProperty("Experiment Type is missing."); @@ -388,7 +357,43 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper // return experimentUsersMap.get(username).canAddUsers(); } - public String getRemovedUserName() { + @Override + public String update() { + boolean updated; + List<RoleType> roleTypesList = roleTypeFacade.findAll(); + for (UserInfo user : experimentUsers.keySet()) { + updated = false; + ExperimentUser experimentUser = experimentUsers.get(user); + for (RoleType roleType : roleTypesList) { + if (!roleType.isIsSystemRole()) { + int roleId = roleType.getId(); + if (!user.inRole(roleId, experimentUser.experimentId)) { + if (experimentUser.roles[roleId]) { + UserExperimentRole userExperimentRole = new UserExperimentRole(experimentUser.userId, experimentUser.experimentId, roleId); + user.addUserExperimentRole(userExperimentRole); + updated = true; + logger.debug("adding userExperimentRole " + experimentUser.userId + " " + experimentUser.experimentId + " " + roleId); + } + } + else if (!experimentUser.roles[roleId]) { + user.removeExperimentRole(roleId, experimentUser.experimentId); + updated = true; + logger.debug("adding userExperimentRole " + experimentUser.userId + " " + experimentUser.experimentId + " " + roleId); + } + } + if (updated) { + userInfoFacade.edit(user); + } + } + } + + clear(); +// experimentUsersListTable.resetList(); +// experimentUsersEditTable.resetList(); + return super.update(); + } + + public String getRemovedUserName() { if (experimentUsersEditTable.getCurrentObject() != null) { return experimentUsersEditTable.getCurrentObject().getUsername(); } @@ -396,13 +401,48 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper } public String removeUser() { - ExperimentUser user = experimentUsersEditTable.getCurrentObject(); - user.removeAllExperimentRoles(); - experimentUsers.remove(user); + + List<RoleType> roleTypesList = roleTypeFacade.findAll(); + ExperimentUser experimentUser = experimentUsersEditTable.getCurrentObject(); + UserInfo user = findUserInExperiment(experimentUser); + for (RoleType roleType : roleTypesList) { + int roleId = roleType.getId(); + if (experimentUser.roles[roleId]) { + user.removeExperimentRole(roleId, experimentUser.experimentId); + } + } + userInfoFacade.edit(user); clear(); return "edit?faces-redirect=true"; } - + + public void removeUserRoles() { + ExperimentUser experimentUser = experimentUsersEditTable.getCurrentObject(); + experimentUser.removeAllExperimentRoles(); + } + + public void updateRemovedExperimentRoles() { + List<RoleType> roleTypesList = roleTypeFacade.findAll(); + for (UserInfo user : experimentUsers.keySet()) { + ExperimentUser experimentUser = experimentUsers.get(user); + for (RoleType roleType : roleTypesList) { + int roleId = roleType.getId(); + if (!roleType.isIsSystemRole() && (!experimentUser.roles[roleId]) && (user.inRole(roleId, experimentUser.experimentId))) { + experimentUser.removeExperimentRole(roleId); + } + } + } + } + + private UserInfo findUserInExperiment(ExperimentUser experimentUser) { + for (UserInfo user : experimentUsers.keySet()) { + if (experimentUsers.get(user).equals(experimentUser)) { + return user; + } + } + return null; + } + public String addExperimentUser() { List<UserInfo> newUsers = noExperimentUsersTypeTable.getSelectedObjectList(); if (newUsers == null) { @@ -416,10 +456,11 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper UserExperimentRole userExperimentRole; for (UserInfo user : newUsers) { userExperimentRole = new UserExperimentRole(user.getId(), current.getId(), 4); // set the User - userExperimentRoleFacade.create(userExperimentRole); + user.getUserExperimentRoleList().add(userExperimentRole); + userInfoFacade.edit(user); } clear(); - return edit(); + return "edit?faces-redirect=true"; } catch (RuntimeException ex) { SessionUtility.addErrorMessage("Error", "Could not update UserInfo" + ": " + ex.getMessage()); return null; @@ -427,19 +468,8 @@ public class ExperimentController extends CrudEntityController<Experiment, Exper } } - public boolean hasSystemRole(String user) { - RoleType rt; - rt = roleTypeFacade.findById(1); - if (rt == null) { - return false; - } - return rt.isAdmin(user); - } - - - @FacesConverter(forClass = Experiment.class) - public static class ExperimentControllerConverter implements Converter - { + @FacesConverter(forClass = Experiment.class) + public static class ExperimentControllerConverter implements Converter { @Override public Object getAsObject(FacesContext facesContext, UIComponent component, String value) { diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java index 08e577a0..30da44d6 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java @@ -5,7 +5,9 @@ */ package gov.anl.aps.dm.portal.controllers; +import gov.anl.aps.dm.portal.model.beans.RoleTypeFacade; import gov.anl.aps.dm.portal.model.beans.UserInfoFacade; +import gov.anl.aps.dm.portal.model.entities.RoleType; import gov.anl.aps.dm.portal.model.entities.UserInfo; import gov.anl.aps.dm.portal.utilities.LdapUtility; import gov.anl.aps.dm.portal.utilities.SessionUtility; @@ -28,6 +30,9 @@ public class LoginController implements Serializable @EJB private UserInfoFacade userInfoFacade; + @EJB + private RoleTypeFacade roleTypeFacade; + private String username = null; private String password = null; private boolean loggedIn = false; @@ -127,7 +132,7 @@ public class LoginController implements Serializable } else { SessionUtility.addErrorMessage(null, "Invalid Credentials. Username/password combination could not be verified."); - SessionUtility.addErrorMessage(null, "If you are having difficulty logging in, please see our <a href=\"http://www.anl.gov/employees/working-remotely/login-help\">Login Help</a> page."); + SessionUtility.addErrorMessage(null, "If you are having difficulty logging in, please see our <a href=\"perch.aps.anl.gov:8080/dm/views/loginHelp\">Login Help</a> page."); return (username = password = null); } @@ -172,4 +177,14 @@ public class LoginController implements Serializable return "/views/login?faces-redirect=true"; } + public boolean hasSystemRole() { + RoleType adminRoleType; + adminRoleType = roleTypeFacade.findById(1); + if (adminRoleType == null) { + return false; + } + return adminRoleType.isAdmin(username); + } + + } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java index 22cd4d09..d4968403 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserSystemRoleController.java @@ -117,15 +117,6 @@ public class UserSystemRoleController implements Serializable noSystemRoleTable.resetList(); } - public boolean hasSystemRole(String user) { - int id = Integer.parseInt(systemRoleId); - RoleType rt = roleTypeFacade.findById(id); - if (rt == null) { - return false; - } - return rt.isAdmin(user); - } - public String displayRole(String user) { // for now this method returns "Administrator" if user has this role, and "User" otherwise RoleType rt = roleTypeFacade.findById(1); diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java index caf5c489..14efa81f 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserExperimentRolePK.java @@ -69,8 +69,8 @@ public class UserExperimentRolePK implements Serializable public int hashCode() { int hash = 0; hash += (int) userId; - hash += (int) experimentId; - hash += (int) roleTypeId; + hash += (int) experimentId * 100; + hash += (int) roleTypeId * 10000; return hash; } diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java index ed24a143..20815919 100644 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/entities/UserInfo.java @@ -6,6 +6,7 @@ package gov.anl.aps.dm.portal.model.entities; +import java.util.ArrayList; import java.util.List; import javax.persistence.Basic; import javax.persistence.CascadeType; @@ -194,24 +195,41 @@ public class UserInfo extends CloneableEntity this.userSettingList = userSettingList; } - public boolean inRole(int roleId, int experimentId) { + public void removeExperimentRole(int roleId, int experimentId) { + UserExperimentRole roleToRemove = null; for (UserExperimentRole experimentRole : userExperimentRoleList) { - if ((experimentRole.getUserExperimentRolePK().getRoleTypeId() == roleId) && (experimentRole.getUserExperimentRolePK().getExperimentId() == experimentId)) - return true; + if ((experimentRole.getUserExperimentRolePK().getRoleTypeId() == roleId) && (experimentRole.getUserExperimentRolePK().getExperimentId() == experimentId)) { + roleToRemove = experimentRole; + break; + } + } + if (roleToRemove != null) { + userExperimentRoleList.remove(roleToRemove); } - return false; } - public void addUserExperimentRole(UserExperimentRole experimentRole) { - if (!inRole(experimentRole.getUserExperimentRolePK().getRoleTypeId(), experimentRole.getUserExperimentRolePK().getExperimentId())) { - userExperimentRoleList.add(experimentRole); - } + public void removeExperiment(int experimentId) { + List<UserExperimentRole> rolesToRemove = new ArrayList(); + for (UserExperimentRole userExperimentRole : userExperimentRoleList) { + if (userExperimentRole.getUserExperimentRolePK().getExperimentId() == experimentId) { + rolesToRemove.add(userExperimentRole); + } + } + for (UserExperimentRole userExperimentRole : rolesToRemove) { + userExperimentRoleList.remove(userExperimentRole); + } + } + + public void addUserExperimentRole(UserExperimentRole userExperimentRole) { + userExperimentRoleList.add(userExperimentRole); } - - public void removeUserExperimentRole(UserExperimentRole experimentRole) { - if (inRole(experimentRole.getUserExperimentRolePK().getRoleTypeId(), experimentRole.getUserExperimentRolePK().getExperimentId())) { - userExperimentRoleList.remove(experimentRole); + + public boolean inRole(int roleId, int experimentId) { + for (UserExperimentRole experimentRole : userExperimentRoleList) { + if ((experimentRole.getUserExperimentRolePK().getRoleTypeId() == roleId) && (experimentRole.getUserExperimentRolePK().getExperimentId() == experimentId)) + return true; } + return false; } @Override diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java deleted file mode 100644 index 95ee79c6..00000000 --- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/model/tempstorage/ExperimentUser.java +++ /dev/null @@ -1,132 +0,0 @@ -package gov.anl.aps.dm.portal.model.tempstorage; - -import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade; -import gov.anl.aps.dm.portal.model.entities.CloneableEntity; -import gov.anl.aps.dm.portal.model.entities.RoleType; -import gov.anl.aps.dm.portal.model.entities.UserExperimentRole; -import gov.anl.aps.dm.portal.model.entities.UserInfo; -import javax.ejb.EJB; - -/** - * - * @author bfrosik - */ -public class ExperimentUser extends CloneableEntity { - - @EJB - private UserExperimentRoleFacade userExperimentRoleFacade; - - String username; - String name; - int userId; - int experimentId; - private final boolean [] roles; - static int maxRoleId = 4; // this is hardcoded, should be determined from the RoleType data table. - // for now leave it hardcoded - -// Map<RoleType, Boolean> roles = new HashMap(); - - public ExperimentUser(int experimentId, int userId) { - roles = new boolean[maxRoleId+1]; - this.experimentId = experimentId; - this.userId = userId; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public boolean isIsManager() { - return roles[2]; - } - - public void setIsManager(boolean isManager) { - roles[2] = isManager; - if (isManager) { - UserExperimentRole userExperimentRole = new UserExperimentRole(userId, experimentId, 2); - userExperimentRoleFacade.create(userExperimentRole); - } else { - UserExperimentRole userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, 2); - userExperimentRoleFacade.remove(userExperimentRole); - } - } - - public boolean isIsPI() { - return roles[3]; - } - - public void setIsPI(boolean isPI) { - roles[3] = isPI; - if (isPI) { - UserExperimentRole userExperimentRole = new UserExperimentRole(userId, experimentId, 3); - userExperimentRoleFacade.create(userExperimentRole); - } else { - UserExperimentRole userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, 3); - userExperimentRoleFacade.remove(userExperimentRole); - } - } - - public boolean isIsUser() { - return roles[4]; - } - - public void setIsUser(boolean isUser) { - roles[4] = isUser; - if (isUser) { - UserExperimentRole userExperimentRole = new UserExperimentRole(userId, experimentId, 4); - userExperimentRoleFacade.create(userExperimentRole); - } else { - UserExperimentRole userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, 4); - userExperimentRoleFacade.remove(userExperimentRole); - } - } - - public void setIsInRole(RoleType role, boolean isInRole) { - roles[role.getId()] = isInRole; - } - - public boolean[] getRoles() { - return roles; - } - - public void removeAllExperimentRoles(UserExperimentRoleFacade userExperimentRoleFacade) { - UserExperimentRole userExperimentRole; - for (int i = 1; i <= maxRoleId; i++) { - if (roles[i]) { - userExperimentRole = userExperimentRoleFacade.findByUserExperimentRole(userId, experimentId, i); - userExperimentRoleFacade.remove(userExperimentRole); - } - } - } - - public boolean canAddUsers() { - return roles[2] || roles[3]; - } - - @Override - public int hashCode() { - return username.hashCode(); - } - - @Override - public boolean equals(Object object) { - // TODO: Warning - this method won't work in the case the id fields are not set - if (!(object instanceof UserInfo)) { - return false; - } - return (username.equals(((ExperimentUser)object).username)); - } - -} diff --git a/src/java/DmWebPortal/web/resources/css/login.css b/src/java/DmWebPortal/web/resources/css/login.css index f96530e8..1b5bebfd 100644 --- a/src/java/DmWebPortal/web/resources/css/login.css +++ b/src/java/DmWebPortal/web/resources/css/login.css @@ -121,6 +121,17 @@ h1 { vertical-align: middle; } +.pageTitle h2 { + font-family: Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif; + font-size: 20px; + font-weight: bold; + margin: 0px; + padding-bottom: 40px; + color: #4e80b6; + vertical-align: middle; + text-align: left; +} + .sectionText { font-size: 14px; font-weight: normal; diff --git a/src/java/DmWebPortal/web/views/experiment/edit.xhtml b/src/java/DmWebPortal/web/views/experiment/edit.xhtml index bceb961b..7ca74d86 100644 --- a/src/java/DmWebPortal/web/views/experiment/edit.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/edit.xhtml @@ -31,7 +31,7 @@ <p/> <div class="actionButton"> - <p:commandButton action="#{experimentController.update()}" value="Save" alt="Save" icon="ui-icon-check"/> + <p:commandButton action="#{experimentController.update()}" actionListener="#{experimentController.updateRemovedExperimentRoles()}" value="Save" alt="Save" icon="ui-icon-check"/> <p:commandButton action="#{experimentController.prepareList()}" immediate="true" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/> </div> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml index 28e5c19c..303a8f3b 100644 --- a/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml @@ -7,7 +7,7 @@ <p:confirmDialog id="experimentUserRemoveDialog" message="Remove user #{experimentController.getRemovedUserName()} from Experiment?" header="Remove User" severity="alert" widgetVar="experimentUserRemoveDialogWidget" styleClass="dialog"> - <p:commandButton value="Yes" oncomplete="PF('experimentUserRemoveDialogWidget').hide()" action="#{experimentController.removeUser()}" update="@form"/> + <p:commandButton value="Yes" oncomplete="PF('experimentUserRemoveDialogWidget').hide()" actionListener="#{experimentController.removeUserRoles()}" action="#{experimentController.removeUser()}" update="@form"/> <p:commandButton value="No" onclick="PF('experimentUserRemoveDialogWidget').hide()" type="button" /> </p:confirmDialog> </ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml index c66760b4..dacb92de 100644 --- a/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersEditDataTable.xhtml @@ -41,7 +41,7 @@ <h:outputText value="#{experimentUserObject.name}"/> </p:column> - <ui:param name="isAdmin" value="#{experimentController.hasSystemRole(loginController.username)}" /> + <ui:param name="isAdmin" value="#{loginController.hasSystemRole()}" /> <p:column headerText="Manager"> <h:outputText value="" styleClass="ui-icon ui-icon-check" rendered="#{experimentUserObject.isManager} AND #{!isAdmin}" /> <p:selectBooleanCheckbox value="#{experimentUserObject.isManager}" rendered="#{isAdmin}" immediate="true" /> diff --git a/src/java/DmWebPortal/web/views/loginHelp.xhtml b/src/java/DmWebPortal/web/views/loginHelp.xhtml new file mode 100644 index 00000000..632ee177 --- /dev/null +++ b/src/java/DmWebPortal/web/views/loginHelp.xhtml @@ -0,0 +1,74 @@ +<!--<?xml version='1.0' encoding='UTF-8' ?>--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://java.sun.com/jsf/facelets" + xmlns:p="http://primefaces.org/ui" + xmlns:h="http://java.sun.com/jsf/html"> + + <h:head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <link href="../resources/css/login.css" rel="stylesheet" type="text/css" /> + <title>Data Management System Login</title> + + </h:head> + + <h:body> + <div id="top" class="topContent"> + <div id="topLeft" class="topLeftContent"> + <ui:insert name="topLeft"> + <h:graphicImage alt="ANL Logo" url="../resources/images/AnlLogo167x75.png"/> + </ui:insert> + </div> + <div> + <div id="topRight" class="topRightContent"> + <ui:insert name="topRight"/> + </div> + <div id="topCenter" class="topCenterContent"> + <ui:insert name="topCenter"> + <h1>Data Management System Portal</h1> + </ui:insert> + </div> + </div> + </div> + + <div id="middle" class="middleContent"> + <p/> + <div class="pageTitle"> + <h2>Data Management Portal Login Help</h2> + </div> + </div> + + <div id="bottom" class="sectionText"> + Login Help + <p/> + + SharePoint + <p/> + Are you remembering to enter your username like this: anl\username? The "anl\" prefix is required. + + <p/> + + Internet Explorer + <p/> + If your Argonne account has been renamed (that is, your username has been changed), and you are using Internet Explorer as your browser, you may need to delete an existing, outdated security certificate as follows: + <p/> + In Internet Explorer, go to Tools -> Internet Options -> Content -> Certificates -> Personal. + <p/> + Select the certificate with the old username (issued by ANLIssuingCAv010) and click the "Remove" button. + <p/> + Clear the browser cache, close all browser windows, and restart the browser. + <p/> + Firefox + <p/> + In Firefox, clear the browser cache and cookies, close all browser windows, and restart the browser. + + <p/> + Password Problems + <p/> + Passwords can be changed and reset, and accounts can be unlocked via a set of self-service tools available online. + + </div> + </h:body> + +</html> diff --git a/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml index ac62d9b4..24c87376 100644 --- a/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml +++ b/src/java/DmWebPortal/web/views/userSystemRole/list.xhtml @@ -16,7 +16,7 @@ <h:form id="adminListForm"> <div class="actionButton"> - <p:commandButton id="systemRoleAddButton" value="Add" onclick="PF('systemRoleAddDialogWidget').show();" rendered="#{userSystemRoleController.hasSystemRole(loginController.username)}" icon="ui-icon-plus" > + <p:commandButton id="systemRoleAddButton" value="Add" onclick="PF('systemRoleAddDialogWidget').show();" rendered="#{loginController.hasSystemRole()}" icon="ui-icon-plus" > <p:tooltip for="systemRoleAddButton" value="Add new Administrators."/> </p:commandButton> diff --git a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml index b713cde1..9dc1610a 100644 --- a/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml +++ b/src/java/DmWebPortal/web/views/userSystemRole/systemRoleListDataTable.xhtml @@ -46,7 +46,7 @@ <p:column headerText="Actions" > <div class="actionLink" > - <p:commandLink oncomplete="PF('systemRoleRemoveDialogWidget').show()" rendered="#{userSystemRoleController.hasSystemRole(loginController.username) and (loginController.username != systemUserObject.username)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" > + <p:commandLink oncomplete="PF('systemRoleRemoveDialogWidget').show()" rendered="#{loginController.hasSystemRole() and (loginController.username != systemUserObject.username)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" > <f:setPropertyActionListener value="#{systemUserObject}" target="#{userSystemRoleController.systemRoleTable.currentObject}" /> </p:commandLink> </div> -- GitLab