Author: DavidK Date: 2010-02-23 20:01:32 +0100 (Tue, 23 Feb 2010) New Revision: 1833 Added: trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java Modified: trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml trunk/server/webServer2/WebContent/template/elvys-template.xhtml Log: user UC updated Modified: trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java =================================================================== --- trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBL.java 2010-02-23 19:01:32 UTC (rev 1833) @@ -1,8 +1,7 @@ package elvys.server.bl.user; -import java.lang.reflect.Field; - -import cz.elvys.commons.utils.CommonUtils; +import cz.elvys.webServer.HIBgen.Role; +import cz.elvys.webServer.HIBgen.User; import cz.elvys.webServer.toSpring.exception.ExecuteException; /** @@ -21,366 +20,31 @@ */ public UserCompetencyHolder getUserCompetencies(Integer userId) throws ExecuteException; + /** + * Checks, whether "me" is authorized to delete given user + * @param user user to delete + * @param me "me" + * @param holder my competency holder + * @return true-can be deleted, false -cannot be deleted + */ + public boolean canDeleteThisUser(User user, User me, UserCompetencyHolder holder); + /** + * Checks, whether "me" is authorized to modify given user + * @param user user to delete + * @param me "me" + * @param holder my competency holder + * @return true-can be modified, false -cannot be modified + */ + public boolean canModifyThisUser(User user, User me, UserCompetencyHolder holder); - - /** - * This class holds user competencies - * @author David + * Checks, whether "me" is autrorized to create new user with given Role + * @param subjRole role + * @param me User (me) + * @param holder competency holder + * @return */ - public static class UserCompetencyHolder { - - // consts - private static final String FIELD_NOT_INIT = "Field not initialized"; - private static final String USER_COMP_CHECK_FAILED = "Check of user role's competency object failed"; - - // role code - private String roleCode = null; - - // USER UCs RELATED - private Boolean canCreateManager = null; - private Boolean canModifyManager = null; - private Boolean canDeleteManager = null; - private Boolean canCreateUser = null; - private Boolean canModifyUser = null; - private Boolean canDeleteUser = null; - private Boolean canCreateAdmin = null; - private Boolean canModifyAdmin = null; - private Boolean canDeleteAdmin = null; - private Boolean canCreateSuperadmin = null; - private Boolean canModifySuperadmin = null; - private Boolean canDeleteSuperadmin = null; - private Boolean canListUsersOwnCompany = null; - private Boolean canListUsersAllCompanies = null; + public boolean canCreateUserWithThisRole(Role subjRole, User me, UserCompetencyHolder holder); - - private Boolean canChangeOwnRole = null; - - // COMPANY UCs RELATED - private Boolean canCreateCompany = null; - private Boolean canListCompanies = null; - - - // LAYOUT UCs RELATED - private Boolean canRunLD = null; - - // CATEGORY UCs RELATED - private Boolean canManageCategories = null; - - // ELVYS UCs RELATED - private Boolean canManageElvyses = null; - - // PLANNING UCs RELATED - private Boolean canPlan = null; - - // FILE UCs RELATED - private Boolean canManageFiles = null; - - // STATISTICS UCs RELATED - private Boolean canUseStatistics = null; - - - - /////////////////// - //// CHECKER - /////////////////// - /** - * checks, whether all fields starting on 'can..' have been set - * @throws ExecuteException - */ - public void checkUserCompetencyObject() throws ExecuteException { - Field[] fields = this.getClass().getDeclaredFields(); - try { - // traverse each field - for (Field f: fields) { - if (!f.getName().startsWith(("can"))) { - continue; - } - if (f.get(this) == null) { - String message = CommonUtils.prepareErrorMessage( - FIELD_NOT_INIT, "field", f.getName()); - throw new NullPointerException(message); - } - } - } catch (Exception e) { - String message = CommonUtils.prepareErrorMessage( - USER_COMP_CHECK_FAILED); - throw new ExecuteException(message,e); - } - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("roleCode= ").append(roleCode).append('\n'); - - try { - Field[] fields = this.getClass().getDeclaredFields(); - for(Field f: fields) { - if (!f.getName().startsWith("can")) { - continue; - } - builder.append(f.getName()).append("= ") - .append(f.get(this)).append('\n'); - } - } catch (Exception e) { - return e.getMessage(); - } - - - return builder.toString(); - } - - - - - - //////////////////// - /// GETTERS+ SETTERS - //////////////////// - - - public Boolean getCanManageCategories() { - return canManageCategories; - } - - public String getRoleCode() { - return roleCode; - } - - public void setRoleCode(String roleCode) { - this.roleCode = roleCode; - } - - - - - - - - public void setCanManageCategories(Boolean canManageCategories) { - this.canManageCategories = canManageCategories; - } - - public Boolean getCanManageElvyses() { - return canManageElvyses; - } - - public void setCanManageElvyses(Boolean canManageElvyses) { - this.canManageElvyses = canManageElvyses; - } - - public Boolean getCanCreateManager() { - return canCreateManager; - } - - - public Boolean getCanListUsersOwnCompany() { - return canListUsersOwnCompany; - } - - - public void setCanListUsersOwnCompany(Boolean canListUsersOwnCompany) { - this.canListUsersOwnCompany = canListUsersOwnCompany; - } - - - public Boolean getCanListUsersAllCompanies() { - return canListUsersAllCompanies; - } - - - public void setCanListUsersAllCompanies(Boolean canListUsersAllCompanies) { - this.canListUsersAllCompanies = canListUsersAllCompanies; - } - - - public void setCanCreateManager(Boolean canCreateManager) { - this.canCreateManager = canCreateManager; - } - - - public Boolean getCanModifyManager() { - return canModifyManager; - } - - - public void setCanModifyManager(Boolean canModifyManager) { - this.canModifyManager = canModifyManager; - } - - - public Boolean getCanDeleteManager() { - return canDeleteManager; - } - - - public void setCanDeleteManager(Boolean canDeleteManager) { - this.canDeleteManager = canDeleteManager; - } - - - public Boolean getCanCreateUser() { - return canCreateUser; - } - - - public void setCanCreateUser(Boolean canCreateUser) { - this.canCreateUser = canCreateUser; - } - - - public Boolean getCanModifyUser() { - return canModifyUser; - } - - - public void setCanModifyUser(Boolean canModifyUser) { - this.canModifyUser = canModifyUser; - } - - - public Boolean getCanDeleteUser() { - return canDeleteUser; - } - - - public void setCanDeleteUser(Boolean canDeleteUser) { - this.canDeleteUser = canDeleteUser; - } - - - public Boolean getCanCreateAdmin() { - return canCreateAdmin; - } - - - public void setCanCreateAdmin(Boolean canCreateAdmin) { - this.canCreateAdmin = canCreateAdmin; - } - - - public Boolean getCanModifyAdmin() { - return canModifyAdmin; - } - - - public void setCanModifyAdmin(Boolean canModifyAdmin) { - this.canModifyAdmin = canModifyAdmin; - } - - - public Boolean getCanDeleteAdmin() { - return canDeleteAdmin; - } - - - public void setCanDeleteAdmin(Boolean canDeleteAdmin) { - this.canDeleteAdmin = canDeleteAdmin; - } - - - public Boolean getCanCreateSuperadmin() { - return canCreateSuperadmin; - } - - - public void setCanCreateSuperadmin(Boolean canCreateSuperadmin) { - this.canCreateSuperadmin = canCreateSuperadmin; - } - - - public Boolean getCanModifySuperadmin() { - return canModifySuperadmin; - } - - - public void setCanModifySuperadmin(Boolean canModifySuperadmin) { - this.canModifySuperadmin = canModifySuperadmin; - } - - - public Boolean getCanDeleteSuperadmin() { - return canDeleteSuperadmin; - } - - - public void setCanDeleteSuperadmin(Boolean canDeleteSuperadmin) { - this.canDeleteSuperadmin = canDeleteSuperadmin; - } - - public Boolean getCanChangeOwnRole() { - return canChangeOwnRole; - } - - - public void setCanChangeOwnRole(Boolean canChangeOwnRole) { - this.canChangeOwnRole = canChangeOwnRole; - } - - - public Boolean getCanCreateCompany() { - return canCreateCompany; - } - - - public void setCanCreateCompany(Boolean canCreateCompany) { - this.canCreateCompany = canCreateCompany; - } - - - public Boolean getCanListCompanies() { - return canListCompanies; - } - - - public void setCanListCompanies(Boolean canListCompanies) { - this.canListCompanies = canListCompanies; - } - - - public Boolean getCanRunLD() { - return canRunLD; - } - - - public void setCanRunLD(Boolean canRunLD) { - this.canRunLD = canRunLD; - } - - - public Boolean getCanUseStatistics() { - return canUseStatistics; - } - - - public void setCanUseStatistics(Boolean canUseStatistics) { - this.canUseStatistics = canUseStatistics; - } - - - public Boolean getCanManageFiles() { - return canManageFiles; - } - - - public void setCanManageFiles(Boolean canManageFiles) { - this.canManageFiles = canManageFiles; - } - - - public Boolean getCanPlan() { - return canPlan; - } - - - public void setCanPlan(Boolean canPlan) { - this.canPlan = canPlan; - } - } - - - - } Modified: trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java =================================================================== --- trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLImpl.java 2010-02-23 19:01:32 UTC (rev 1833) @@ -65,7 +65,66 @@ + + + @Override + public boolean canDeleteThisUser(User user, User me, UserCompetencyHolder holder) { + if (user.getId().equals(me.getId())) { + return false; + } + if (user.isSystem()) { + return false; + } + String r = user.getRole().getRole(); + if (r.equals("user") && holder.getCanDeleteUser()) { + return true; + } else if (r.equals("manager") && holder.getCanDeleteManager()) { + return true; + } else if (r.equals("admin") && holder.getCanDeleteAdmin()) { + return true; + } else if (r.equals("superadmin") && holder.getCanDeleteSuperadmin()) { + return true; + } + return false; + } + + @Override + public boolean canModifyThisUser(User user, User me, UserCompetencyHolder holder) { + if (user.getId().equals(me.getId())) { + return true; + } + String r = user.getRole().getRole(); + if (r.equals("user") && holder.getCanModifyUser()) { + return true; + } else if (r.equals("manager") && holder.getCanModifyManager()) { + return true; + } else if (r.equals("admin") && holder.getCanModifyAdmin()) { + return true; + } else if (r.equals("superadmin") && holder.getCanModifySuperadmin()) { + return true; + } + return false; + } + + @Override + public boolean canCreateUserWithThisRole(Role subjRole, User me, + UserCompetencyHolder holder) { + + String r = subjRole.getRole(); + if (r.equals("user") && holder.getCanCreateUser()) { + return true; + } else if (r.equals("manager") && holder.getCanCreateManager()) { + return true; + } else if (r.equals("admin") && holder.getCanCreateAdmin()) { + return true; + } else if (r.equals("superadmin") && holder.getCanCreateSuperadmin()) { + return true; + } + return false; + } + + @Override public UserCompetencyHolder getUserCompetencies(Integer userId) throws ExecuteException { if (userId == null) { @@ -108,6 +167,20 @@ if (ac >= AC_USERS_OWN_COMPANY) { val = true; } + h.setCanCreateAnyUser(val); + } + { + boolean val = false; + if (ac >= AC_USERS_ALL_COMPANIES) { + val = true; + } + h.setCanCreateUserOtherCompany(val); + } + { + boolean val = false; + if (ac >= AC_USERS_OWN_COMPANY) { + val = true; + } h.setCanCreateManager(val); } { Modified: trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java =================================================================== --- trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyBLTest.java 2010-02-23 19:01:32 UTC (rev 1833) @@ -14,7 +14,7 @@ import static org.junit.Assert.*; import elvys.server.bl.Fact; -import elvys.server.bl.user.UserCompetencyBL.UserCompetencyHolder; +import elvys.server.bl.user.UserCompetencyHolder; public class UserCompetencyBLTest { Added: trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java =================================================================== --- trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java (rev 0) +++ trunk/server/elvysCommons/src/elvys/server/bl/user/UserCompetencyHolder.java 2010-02-23 19:01:32 UTC (rev 1833) @@ -0,0 +1,372 @@ +package elvys.server.bl.user; + +import java.lang.reflect.Field; + +import cz.elvys.commons.utils.CommonUtils; +import cz.elvys.webServer.toSpring.exception.ExecuteException; + +/** + * This class holds user competencies + * @author David + */ +public class UserCompetencyHolder { + + // consts + private static final String FIELD_NOT_INIT = "Field not initialized"; + private static final String USER_COMP_CHECK_FAILED = "Check of user role's competency object failed"; + + // role code + private String roleCode = null; + + // USER UCs RELATED + private Boolean canCreateManager = null; + private Boolean canModifyManager = null; + private Boolean canDeleteManager = null; + private Boolean canCreateUser = null; + private Boolean canCreateAnyUser = null; + private Boolean canCreateUserOtherCompany = null; + private Boolean canModifyUser = null; + private Boolean canDeleteUser = null; + private Boolean canCreateAdmin = null; + private Boolean canModifyAdmin = null; + private Boolean canDeleteAdmin = null; + private Boolean canCreateSuperadmin = null; + private Boolean canModifySuperadmin = null; + private Boolean canDeleteSuperadmin = null; + private Boolean canListUsersOwnCompany = null; + private Boolean canListUsersAllCompanies = null; + + + private Boolean canChangeOwnRole = null; + + // COMPANY UCs RELATED + private Boolean canCreateCompany = null; + private Boolean canListCompanies = null; + + + // LAYOUT UCs RELATED + private Boolean canRunLD = null; + + // CATEGORY UCs RELATED + private Boolean canManageCategories = null; + + // ELVYS UCs RELATED + private Boolean canManageElvyses = null; + + // PLANNING UCs RELATED + private Boolean canPlan = null; + + // FILE UCs RELATED + private Boolean canManageFiles = null; + + // STATISTICS UCs RELATED + private Boolean canUseStatistics = null; + + + + /////////////////// + //// CHECKER + /////////////////// + /** + * checks, whether all fields starting on 'can..' have been set + * @throws ExecuteException + */ + public void checkUserCompetencyObject() throws ExecuteException { + Field[] fields = this.getClass().getDeclaredFields(); + try { + // traverse each field + for (Field f: fields) { + if (!f.getName().startsWith(("can"))) { + continue; + } + if (f.get(this) == null) { + String message = CommonUtils.prepareErrorMessage( + FIELD_NOT_INIT, "field", f.getName()); + throw new NullPointerException(message); + } + } + } catch (Exception e) { + String message = CommonUtils.prepareErrorMessage( + USER_COMP_CHECK_FAILED); + throw new ExecuteException(message,e); + } + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("roleCode= ").append(roleCode).append('\n'); + + try { + Field[] fields = this.getClass().getDeclaredFields(); + for(Field f: fields) { + if (!f.getName().startsWith("can")) { + continue; + } + builder.append(f.getName()).append("= ") + .append(f.get(this)).append('\n'); + } + } catch (Exception e) { + return e.getMessage(); + } + + + return builder.toString(); + } + + + + + + //////////////////// + /// GETTERS+ SETTERS + //////////////////// + + + public Boolean getCanManageCategories() { + return canManageCategories; + } + + public String getRoleCode() { + return roleCode; + } + + public void setRoleCode(String roleCode) { + this.roleCode = roleCode; + } + + public Boolean getCanCreateUserOtherCompany() { + return canCreateUserOtherCompany; + } + + public void setCanCreateUserOtherCompany(Boolean canCreateUserOtherCompany) { + this.canCreateUserOtherCompany = canCreateUserOtherCompany; + } + + public void setCanManageCategories(Boolean canManageCategories) { + this.canManageCategories = canManageCategories; + } + + public Boolean getCanManageElvyses() { + return canManageElvyses; + } + + public void setCanManageElvyses(Boolean canManageElvyses) { + this.canManageElvyses = canManageElvyses; + } + + public Boolean getCanCreateManager() { + return canCreateManager; + } + + public Boolean getCanCreateAnyUser() { + return canCreateAnyUser; + } + + public void setCanCreateAnyUser(Boolean canCreateAnyUser) { + this.canCreateAnyUser = canCreateAnyUser; + } + + public Boolean getCanListUsersOwnCompany() { + return canListUsersOwnCompany; + } + + + public void setCanListUsersOwnCompany(Boolean canListUsersOwnCompany) { + this.canListUsersOwnCompany = canListUsersOwnCompany; + } + + + public Boolean getCanListUsersAllCompanies() { + return canListUsersAllCompanies; + } + + + public void setCanListUsersAllCompanies(Boolean canListUsersAllCompanies) { + this.canListUsersAllCompanies = canListUsersAllCompanies; + } + + + public void setCanCreateManager(Boolean canCreateManager) { + this.canCreateManager = canCreateManager; + } + + + public Boolean getCanModifyManager() { + return canModifyManager; + } + + + public void setCanModifyManager(Boolean canModifyManager) { + this.canModifyManager = canModifyManager; + } + + + public Boolean getCanDeleteManager() { + return canDeleteManager; + } + + + public void setCanDeleteManager(Boolean canDeleteManager) { + this.canDeleteManager = canDeleteManager; + } + + + public Boolean getCanCreateUser() { + return canCreateUser; + } + + + public void setCanCreateUser(Boolean canCreateUser) { + this.canCreateUser = canCreateUser; + } + + + public Boolean getCanModifyUser() { + return canModifyUser; + } + + + public void setCanModifyUser(Boolean canModifyUser) { + this.canModifyUser = canModifyUser; + } + + + public Boolean getCanDeleteUser() { + return canDeleteUser; + } + + + public void setCanDeleteUser(Boolean canDeleteUser) { + this.canDeleteUser = canDeleteUser; + } + + + public Boolean getCanCreateAdmin() { + return canCreateAdmin; + } + + + public void setCanCreateAdmin(Boolean canCreateAdmin) { + this.canCreateAdmin = canCreateAdmin; + } + + + public Boolean getCanModifyAdmin() { + return canModifyAdmin; + } + + + public void setCanModifyAdmin(Boolean canModifyAdmin) { + this.canModifyAdmin = canModifyAdmin; + } + + + public Boolean getCanDeleteAdmin() { + return canDeleteAdmin; + } + + + public void setCanDeleteAdmin(Boolean canDeleteAdmin) { + this.canDeleteAdmin = canDeleteAdmin; + } + + + public Boolean getCanCreateSuperadmin() { + return canCreateSuperadmin; + } + + + public void setCanCreateSuperadmin(Boolean canCreateSuperadmin) { + this.canCreateSuperadmin = canCreateSuperadmin; + } + + + public Boolean getCanModifySuperadmin() { + return canModifySuperadmin; + } + + + public void setCanModifySuperadmin(Boolean canModifySuperadmin) { + this.canModifySuperadmin = canModifySuperadmin; + } + + + public Boolean getCanDeleteSuperadmin() { + return canDeleteSuperadmin; + } + + + public void setCanDeleteSuperadmin(Boolean canDeleteSuperadmin) { + this.canDeleteSuperadmin = canDeleteSuperadmin; + } + + public Boolean getCanChangeOwnRole() { + return canChangeOwnRole; + } + + + public void setCanChangeOwnRole(Boolean canChangeOwnRole) { + this.canChangeOwnRole = canChangeOwnRole; + } + + + public Boolean getCanCreateCompany() { + return canCreateCompany; + } + + + public void setCanCreateCompany(Boolean canCreateCompany) { + this.canCreateCompany = canCreateCompany; + } + + + public Boolean getCanListCompanies() { + return canListCompanies; + } + + + public void setCanListCompanies(Boolean canListCompanies) { + this.canListCompanies = canListCompanies; + } + + + public Boolean getCanRunLD() { + return canRunLD; + } + + + public void setCanRunLD(Boolean canRunLD) { + this.canRunLD = canRunLD; + } + + + public Boolean getCanUseStatistics() { + return canUseStatistics; + } + + + public void setCanUseStatistics(Boolean canUseStatistics) { + this.canUseStatistics = canUseStatistics; + } + + + public Boolean getCanManageFiles() { + return canManageFiles; + } + + + public void setCanManageFiles(Boolean canManageFiles) { + this.canManageFiles = canManageFiles; + } + + + public Boolean getCanPlan() { + return canPlan; + } + + + public void setCanPlan(Boolean canPlan) { + this.canPlan = canPlan; + } +} Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserEditBean.java 2010-02-23 19:01:32 UTC (rev 1833) @@ -18,6 +18,8 @@ import cz.elvys.webServer.utils.faces.MessageUtils; import elvys.server.bl.Fact; import elvys.server.bl.user.UserBL; +import elvys.server.bl.user.UserCompetencyBL; +import elvys.server.bl.user.UserCompetencyHolder; public class UserEditBean implements Serializable { // fields @@ -109,6 +111,21 @@ this.sizeOfRolesToSelect = sizeOfRolesToSelect; } + public boolean isUpdatingProfile() { + return updatingProfile; + } + + public void setUpdatingProfile(boolean updatingProfile) { + this.updatingProfile = updatingProfile; + } + + public String getPassword() { + return password; + } + public void setPassword(String password) { + this.password = password; + } + /** * @return */ @@ -156,7 +173,6 @@ } selectedUser.setRole(role); - if(!isEdit && password.equals("")){ FacesMessage message = MessageUtils.getMessage( "user.form.emptyPassword", null, FacesMessage.SEVERITY_ERROR); @@ -165,14 +181,6 @@ result = "error"; } - if(!isEdit && password.equals("")){ - FacesMessage message = MessageUtils.getMessage( - "user.form.emptyPassword", null, FacesMessage.SEVERITY_ERROR); - FacesContext fc = FacesContext.getCurrentInstance(); - fc.addMessage("editUserForm:password", message); - result = "error"; - } - // password and passwordAgain are different if (!password.equals(passwordAgain)) { FacesMessage message = MessageUtils.getMessage( @@ -293,22 +301,19 @@ private List<SelectItem> loadPermittedRolesList() { rolesList = userBL.loadPermittedRolesList(); - UserLoginBean me = BeanManager.getUser(); + + UserLoginBean ulb = BeanManager.getUser(); + User me = ulb.getUser(); + UserCompetencyBL ucbl = Fact.getUserCompetencyBL(); + UserCompetencyHolder holder = ulb.getCompetency(); List<SelectItem> roles = new LinkedList<SelectItem>(); - if (me.getCompStr().equalsIgnoreCase("superadmin")){ - // superadmin is allowed to create user with each competency - roles.add(prepareSelectItem("user")); - roles.add(prepareSelectItem("admin")); - roles.add(prepareSelectItem("superadmin")); - } else if (me.getCompStr().equalsIgnoreCase("admin")) { - // admin is not allowed to create user with "superadmin" competency - roles.add(prepareSelectItem("user")); - roles.add(prepareSelectItem("admin")); - } else { - // user is allowed to create only users - roles.add(prepareSelectItem("user")); - } + for (Role role: rolesList) { + boolean canCreate = ucbl.canCreateUserWithThisRole(role, me, holder); + if (canCreate) { + roles.add(prepareSelectItem(role.getRole())); + } + } return roles; } @@ -325,19 +330,4 @@ return si; } - public boolean isUpdatingProfile() { - return updatingProfile; - } - - public void setUpdatingProfile(boolean updatingProfile) { - this.updatingProfile = updatingProfile; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } } Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserListBean.java 2010-02-23 19:01:32 UTC (rev 1833) @@ -1,6 +1,7 @@ package cz.elvys.webServer.beans.user; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import javax.faces.event.ActionEvent; @@ -12,7 +13,8 @@ import cz.elvys.webServer.utils.faces.BeanManager; import elvys.server.bl.Fact; import elvys.server.bl.user.UserBL; -import elvys.server.bl.user.UserCompetencyBL.UserCompetencyHolder; +import elvys.server.bl.user.UserCompetencyBL; +import elvys.server.bl.user.UserCompetencyHolder; /** * @author David @@ -25,9 +27,10 @@ // const private static final long serialVersionUID = 8092026699388193893L; - private List<User> users = null; + private List<UserListRecord> userRecords = null; private User selectedUser = null; - + private boolean canSearchInCompany = false; + // filter variables private String filterValue; @@ -38,14 +41,16 @@ this.userBL = Fact.getUserBL(); } - public List<User> getUsers() { - return users; + public static long getSerialVersionUID() { + return serialVersionUID; } - public void setUsers(List<User> users) { - this.users = users; + + public List<UserListRecord> getUserRecords() { + return userRecords; } + public User getSelectedUser() { return selectedUser; } @@ -63,9 +68,12 @@ boolean canListUsersOfCompany = uch.getCanListUsersOwnCompany(); boolean canListAllUsers = uch.getCanListUsersAllCompanies(); + List<User> users = null; if (canListAllUsers) { + // list all users users = userBL.loadAllUsers(); } else if (canListUsersOfCompany) { + // list only users of own company int compID = user.getCompanyID(); users = userBL.loadUsersOfCompany(compID); } else { @@ -74,12 +82,31 @@ log.error(message); throw new RuntimeException(message); } + + // fill userRecords list + userRecords = new ArrayList<UserListRecord>(); + UserCompetencyBL ucbl = Fact.getUserCompetencyBL(); + User me = user.getUser(); + for (User subj: users) { + boolean canDeleteThisUser = ucbl.canDeleteThisUser( + subj, me, uch); + boolean canModifyThisUser = ucbl.canModifyThisUser( + subj, me, uch); + + UserListRecord rec = new UserListRecord( + subj,canDeleteThisUser,canModifyThisUser); + userRecords.add(rec); + } + + canSearchInCompany = uch.getCanListUsersAllCompanies(); + + return "listOfUsers"; } public void deleteUser(ActionEvent aev) { userBL.deleteUser(selectedUser); - users.remove(selectedUser); + prepareListOfUsers(); } /** @@ -89,7 +116,8 @@ * @return */ public boolean filterByValue(Object current) { - User user = (User) current; + UserListRecord rec = (UserListRecord) current; + User user = rec.getUser(); if (filterValue == null || filterValue.length() == 0) { return true; } @@ -101,6 +129,7 @@ if (user.getRealname().toLowerCase().contains(filterValueLowerCase)) { return true; } if (user.getEmail().toLowerCase().contains(filterValueLowerCase)) { return true; } if (user.getPhone().toLowerCase().contains(filterValueLowerCase)) { return true; } + if (canSearchInCompany && user.getCompany().getName().toLowerCase().contains(filterValueLowerCase)) {return true;} return false; } @@ -112,5 +141,44 @@ public void setFilterValue(String filterValue) { this.filterValue = filterValue; } + + + public static class UserListRecord { + private User user; + private boolean canBeDeleted; + private boolean canBeModified; + + public UserListRecord(User user, boolean canBeDeleted, boolean canBeModified) { + this.user = user; + this.canBeDeleted = canBeDeleted; + this.canBeModified = canBeModified; + } + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public boolean isCanBeDeleted() { + return canBeDeleted; + } + + public void setCanBeDeleted(boolean canBeDeleted) { + this.canBeDeleted = canBeDeleted; + } + + public boolean isCanBeModified() { + return canBeModified; + } + + public void setCanBeModified(boolean canBeModified) { + this.canBeModified = canBeModified; + } + + } + + } Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/user/UserLoginBean.java 2010-02-23 19:01:32 UTC (rev 1833) @@ -19,7 +19,7 @@ import elvys.server.bl.Fact; import elvys.server.bl.user.UserBL; import elvys.server.bl.user.UserCompetencyBL; -import elvys.server.bl.user.UserCompetencyBL.UserCompetencyHolder; +import elvys.server.bl.user.UserCompetencyHolder; Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/labels_cs.properties 2010-02-23 19:01:32 UTC (rev 1833) @@ -135,6 +135,7 @@ user.edit.form.phone=Telefon user.edit.form.username=U\u017Eivatelsk\u00E9 jm\u00E9no user.edit.form.password=Heslo +user.edit.form.password.edit.optional.tooltip=Zad\u00E1n\u00ED hesla p\u0159i editaci u\u017Eivatele je voliteln\u00E9. Pokud nebude zad\u00E1no, z\u016Fstane nezm\u011Bn\u011Bno. user.edit.form.passwordagain=Heslo znovu user.edit.form.companylist=Spole\u010Dnost user.edit.form.rolelist=Role Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties 2010-02-23 19:01:32 UTC (rev 1833) @@ -1,21 +1,21 @@ company.form.duplicitename=Jm\u00E9no spole\u010Dnosti "{0}" ji\u017E existuje. user.form.badPasswordAgain=\u0160patn\u011B zopakovan\u00E9 heslo. -user.form.loginAlreadyExists=Uveden\u00e9 u\u017eivatelsk\u00e9 jm\u00e9no se ji\u017e v datab\u00e1zi nach\u00e1z\u00ed, uve\u010fte pros\u00edm jin\u00e9 -user.form.setCorrectEmail=Zadejte pros\u00edm email ve spr\u00e1vn\u00e9m tvaru. -user.form.emptyPassword=Vypl\u0148te pros\u00edm heslo -user.form.user.form.setCorrectEmail=Zadejte pros\u00edm email ve spr\u00e1vn\u00e9m tvaru ( nap\u0159. jan.novak@xxxxxxxx ) +user.form.loginAlreadyExists=Uveden\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no se ji\u017E v datab\u00E1zi nach\u00E1z\u00ED, uve\u010Fte pros\u00EDm jin\u00E9 +user.form.setCorrectEmail=Zadejte pros\u00EDm email ve spr\u00E1vn\u00E9m tvaru. +user.form.emptyPassword=Vypl\u0148te pros\u00EDm heslo +user.form.user.form.setCorrectEmail=Zadejte pros\u00EDm email ve spr\u00E1vn\u00E9m tvaru ( nap\u0159. jan.novak@xxxxxxxx ) -login.lostPassword.UserNotExists=Litujeme, ale zasl\u00e1n\u00ed emailu se nezda\u0159ilo, zkontrolujte pros\u00edm u\u017eivatelsk\u00e9 jm\u00e9no. -login.lostPassword.EmptyUsername=Vypl\u0148te pros\u00edm u\u017eivatelsk\u00e9 jm\u00e9no -login.lostPassword.Email.Subject=Do\u010dasn\u00e9 heslo ze syst\u00e9mu elvys.cz -login.lostPassword.Email.Body1=Dobr\u00fd den, \n\nze syst\u00e9mu elvys V\u00e1m bylo zasl\u00e1no do\u010dasn\u00e9 heslo pro p\u0159ihl\u00e1\u0161en\u00ed. Heslo je k pou\u017eit\u00ed 24 hodin od pod\u00e1n\u00ed \u017e\u00e1dost, proto je nutn\u00e9 si heslo po p\u0159\u00edhl\u00e1\u0161en\u00ed ihned zm\u011bnit.\n -login.lostPassword.Email.Body2=\nPokud jste ne\u017e\u00e1dali o zasl\u00e1n\u00ed nov\u00e9ho hesla, tuto zpr\u00e1vu pros\u00edm ignorujte.\n\nV\u00e1\u0161 t\u00fdm elvys.cz\n\n -login.lostPassword.Email.NotSend=Litujeme, ale email se nepoda\u0159ilo odeslat. Kontaktujte pros\u00edm spr\u00e1vce syst\u00e9mu. -login.lostPassword.Email.SuccessfullySend=Na email p\u0159i\u0159azen\u00fd k zadan\u00e9mu u\u017eivatelsk\u00e9mu jm\u00e9nu bylo odesl\u00e1no do\u010dasn\u00e9 heslo. +login.lostPassword.UserNotExists=Litujeme, ale zasl\u00E1n\u00ED emailu se nezda\u0159ilo, zkontrolujte pros\u00EDm u\u017Eivatelsk\u00E9 jm\u00E9no. +login.lostPassword.EmptyUsername=Vypl\u0148te pros\u00EDm u\u017Eivatelsk\u00E9 jm\u00E9no +login.lostPassword.Email.Subject=Do\u010Dasn\u00E9 heslo ze syst\u00E9mu elvys.cz +login.lostPassword.Email.Body1=Dobr\u00FD den, \n\nze syst\u00E9mu elvys V\u00E1m bylo zasl\u00E1no do\u010Dasn\u00E9 heslo pro p\u0159ihl\u00E1\u0161en\u00ED. Heslo je k pou\u017Eit\u00ED 24 hodin od pod\u00E1n\u00ED \u017E\u00E1dost, proto je nutn\u00E9 si heslo po p\u0159\u00EDhl\u00E1\u0161en\u00ED ihned zm\u011Bnit.\n +login.lostPassword.Email.Body2=\nPokud jste ne\u017E\u00E1dali o zasl\u00E1n\u00ED nov\u00E9ho hesla, tuto zpr\u00E1vu pros\u00EDm ignorujte.\n\nV\u00E1\u0161 t\u00FDm elvys.cz\n\n +login.lostPassword.Email.NotSend=Litujeme, ale email se nepoda\u0159ilo odeslat. Kontaktujte pros\u00EDm spr\u00E1vce syst\u00E9mu. +login.lostPassword.Email.SuccessfullySend=Na email p\u0159i\u0159azen\u00FD k zadan\u00E9mu u\u017Eivatelsk\u00E9mu jm\u00E9nu bylo odesl\u00E1no do\u010Dasn\u00E9 heslo. login.bad=Neplatn\u00E9 p\u0159ihl\u00E1\u0161en\u00ED. Zkuste to pros\u00EDm znovu. -login.temporaryPassExpired=Platnost do\u010dasn\u00e9ho hesla vypr\u0161ela, nechte si zaslat nov\u00e9 do\u010dasn\u00e9 heslo. -login.temporaryPassWrong=Do\u010dasn\u00e9 heslo nesouhlas\u00ed, zkuste jej zadat znovu nebo si nechte zaslat nov\u00e9. +login.temporaryPassExpired=Platnost do\u010Dasn\u00E9ho hesla vypr\u0161ela, nechte si zaslat nov\u00E9 do\u010Dasn\u00E9 heslo. +login.temporaryPassWrong=Do\u010Dasn\u00E9 heslo nesouhlas\u00ED, zkuste jej zadat znovu nebo si nechte zaslat nov\u00E9. elvys.list.modal.nightmode.badtime=\u010Cas mus\u00ED b\u00FDt ve form\u00E1tu\: "HH\:mm". Modified: trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/WebContent/secured/userrel/editUserForm.xhtml 2010-02-23 19:01:32 UTC (rev 1833) @@ -25,48 +25,55 @@ <h:form id="editUserForm"> <h:panelGrid columns="2"> + <!-- USERNAME --> <h:panelGroup rendered="#{!userEditBean.updatingProfile}"> <elvys:label id="UserEditUsernameLabel" - label="#{lbl['user.edit.form.username']}"></elvys:label> + label="#{lbl['user.edit.form.username']}"/> </h:panelGroup> <h:panelGroup rendered="#{!userEditBean.updatingProfile}"> <elvys:inputText2 id="usernameField" - value="#{userEditBean.selectedUser.username}" required="true" /> + value="#{userEditBean.selectedUser.username}" + required="true" /> </h:panelGroup> - + + <!-- SURNAME --> <elvys:label id="UserEditSurnameLabel" - label="#{lbl['user.edit.form.surname']}"></elvys:label> + label="#{lbl['user.edit.form.surname']}"/> <elvys:inputText2 id="surname" value="#{userEditBean.selectedUser.surname}" required="true" /> - + + <!-- REALNAME --> <elvys:label id="UserEditRealnameLabel" - label="#{lbl['user.edit.form.realname']}"></elvys:label> + label="#{lbl['user.edit.form.realname']}"/> <elvys:inputText2 id="realnameField" value="#{userEditBean.selectedUser.realname}" required="true" /> + <!-- EMAIL --> <elvys:label id="UserEditEmailLabel" - label="#{lbl['user.edit.form.email']}"></elvys:label> + label="#{lbl['user.edit.form.email']}"/> <elvys:inputText2 id="emailField" value="#{userEditBean.selectedUser.email}" required="true" /> + <!-- PHONE --> <elvys:label id="UserEditPhoneLabel" - label="#{lbl['user.edit.form.phone']}"></elvys:label> + label="#{lbl['user.edit.form.phone']}"/> <elvys:inputText2 id="phoneField" value="#{userEditBean.selectedUser.phone}" required="false" /> + <!-- PASS --> <elvys:label id="UserEditPassLabel" label="#{lbl['user.edit.form.password']}" - ></elvys:label> + tooltip="#{(userEditBean.updatingProfile || userEditBean.updating) ? lbl['user.edit.form.password.edit.optional.tooltip'] : ''}"/> <h:panelGroup> <h:inputSecret id="password" value="#{userEditBean.password}" required="#{!(userEditBean.updating || userEditBean.updatingProfile)}" errorStyle="border:1px solid red; color:red;" /> <h:message for="password" styleClass="error"/> </h:panelGroup> - + + <!-- PASS AGAIN --> <elvys:label id="UserEditPassagainLabel" - label="#{lbl['user.edit.form.passwordagain']}" - ></elvys:label> + label="#{lbl['user.edit.form.passwordagain']}"/> <h:panelGroup> <h:inputSecret id="passwordAgain" value="#{userEditBean.passwordAgain}" @@ -74,12 +81,13 @@ <h:message for="passwordAgain" styleClass="error" /> </h:panelGroup> + + <!-- ROLE --> <h:panelGroup rendered="#{!userEditBean.updatingProfile}"> <elvys:label id="UserEditRoleListLabel" label="#{lbl['user.edit.form.rolelist']}" tooltip="#{lbl['user.edit.form.rolelist.tooltip']}" - rendered="#{!userEditBean.updatingProfile}" - ></elvys:label> + rendered="#{!userEditBean.updatingProfile}" /> </h:panelGroup> <h:panelGroup rendered="#{!userEditBean.updatingProfile}"> <h:selectOneListbox id="roleField" required="true" @@ -90,16 +98,19 @@ <h:message for="roleField" styleClass="error" /> </h:panelGroup> - - <h:panelGroup rendered="#{user.user.system}" > + <!-- COMPANY --> + <h:panelGroup rendered="#{!userEditBean.updating + and !userEditBean.updatingProfile + and user.competency.canCreateUserOtherCompany}" > <elvys:label id="UserEditCompanyListLabel" - label="#{lbl['user.edit.form.companylist']}" - rendered="#{user.user.system}"></elvys:label> + label="#{lbl['user.edit.form.companylist']}"/> </h:panelGroup> - <h:panelGroup rendered="#{user.user.system}" > + <h:panelGroup rendered="#{!userEditBean.updating + and !userEditBean.updatingProfile + and user.competency.canCreateUserOtherCompany}" > <h:selectOneListbox id="companyField" required="true" value="#{userEditBean.selectedUser.company}" - size="#{userEditBean.sizeOfCompaniesToSelect >=3? 3 : userEditBean.sizeOfCompaniesToSelect}"> + size="#{userEditBean.sizeOfCompaniesToSelect >=4? 4 : userEditBean.sizeOfCompaniesToSelect}"> <f:converter converterId="companyConverter" /> <f:selectItems value="#{userEditBean.companiesToSelect}" /> </h:selectOneListbox> @@ -110,14 +121,16 @@ <!-- OK BUTTON --> <h:commandButton value="#{lbl['user.edit.form.button.ok']}" - action="#{userEditBean.saveUser}" rendered="#{!(userEditBean.updating || userEditBean.updatingProfile)}" /> + rendered="#{!(userEditBean.updating || userEditBean.updatingProfile)}" + action="#{userEditBean.saveUser}" /> <!-- MODIFY BUTTON --> <h:commandButton value="#{lbl['user.edit.form.button.modify']}" - action="#{userEditBean.updateUser}" rendered="#{(userEditBean.updating || userEditBean.updatingProfile)}" /> + rendered="#{(userEditBean.updating || userEditBean.updatingProfile)}" + action="#{userEditBean.updateUser}" /> <!-- CANCEL BUTTON --> <h:commandButton value="#{lbl['user.edit.form.button.cancel']}" - immediate="true" action="#{usersBean.prepareListOfUsers}" - rendered="#{userEditBean.updating}" /> + rendered="#{userEditBean.updating}" + immediate="true" action="#{usersBean.prepareListOfUsers}" /> </h:form> </rich:panel> </ui:define> Modified: trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/WebContent/secured/userrel/listOfUsers.xhtml 2010-02-23 19:01:32 UTC (rev 1833) @@ -17,7 +17,7 @@ <rich:panel id="listOfUsersPanel"> <f:facet name="header">#{lbl['user.list.body.title']}</f:facet> <h:panelGrid id="listOfUsers"> - <rich:extendedDataTable value="#{usersBean.users}" + <rich:extendedDataTable value="#{usersBean.userRecords}" var="user_iterator" rows="10" height="370px;" enableContextMenu="false" id="tableListOfUsers" reRender="datascroller" sortMode="single" @@ -31,12 +31,15 @@ <rich:column colspan="#{6+(user.user.system?1:0)}"> <div class="controlPanel"> <h:panelGroup> - <a4j:commandButton id="CreateNewUser" + <h:commandButton id="CreateNewUser" image="/images/icons/create.png" - action="#{userEditBean.prepareCreateUserForm}"> + action="#{userEditBean.prepareCreateUserForm}" + rendered="#{user.competency.canCreateAnyUser}"> <f:setPropertyActionListener value="${false}" - target="#{userEditBean.updating}" /> - </a4j:commandButton> + target="#{userEditBean.updating}" /> + <f:setPropertyActionListener value="${false}" + target="#{userEditBean.updatingProfile}" /> + </h:commandButton> <rich:toolTip for="CreateNewUser"> <h:outputText value="#{lbl['user.list.body.create.tooltip']}" /> </rich:toolTip> @@ -54,58 +57,56 @@ </rich:columnGroup> </f:facet> - <rich:column sortBy="#{user_iterator.company.name}" width="110px" + <rich:column sortBy="#{user_iterator.user.company.name}" width="110px" rendered="#{user.user.system}"> <f:facet name="header"> #{lbl['user.list.body.company']} </f:facet> - <h:outputText value="#{user_iterator.company.name}" /> + <h:outputText value="#{user_iterator.user.company.name}" /> </rich:column> <rich:column width="140px" filterMethod="#{usersBean.filterByValue}" - sortBy="#{user_iterator.surname}"> + sortBy="#{user_iterator.user.surname}"> <f:facet name="header">#{lbl['user.list.body.firstname']}</f:facet> - <h:outputText value="#{user_iterator.surname} #{user_iterator.realname}" /> + <h:outputText value="#{user_iterator.user.surname} #{user_iterator.user.realname}" /> </rich:column> - <rich:column width="60px" sortBy="#{user_iterator.role.role}"> + <rich:column width="60px" sortBy="#{user_iterator.user.role.role}"> <f:facet name="header">#{lbl['user.list.body.role']}</f:facet> - <h:outputText value="#{user_iterator.role.role}" > + <h:outputText value="#{user_iterator.user.role.role}" > <f:converter converterId="localizedRoleConverter"/> </h:outputText> </rich:column> - <rich:column width="100px" sortBy="#{user_iterator.username}"> + <rich:column width="100px" sortBy="#{user_iterator.user.username}"> <f:facet name="header">#{lbl['user.list.body.username']}</f:facet> - <h:outputText value="#{user_iterator.username}" /> + <h:outputText value="#{user_iterator.user.username}" /> </rich:column> - <rich:column width="180px" sortBy="#{user_iterator.email}"> + <rich:column width="180px" sortBy="#{user_iterator.user.email}"> <f:facet name="header">#{lbl['user.list.body.email']}</f:facet> - <h:outputText value="#{user_iterator.email}" /> + <h:outputText value="#{user_iterator.user.email}" /> </rich:column> - <rich:column width="90px" sortBy="#{user_iterator.phone}"> + <rich:column width="90px" sortBy="#{user_iterator.user.phone}"> <f:facet name="header">#{lbl['user.list.body.phone']}</f:facet> - <h:outputText value="#{user_iterator.phone}" /> + <h:outputText value="#{user_iterator.user.phone}" /> </rich:column> + <!-- EDIT USER --> <rich:column width="90px"> <f:facet name="header">#{lbl['user.list.body.edit']}</f:facet> <div class="list-operations-main"> <div class="list-operations-item"> - <a4j:commandButton id="EditUser" image="/images/icons/edit.png" + <h:commandButton id="EditUser" image="/images/icons/edit.png" action="#{userEditBean.prepareUpdateUserForm}" - rendered="#{( - (user.compStr eq 'admin' and user_iterator.role.role eq 'user') || - (user.compStr eq 'superadmin') - )}" - > - <f:setPropertyActionListener value="#{user_iterator}" - target="#{userEditBean.selectedUser}" /> - <f:setPropertyActionListener value="${true}" - target="#{userEditBean.updating}" /> - </a4j:commandButton> + rendered="#{user_iterator.canBeModified}"> + <f:setPropertyActionListener target="#{userEditBean.selectedUser}" value="#{user_iterator.user}"/> + <f:setPropertyActionListener target="#{userEditBean.updating}" + value="#{(user_iterator.user.id == user.user.id) ? false : true}"/> + <f:setPropertyActionListener target="#{userEditBean.updatingProfile}" + value="#{(user_iterator.user.id == user.user.id) ? true : false}"/> + </h:commandButton> <rich:toolTip for="EditUser" direction="bottom-left"> <h:outputText value="#{lbl['user.list.body.edit.tooltip']}" /> </rich:toolTip> @@ -115,14 +116,11 @@ <div class="list-operations-item"> <a4j:commandButton id="DeleteUser" - rendered="#{user.user.id!=user_iterator.id and !user_iterator.system and ( - (user.compStr eq 'admin' and user_iterator.role.role eq 'user') || - (user.compStr eq 'superadmin') - )}" + rendered="#{user_iterator.canBeDeleted}" reRender="DeleteUserModalContent" oncomplete="Richfaces.showModalPanel('DeleteUserModal',{left:300, top:300})" image="/images/icons/delete.gif"> - <f:setPropertyActionListener value="#{user_iterator}" + <f:setPropertyActionListener value="#{user_iterator.user}" target="#{usersBean.selectedUser}" /> </a4j:commandButton> <rich:toolTip for="DeleteUser" direction="bottom-left"> Modified: trunk/server/webServer2/WebContent/template/elvys-template.xhtml =================================================================== --- trunk/server/webServer2/WebContent/template/elvys-template.xhtml 2010-02-23 15:01:49 UTC (rev 1832) +++ trunk/server/webServer2/WebContent/template/elvys-template.xhtml 2010-02-23 19:01:32 UTC (rev 1833) @@ -38,31 +38,48 @@ <ui:define name="headerStatus"> <h:form id="MenuForm"> <rich:toolBar > + + <!-- MAIN --> <rich:dropDownMenu id="MainMenu" value="#{lbl['template.menu.main']}"> <rich:menuItem id="ShowStatistics" value="#{lbl['template.menu.main.statistics']}" action="NOT-DEFINED" submitMode="server" disabled="true" rendered="false"/> <rich:menuItem id="ShowHome" value="#{lbl['template.menu.main.home']}" action="home" submitMode="server"/> <rich:menuItem id="Logout" value="#{lbl['template.menu.main.logout']}" action="#{user.logout}" submitMode="server"/> </rich:dropDownMenu> - <rich:dropDownMenu id="CompanyMenu" value="#{lbl['template.menu.company']}" rendered="#{user.competency.canListCompanies}"> - <rich:menuItem id="ListOfCompanies" value="#{lbl['template.menu.company.list']}" action="#{companiesBean.prepareListOfCompanies}" submitMode="server"/> - <rich:menuItem id="NewCompany" value="#{lbl['template.menu.company.new']}" action="#{companiesBean.prepareCreateCompanyForm}" submitMode="server"> - <f:setPropertyActionListener value="${false}" target="#{companiesBean.updating}" /> - </rich:menuItem> - </rich:dropDownMenu> + <!-- USERS --> <rich:dropDownMenu id="UserMenu" value="#{lbl['template.menu.user']}" > - <rich:menuItem id="ListOfUsers" value="#{lbl['template.menu.user.list']}" action="#{usersBean.prepareListOfUsers}" submitMode="server" rendered="#{user.competency.canListUsersOwnCompany}"/> - <rich:menuItem id="NewUser" value="#{lbl['template.menu.user.new']}" action="#{userEditBean.prepareCreateUserForm}" submitMode="server" rendered="#{user.competency.canCreateUser}"> + <rich:menuItem id="ListOfUsers" + value="#{lbl['template.menu.user.list']}" + action="#{usersBean.prepareListOfUsers}" + submitMode="server" + rendered="#{user.competency.canListUsersOwnCompany}"/> + <rich:menuItem id="NewUser" + value="#{lbl['template.menu.user.new']}" + action="#{userEditBean.prepareCreateUserForm}" + submitMode="server" + rendered="#{user.competency.canCreateUser}"> <f:setPropertyActionListener value="${false}" target="#{userEditBean.updating}" /> <f:setPropertyActionListener value="${false}" target="#{userEditBean.updatingProfile}" /> </rich:menuItem> - <rich:menuItem id="EditUser" value="#{lbl['template.menu.user.update']}" action="#{userEditBean.prepareUpdateUserForm}" submitMode="server"> + <rich:menuItem id="EditUser" + value="#{lbl['template.menu.user.update']}" + action="#{userEditBean.prepareUpdateUserForm}" + submitMode="server"> + <f:setPropertyActionListener value="${false}" target="#{userEditBean.updating}" /> <f:setPropertyActionListener value="${true}" target="#{userEditBean.updatingProfile}" /> - <f:setPropertyActionListener value="${false}" target="#{userEditBean.updating}" /> <f:setPropertyActionListener value="#{user.user}" target="#{userEditBean.selectedUser}" /> </rich:menuItem> </rich:dropDownMenu> + <!-- COMPANIES --> + <rich:dropDownMenu id="CompanyMenu" value="#{lbl['template.menu.company']}" rendered="#{user.competency.canListCompanies}"> + <rich:menuItem id="ListOfCompanies" value="#{lbl['template.menu.company.list']}" action="#{companiesBean.prepareListOfCompanies}" submitMode="server"/> + <rich:menuItem id="NewCompany" value="#{lbl['template.menu.company.new']}" action="#{companiesBean.prepareCreateCompanyForm}" submitMode="server"> + <f:setPropertyActionListener value="${false}" target="#{companiesBean.updating}" /> + </rich:menuItem> + </rich:dropDownMenu> + + <!-- LAYOUT --> <rich:dropDownMenu id="LayoutMenu" value="#{lbl['template.menu.layout']}" disabled="false"> <rich:menuItem id="LayoutListMenuItem" value="#{lbl['template.menu.layout.list']}" action="layoutList" submitMode="server"/> <rich:menuItem id="LayoutCreateMenuItem" @@ -75,6 +92,8 @@ </rich:menuItem> </rich:dropDownMenu> + + <!-- CATEGORIES --> <rich:dropDownMenu id="CategoryMenu" value="#{lbl['template.menu.category']}" disabled="false"> <rich:menuItem id="CategoryListMenuItem" value="#{lbl['template.menu.category.list']}"