Author: glandais Date: 2008-02-22 16:47:43 +0000 (Fri, 22 Feb 2008) New Revision: 1194 Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java Log: Split of security DAO : actors and permissions (preparing for list filtering) Modified: trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java 2008-02-22 16:47:13 UTC (rev 1193) +++ trunk/simexplorer-is/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java 2008-02-22 16:47:43 UTC (rev 1194) @@ -49,7 +49,7 @@ import fr.cemagref.simexplorer.is.exceptions.SimExplorerSecurityException; import fr.cemagref.simexplorer.is.exceptions.SimExplorerTechnicalException; import fr.cemagref.simexplorer.is.security.credentials.CredentialManager; -import fr.cemagref.simexplorer.is.security.dao.DaoSecurity; +import fr.cemagref.simexplorer.is.security.dao.DaoActor; import fr.cemagref.simexplorer.is.security.entities.Group; import fr.cemagref.simexplorer.is.security.entities.LoginAction; import fr.cemagref.simexplorer.is.security.entities.Permission; @@ -68,9 +68,9 @@ /** The Constant log. */ private static final Log log = LogFactory.getLog(AuthenticationServiceImpl.class); - /** The dao. */ + /** The daoActor. */ @EJB - private DaoSecurity dao; + private DaoActor daoActor; /** The credential manager. */ @EJB @@ -175,7 +175,7 @@ return true; } if (loggedUser.isAdmin()) { - return userOwnerOfGroup(loggedUser, dao.getGroup(id)); + return userOwnerOfGroup(loggedUser, daoActor.getGroup(id)); } } return false; @@ -219,7 +219,7 @@ return true; } if (loggedUser.isAdmin()) { - User user = dao.getUser(id); + User user = daoActor.getUser(id); List<Group> groups = user.getGroups(); for (Group group : groups) { if (canAdminGroup(token, group.getId())) { @@ -269,7 +269,7 @@ * @param id the id */ private void deleteGroupImpl(String token, Integer id) { - dao.deleteGroup(id); + daoActor.deleteGroup(id); } /* (non-Javadoc) @@ -304,7 +304,7 @@ * @param id the id */ private void deleteUserImpl(String token, Integer id) { - dao.deleteUser(id); + daoActor.deleteUser(id); } /* (non-Javadoc) @@ -338,7 +338,7 @@ */ public Group getGroup(String token, Integer id) throws SimExplorerException { if (canViewElements(token)) { - Group group = dao.getGroup(id); + Group group = daoActor.getGroup(id); return group; } throw new SimExplorerSecurityException(); @@ -349,7 +349,7 @@ */ public Group getGroup(String token, String name) throws SimExplorerException { if (canViewElements(token)) { - Group group = dao.getGroup(name); + Group group = daoActor.getGroup(name); return group; } throw new SimExplorerSecurityException(); @@ -360,7 +360,7 @@ */ public User getUser(String token, Integer id) throws SimExplorerException { if (canViewElements(token)) { - User user = dao.getUser(id); + User user = daoActor.getUser(id); return user; } throw new SimExplorerSecurityException(); @@ -371,7 +371,7 @@ */ public User getUser(String token, String login) throws SimExplorerException { if (canViewElements(token)) { - User user = dao.getUser(login); + User user = daoActor.getUser(login); return user; } throw new SimExplorerSecurityException(); @@ -397,7 +397,7 @@ */ public Group saveGroup(String token, String name) throws SimExplorerException { if (canSaveElement(token)) { - Group oldGroup = dao.getGroup(name); + Group oldGroup = daoActor.getGroup(name); if (oldGroup != null) { throw new SimExplorerBusinessException(_("simexplorer.service.business.groupexist")); } @@ -405,7 +405,7 @@ Group group = new Group(); group.setName(name); group.setOwner(getLoggedUser(token)); - dao.saveGroup(group); + daoActor.saveGroup(group); group = getGroup(token, group.getId()); return group; } @@ -417,7 +417,7 @@ */ public User saveUser(String token, String login, String mail) throws SimExplorerException { if (canSaveElement(token)) { - User oldUser = dao.getUser(login); + User oldUser = daoActor.getUser(login); if (oldUser != null) { throw new SimExplorerBusinessException(_("simexplorer.service.business.userexist")); } @@ -434,7 +434,7 @@ Arrays.fill(password, (char) 0); user.setAdmin(false); user.setSuperAdmin(false); - dao.saveUser(user); + daoActor.saveUser(user); user = getUser(token, user.getId()); return user; } @@ -460,7 +460,7 @@ */ public Group updateGroup(String token, Group group) throws SimExplorerException { if (canUpdateGroup(token, group.getId())) { - return dao.updateGroup(group); + return daoActor.updateGroup(group); } throw new SimExplorerSecurityException(); } @@ -480,7 +480,7 @@ if (getLoggedUser(token).isSuperAdmin()) { return true; } - User oldUser = dao.getUser(user.getId()); + User oldUser = daoActor.getUser(user.getId()); if (oldUser.isAdmin() == user.isAdmin() && oldUser.isSuperAdmin() == user.isSuperAdmin()) { return true; } @@ -493,7 +493,7 @@ */ public User updateUser(String token, User user) throws SimExplorerException { if (canUpdateUser(token, user)) { - return dao.updateUser(user); + return daoActor.updateUser(user); } throw new SimExplorerSecurityException(); } @@ -506,7 +506,7 @@ return null; } User loggedUser; - loggedUser = dao.getLoggedUser(token); + loggedUser = daoActor.getLoggedUser(token); if (loggedUser != null) { return loggedUser; } @@ -519,7 +519,7 @@ * @throws SimExplorerException the sim explorer service exception */ private void checkSuperAdmin() throws SimExplorerException { - if (dao.getUser("superadmin") == null) { + if (daoActor.getUser("superadmin") == null) { User user = new User(); user.setLogin("superadmin"); user.setMail(""); @@ -528,7 +528,7 @@ user.setPasswordHash(passwordHash); user.setAdmin(true); user.setSuperAdmin(true); - dao.saveUser(user); + daoActor.saveUser(user); } } @@ -543,17 +543,17 @@ } String token = null; // le password est deja haché - // User loggedUser = dao.loginUser(login, AuthenticationServiceHelper.computeHash(password)); - User loggedUser = dao.loginUser(login, password); + // User loggedUser = daoActor.loginUser(login, AuthenticationServiceHelper.computeHash(password)); + User loggedUser = daoActor.loginUser(login, password); if (loggedUser != null) { // FIXME delete previous tokens - // dao.deleteTokens(login, 10 * 60 * 1000); + // daoActor.deleteTokens(login, 10 * 60 * 1000); LoginAction loginAction = new LoginAction(); loginAction.setLoggedUser(loggedUser); loginAction.setTime(new Date()); loginAction.setToken(UUID.randomUUID().toString()); - dao.saveToken(loginAction); + daoActor.saveToken(loginAction); token = loginAction.getToken(); } return token; @@ -563,7 +563,7 @@ * @see fr.cemagref.simexplorer.is.service.AuthenticationService#requestAccount(java.lang.String, java.lang.String) */ public void requestAccount(String login, String mail) throws SimExplorerException { - User superadmin = dao.getUser("superadmin"); + User superadmin = daoActor.getUser("superadmin"); sendMail(Config.getProperties().getProperty("simexplorer.adminmail"), superadmin.getMail(), _("simexplorer.service.mail.subject"), getMailContentRequestAccount(login, mail)); } @@ -576,7 +576,7 @@ // User user = getLoggedUser(token); // String passwordHash = computeHash(password); // user.setPasswordHash(passwordHash); - // dao.updateUser(user); + // daoActor.updateUser(user); // } /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.service.AuthenticationService#resetPassword(java.lang.String, java.lang.String) @@ -591,7 +591,7 @@ // reset char[] Arrays.fill(password, (char) 0); user.setPasswordHash(passwordHash); - dao.updateUser(user); + daoActor.updateUser(user); } else { throw new SimExplorerSecurityException(); } @@ -602,7 +602,7 @@ */ public Group[] getGroups(String token) throws SimExplorerException { if (canViewElements(token)) { - List<Group> groups = dao.getGroups(); + List<Group> groups = daoActor.getGroups(); return groups.toArray(new Group[groups.size()]); } throw new SimExplorerSecurityException(); @@ -613,7 +613,7 @@ */ public Group[] getGroupsOwnedBy(String token, User user) throws SimExplorerException { if (canViewElements(token)) { - List<Group> list = dao.getGroupsOwnedBy(user); + List<Group> list = daoActor.getGroupsOwnedBy(user); return list.toArray(new Group[list.size()]); } throw new SimExplorerSecurityException(); @@ -624,7 +624,7 @@ */ public User[] getUsers(String token) throws SimExplorerException { if (canViewElements(token)) { - List<User> users = dao.getUsers(); + List<User> users = daoActor.getUsers(); return users.toArray(new User[users.size()]); } throw new SimExplorerSecurityException(); @@ -635,7 +635,7 @@ */ public User[] getUsersOfGroup(String token, Group group) throws SimExplorerException { if (canViewElements(token)) { - List<User> usersOfGroup = dao.getUsersOfGroup(group); + List<User> usersOfGroup = daoActor.getUsersOfGroup(group); return usersOfGroup.toArray(new User[usersOfGroup.size()]); } throw new SimExplorerSecurityException(); @@ -652,7 +652,7 @@ List<Integer> usersToAdd = new ArrayList<Integer>(); List<Integer> usersToRemove = new ArrayList<Integer>(); - List<User> users = dao.getUsersOfGroup(group); + List<User> users = daoActor.getUsersOfGroup(group); List<Integer> currentUsers = new ArrayList<Integer>(); for (User user : users) { @@ -671,14 +671,14 @@ } for (Integer idUser : usersToAdd) { - User user = dao.getUser(idUser); + User user = daoActor.getUser(idUser); user.getGroups().add(group); - dao.updateUser(user); + daoActor.updateUser(user); } for (Integer idUser : usersToRemove) { - User user = dao.getUser(idUser); + User user = daoActor.getUser(idUser); removeUserFromGroup(user, group); - dao.updateUser(user); + daoActor.updateUser(user); } } else { throw new SimExplorerSecurityException(); @@ -690,13 +690,13 @@ */ public void setGroupsOfUser(String token, User user, Integer[] groupsIds) throws SimExplorerException { if (canUpdateUser(token, user)) { - User realUser = dao.getUser(user.getId()); + User realUser = daoActor.getUser(user.getId()); realUser.getGroups().clear(); for (Integer groupsId : groupsIds) { - Group group = dao.getGroup(groupsId); + Group group = daoActor.getGroup(groupsId); realUser.getGroups().add(group); } - dao.updateUser(realUser); + daoActor.updateUser(realUser); } else { throw new SimExplorerSecurityException(); } @@ -707,7 +707,7 @@ */ public Group[] getGroupsOfUser(String token, User user) throws SimExplorerException { if (canViewElements(token)) { - List<Group> list = dao.getGroupsOfUser(user); + List<Group> list = daoActor.getGroupsOfUser(user); return list.toArray(new Group[list.size()]); } throw new SimExplorerSecurityException(); @@ -718,7 +718,7 @@ */ public Group[] getGroupsOfGroup(String token, Group group) throws SimExplorerException { if (canViewElements(token)) { - List<Group> groupsOfGroup = dao.getGroupsOfGroup(group); + List<Group> groupsOfGroup = daoActor.getGroupsOfGroup(group); return groupsOfGroup.toArray(new Group[groupsOfGroup.size()]); } throw new SimExplorerSecurityException(); @@ -729,13 +729,13 @@ */ public void setGroupsOfGroup(String token, Group group, Integer[] groupsIds) throws SimExplorerException { if (canUpdateGroup(token, group.getId())) { - Group realGroup = dao.getGroup(group.getId()); + Group realGroup = daoActor.getGroup(group.getId()); realGroup.getGroups().clear(); for (Integer groupsId : groupsIds) { - Group groupOwned = dao.getGroup(groupsId); + Group groupOwned = daoActor.getGroup(groupsId); realGroup.getGroups().add(groupOwned); } - dao.updateGroup(realGroup); + daoActor.updateGroup(realGroup); } else { throw new SimExplorerSecurityException(); } @@ -761,8 +761,8 @@ */ public Permission[] getPermissions(String token, String uuid) throws SimExplorerException { canAdminPermissions(token, uuid); - List<Permission> permissions = dao.getPermissions(uuid); - return permissions.toArray(new Permission[permissions.size()]); + Permission[] permissions = credentialManager.getPermissions(uuid); + return permissions; } /* (non-Javadoc) @@ -770,7 +770,7 @@ */ public void setPermissions(String token, String uuid, Permission[] permissions) throws SimExplorerException { canAdminPermissions(token, uuid); - dao.setPermissions(uuid, permissions); + credentialManager.setPermissions(uuid, permissions); } /* (non-Javadoc) @@ -779,7 +779,7 @@ @Override public String[] getElementsOwnedBy(String token, User user) { List<String> uuids = new ArrayList<String>(); - List<Permission> permissions = dao.getPermissionsOwnedBy(user); + List<Permission> permissions = credentialManager.getPermissionsOwnedBy(user); for (Permission permission : permissions) { uuids.add(permission.getBusinessId()); }