r418 - in trunk: simexplorer-is-security/src/java/META-INF simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test simexplorer-is-service/src/java/fr/cemagref/simexplorer/is simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine sime
Author: glandais Date: 2008-01-22 16:32:43 +0000 (Tue, 22 Jan 2008) New Revision: 418 Added: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java Removed: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java Modified: trunk/simexplorer-is-security/src/java/META-INF/persistence.xml trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties Log: Secured service Modified: trunk/simexplorer-is-security/src/java/META-INF/persistence.xml =================================================================== --- trunk/simexplorer-is-security/src/java/META-INF/persistence.xml 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-security/src/java/META-INF/persistence.xml 2008-01-22 16:32:43 UTC (rev 418) @@ -13,18 +13,18 @@ <mapping-file>META-INF/orm.xml</mapping-file> <properties> - <!-- logs SQL Hibernate --> + <!-- logs SQL Hibernate <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="use_sql_comments" value="true"/> - <!-- --> + --> <!-- le type de SGBD géré --> <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" /> <!-- recréation de toutes les tables (drop+create) au déploiement de l'unité de persistence --> - <property name="hibernate.hbm2ddl.auto" value="create" /> + <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence> Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 16:32:43 UTC (rev 418) @@ -5,6 +5,7 @@ import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import javax.persistence.Query; import fr.cemagref.simexplorer.is.security.entities.Actor; import fr.cemagref.simexplorer.is.security.entities.Group; @@ -17,6 +18,26 @@ @PersistenceContext(unitName = "simexploreris-security") private EntityManager em; + private Object getSingleResult(Query query) { + Object o; + try { + o = query.getSingleResult(); + } catch (RuntimeException e) { + o = null; + } + return o; + } + + private Object find(Class clazz, Object arg) { + Object o; + try { + o = em.find(clazz, arg); + } catch (RuntimeException e) { + o = null; + } + return o; + } + public void deleteGroup(Integer id) { Group g = getGroup(id); if (g != null) { @@ -32,18 +53,20 @@ } public Group getGroup(Integer id) { - return em.find(Group.class, id); + Group g = (Group) find(Group.class, id); + return g; } public Group getGroup(String name) { - Group group = (Group) em.createQuery( + Group g = (Group) getSingleResult(em.createQuery( "select g from Group g where g.name=:name").setParameter( - "name", name).getSingleResult(); - return group; + "name", name)); + return g; } public User getUser(Integer id) { - return em.find(User.class, id); + User u = (User) find(User.class, id); + return u; } public void saveGroup(Group group) { @@ -64,9 +87,9 @@ public User getLoggedUser(String token) { User loggedUser = null; - LoginAction loginAction = (LoginAction) em.createQuery( + LoginAction loginAction = (LoginAction) getSingleResult(em.createQuery( "select la from LoginAction la where la.token=:token") - .setParameter("token", token).getSingleResult(); + .setParameter("token", token)); if (loginAction != null) { loggedUser = loginAction.getLoggedUser(); } @@ -74,11 +97,11 @@ } public User loginUser(String login, String passwordHash) { - User user = (User) em + User user = (User) getSingleResult(em .createQuery( "select u from User u where u.login=:login and u.passwordHash=:passwordHash") .setParameter("login", login).setParameter("passwordHash", - passwordHash).getSingleResult(); + passwordHash)); return user; } @@ -87,18 +110,18 @@ } public void deleteToken(String token) { - LoginAction loginAction = (LoginAction) em.createQuery( + LoginAction loginAction = (LoginAction) getSingleResult(em.createQuery( "select la from LoginAction la where la.token=:token") - .setParameter("token", token).getSingleResult(); + .setParameter("token", token)); if (loginAction != null) { em.remove(loginAction); } } public User getUser(String login) { - User user = (User) em.createQuery( + User user = (User) getSingleResult(em.createQuery( "select u from User u where u.login=:login").setParameter( - "login", login).getSingleResult(); + "login", login)); return user; } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java 2008-01-22 16:32:43 UTC (rev 418) @@ -8,53 +8,54 @@ @Remote public interface AuthenticationService { - public User requestAccount(String login, String mail); + public String loginUser(String login, String password); - public User saveUser(String login, String mail); + public void closeSessionTimer(String token); - public void resetPassword(String login); + public User requestAccount(String login, String mail); - public void changePassword(String login, String password); + public User saveUser(String token, String login, String mail); - public User getUser(Integer id); + public void resetPassword(String token, String login); - public User getUser(String login); + public void changePassword(String token, String login, String password); - public User updateUser(User user); + public User getUser(String token, Integer id); - public void deleteUser(Integer id); + public User getUser(String token, String login); - public User[] getUsers(); + public User updateUser(String token, User user); - public User[] getUsersOfGroup(Group group); + public void deleteUser(String token, Integer id); - public void setUsersOfGroup(Group group, Integer[] usersInGroup); + public User[] getUsers(String token); - public void setGroupsOfGroup(Group group, Integer[] groupsIds); + public User[] getUsersOfGroup(String token, Group group); - public Group[] getGroupsOfUser(User user); + public void setUsersOfGroup(String token, Group group, + Integer[] usersInGroup); - public Group[] getGroupsOfGroup(Group group); + public void setGroupsOfGroup(String token, Group group, Integer[] groupsIds); - public void setGroupsOfUser(User user, Integer[] groupsIds); + public Group[] getGroupsOfUser(String token, User user); - public Group saveGroup(String name, User owner); + public Group[] getGroupsOfGroup(String token, Group group); - public Group getGroup(Integer id); + public void setGroupsOfUser(String token, User user, Integer[] groupsIds); - public Group getGroup(String name); + public Group saveGroup(String token, String name, User owner); - public Group updateGroup(Group group); + public Group getGroup(String token, Integer id); - public void deleteGroup(Integer id); + public Group getGroup(String token, String name); - public Group[] getGroups(); + public Group updateGroup(String token, Group group); - public Group[] getGroupsOwnedBy(User user); + public void deleteGroup(String token, Integer id); - public String loginUser(String login, String password); + public Group[] getGroups(String token); - public void closeSessionTimer(String token); + public Group[] getGroupsOwnedBy(String token, User user); public User getLoggedUser(String token); Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java 2008-01-22 16:32:43 UTC (rev 418) @@ -6,6 +6,7 @@ import java.util.List; import java.util.UUID; +import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.ejb.EJB; import javax.ejb.Remote; @@ -16,6 +17,7 @@ import javax.ejb.TimerService; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; +import javax.interceptor.InvocationContext; import org.jboss.annotation.ejb.RemoteBinding; @@ -36,6 +38,8 @@ @Resource private SessionContext sessionContext; + private static boolean superAdminCheck = false; + private void sendMail(String login, String mail, String password) { /* javax.mail.Session mailSession = (javax.mail.Session) new InitialContext().lookup("java:/Mail"); @@ -83,40 +87,40 @@ } } - public void deleteGroup(Integer id) { + public void deleteGroup(String token, Integer id) { dao.deleteGroup(id); } - public void deleteUser(Integer id) { + public void deleteUser(String token, Integer id) { dao.deleteUser(id); } - public Group getGroup(Integer id) { + public Group getGroup(String token, Integer id) { return dao.getGroup(id); } - public Group getGroup(String name) { + public Group getGroup(String token, String name) { return dao.getGroup(name); - } + } - public User getUser(Integer id) { + public User getUser(String token, Integer id) { return dao.getUser(id); } - public User getUser(String login) { + public User getUser(String token, String login) { return dao.getUser(login); } - public Group saveGroup(String name, User owner) { + public Group saveGroup(String token, String name, User owner) { Group group = new Group(); group.setName(name); group.setOwner(owner); dao.saveGroup(group); - group = getGroup(group.getId()); + group = getGroup(token, group.getId()); return group; } - public User saveUser(String login, String mail) { + public User saveUser(String token, String login, String mail) { User user = new User(); user.setLogin(login); user.setMail(mail); @@ -125,16 +129,17 @@ String passwordHash = computeHash(password); user.setPasswordHash(passwordHash); user.setAdmin(false); + user.setSuperAdmin(false); dao.saveUser(user); - user = getUser(user.getId()); + user = getUser(token, user.getId()); return user; } - public Group updateGroup(Group group) { + public Group updateGroup(String token, Group group) { return dao.updateGroup(group); } - public User updateUser(User user) { + public User updateUser(String token, User user) { return dao.updateUser(user); } @@ -143,7 +148,25 @@ return loggedUser; } + private void checkSuperAdmin() { + if (dao.getUser("superadmin") == null) { + User user = new User(); + user.setLogin("superadmin"); + user.setMail(""); + String password = "password"; + String passwordHash = computeHash(password); + user.setPasswordHash(passwordHash); + user.setAdmin(true); + user.setSuperAdmin(true); + dao.saveUser(user); + } + } + public String loginUser(String login, String password) { + if (!superAdminCheck) { + checkSuperAdmin(); + superAdminCheck = true; + } String token = null; User loggedUser = dao.loginUser(login, computeHash(password)); if (loggedUser != null) { @@ -159,10 +182,10 @@ public void closeSessionTimer(String token) { // FIXME session length - TimerService timerService = sessionContext.getTimerService(); - timerService.createTimer(10 * 60 * 1000, token); + TimerService timerService = sessionContext.getTimerService(); + timerService.createTimer(10 * 60 * 1000, token); } - + @Timeout public void timeoutHandler(Timer timer) { String token = (String) timer.getInfo(); @@ -181,15 +204,15 @@ return user; } - public void changePassword(String login, String password) { - User user = getUser(login); + public void changePassword(String token, String login, String password) { + User user = getUser(token, login); String passwordHash = computeHash(password); user.setPasswordHash(passwordHash); dao.saveUser(user); } - public void resetPassword(String login) { - User user = getUser(login); + public void resetPassword(String token, String login) { + User user = getUser(token, login); String password = generatePassword(); sendMail(login, user.getMail(), password); String passwordHash = computeHash(password); @@ -197,25 +220,26 @@ dao.saveUser(user); } - public Group[] getGroups() { + public Group[] getGroups(String token) { List<Group> groups = dao.getGroups(); Group[] result = groups.toArray(new Group[0]); return result; } - public Group[] getGroupsOwnedBy(User user) { + public Group[] getGroupsOwnedBy(String token, User user) { return dao.getGroupsOwnedBy(user).toArray(new Group[0]); } - public User[] getUsers() { + public User[] getUsers(String token) { return dao.getUsers().toArray(new User[0]); } - public User[] getUsersOfGroup(Group group) { + public User[] getUsersOfGroup(String token, Group group) { return dao.getUsersOfGroup(group).toArray(new User[0]); } - public void setUsersOfGroup(Group group, Integer[] usersInGroup) { + public void setUsersOfGroup(String token, Group group, + Integer[] usersInGroup) { List<Integer> newUsers = new ArrayList<Integer>(); for (int i = 0; i < usersInGroup.length; i++) { newUsers.add(usersInGroup[i]); @@ -254,7 +278,7 @@ } } - public void setGroupsOfUser(User user, Integer[] groupsIds) { + public void setGroupsOfUser(String token, User user, Integer[] groupsIds) { User realUser = dao.getUser(user.getId()); realUser.getGroups().clear(); for (int i = 0; i < groupsIds.length; i++) { @@ -265,15 +289,15 @@ } - public Group[] getGroupsOfUser(User user) { + public Group[] getGroupsOfUser(String token, User user) { return dao.getGroupsOfUser(user).toArray(new Group[0]); } - public Group[] getGroupsOfGroup(Group group) { + public Group[] getGroupsOfGroup(String token, Group group) { return dao.getGroupsOfGroup(group).toArray(new Group[0]); } - public void setGroupsOfGroup(Group group, Integer[] groupsIds) { + public void setGroupsOfGroup(String token, Group group, Integer[] groupsIds) { Group realGroup = dao.getGroup(group.getId()); realGroup.getGroups().clear(); for (int i = 0; i < groupsIds.length; i++) { @@ -283,5 +307,4 @@ dao.updateGroup(realGroup); } - } Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java =================================================================== --- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java 2008-01-22 16:32:43 UTC (rev 418) @@ -28,8 +28,9 @@ } public void testHashCode() { - User[] users1 = authenticationService.getUsers(); - User[] users2 = authenticationService.getUsers(); + String token = authenticationService.loginUser("superadmin", "password"); + User[] users1 = authenticationService.getUsers(token); + User[] users2 = authenticationService.getUsers(token); for (int i = 0; i < users1.length; i++) { User user1 = users1[i]; User user2 = users2[i]; Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java =================================================================== --- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 16:32:43 UTC (rev 418) @@ -36,39 +36,42 @@ System.out.println(group.getName()); } */ - + String token = authenticationService + .loginUser("superadmin", "password"); + User[] simpleUsers = new User[20]; for (int i = 0; i < 20; i++) { - simpleUsers[i] = authenticationService.saveUser("user" + i, + simpleUsers[i] = authenticationService.saveUser(token, "user" + i, "landais+simtest at codelutin.com"); simpleUsers[i].setAdmin(false); simpleUsers[i].setSuperAdmin(false); - authenticationService.updateUser(simpleUsers[i]); + authenticationService.updateUser(token, simpleUsers[i]); } User[] adminUsers = new User[4]; Group[] groups = new Group[4]; for (int i = 0; i < 4; i++) { - adminUsers[i] = authenticationService.saveUser("admin" + i, + adminUsers[i] = authenticationService.saveUser(token, "admin" + i, "landais+simtest at codelutin.com"); adminUsers[i].setAdmin(true); adminUsers[i].setSuperAdmin(false); - authenticationService.updateUser(adminUsers[i]); + authenticationService.updateUser(token, adminUsers[i]); - groups[i] = authenticationService.saveGroup("group" + i, + groups[i] = authenticationService.saveGroup(token, "group" + i, adminUsers[i]); for (int j = i * 4; j < (i * 4 + 5); j++) { simpleUsers[j].getGroups().add(groups[i]); - authenticationService.updateUser(simpleUsers[j]); + authenticationService.updateUser(token, simpleUsers[j]); } } - User superAdminUser = authenticationService.saveUser("superadmin", - "landais+simtest at codelutin.com"); + /* + User superAdminUser = authenticationService.saveUser(token, + "superadmin", "landais+simtest at codelutin.com"); superAdminUser.setAdmin(true); superAdminUser.setSuperAdmin(true); - authenticationService.updateUser(superAdminUser); - + authenticationService.updateUser(token, superAdminUser); + */ /* User[] users = new User[10]; Copied: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java (from rev 415, trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java) =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java (rev 0) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 16:32:43 UTC (rev 418) @@ -0,0 +1,105 @@ +package fr.cemagref.simexplorer.is.storage.engine; + +import java.io.InputStream; +import java.util.List; +import java.util.Map; + +import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; +import fr.cemagref.simexplorer.is.entities.metadata.Version; + +public class StorageEngineSecuImpl extends StorageEngineImpl { + + @Override + public void deleteElement(String uuid, Version version) throws Exception { + // TODO Auto-generated method stub + super.deleteElement(uuid, version); + } + + @Override + public void deleteElements(String uuid) throws Exception { + // TODO Auto-generated method stub + super.deleteElements(uuid); + } + + @Override + public void deleteTempData(String id) throws Exception { + // TODO Auto-generated method stub + super.deleteTempData(id); + } + + @Override + public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest, + int start, int count, int dateOrder) throws Exception { + // TODO Auto-generated method stub + return super.findElementsByType(type, onlyLatest, start, count, + dateOrder); + } + + @Override + public int findElementsByTypeCount(String type, boolean onlyLatest) + throws Exception { + // TODO Auto-generated method stub + return super.findElementsByTypeCount(type, onlyLatest); + } + + @Override + public MetaDataEntity[] findFullText(String query, boolean onlyLatest, + int indexStart, int count, int dateOrder) throws Exception { + // TODO Auto-generated method stub + return super.findFullText(query, onlyLatest, indexStart, count, + dateOrder); + } + + @Override + public int findFullTextCount(String query, boolean onlyLatest) + throws Exception { + // TODO Auto-generated method stub + return super.findFullTextCount(query, onlyLatest); + } + + @Override + public MetaDataEntity getMetadata(String uuid, Version version) + throws Exception { + // TODO Auto-generated method stub + return super.getMetadata(uuid, version); + } + + @Override + public MetaDataEntity getMetadata(String uuid) throws Exception { + // TODO Auto-generated method stub + return super.getMetadata(uuid); + } + + @Override + public List<Version> getVersions(String uuid) throws Exception { + // TODO Auto-generated method stub + return super.getVersions(uuid); + } + + @Override + public InputStream retrieveData(MetaDataEntity entity, String field) + throws Exception { + // TODO Auto-generated method stub + return super.retrieveData(entity, field); + } + + @Override + public InputStream retrieveTempData(String id) throws Exception { + // TODO Auto-generated method stub + return super.retrieveTempData(id); + } + + @Override + public void saveElement(MetaDataEntity element, + Map<String, InputStream> attachments) throws Exception { + // TODO Auto-generated method stub + super.saveElement(element, attachments); + } + + @Override + public String storeTempData(InputStream stream) throws Exception { + // TODO Auto-generated method stub + return super.storeTempData(stream); + } + +} Deleted: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 16:32:43 UTC (rev 418) @@ -1,105 +0,0 @@ -package fr.cemagref.simexplorer.is.storage.engine; - -import java.io.InputStream; -import java.util.List; -import java.util.Map; - -import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; -import fr.cemagref.simexplorer.is.entities.metadata.Version; - -public class StorageEngineSecuImpl extends StorageEngineImpl { - - @Override - public void deleteElement(String uuid, Version version) throws Exception { - // TODO Auto-generated method stub - super.deleteElement(uuid, version); - } - - @Override - public void deleteElements(String uuid) throws Exception { - // TODO Auto-generated method stub - super.deleteElements(uuid); - } - - @Override - public void deleteTempData(String id) throws Exception { - // TODO Auto-generated method stub - super.deleteTempData(id); - } - - @Override - public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest, - int start, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findElementsByType(type, onlyLatest, start, count, - dateOrder); - } - - @Override - public int findElementsByTypeCount(String type, boolean onlyLatest) - throws Exception { - // TODO Auto-generated method stub - return super.findElementsByTypeCount(type, onlyLatest); - } - - @Override - public MetaDataEntity[] findFullText(String query, boolean onlyLatest, - int indexStart, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findFullText(query, onlyLatest, indexStart, count, - dateOrder); - } - - @Override - public int findFullTextCount(String query, boolean onlyLatest) - throws Exception { - // TODO Auto-generated method stub - return super.findFullTextCount(query, onlyLatest); - } - - @Override - public MetaDataEntity getMetadata(String uuid, Version version) - throws Exception { - // TODO Auto-generated method stub - return super.getMetadata(uuid, version); - } - - @Override - public MetaDataEntity getMetadata(String uuid) throws Exception { - // TODO Auto-generated method stub - return super.getMetadata(uuid); - } - - @Override - public List<Version> getVersions(String uuid) throws Exception { - // TODO Auto-generated method stub - return super.getVersions(uuid); - } - - @Override - public InputStream retrieveData(MetaDataEntity entity, String field) - throws Exception { - // TODO Auto-generated method stub - return super.retrieveData(entity, field); - } - - @Override - public InputStream retrieveTempData(String id) throws Exception { - // TODO Auto-generated method stub - return super.retrieveTempData(id); - } - - @Override - public void saveElement(MetaDataEntity element, - Map<String, InputStream> attachments) throws Exception { - // TODO Auto-generated method stub - super.saveElement(element, attachments); - } - - @Override - public String storeTempData(InputStream stream) throws Exception { - // TODO Auto-generated method stub - return super.storeTempData(stream); - } - -} Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-22 16:32:43 UTC (rev 418) @@ -31,10 +31,12 @@ @Persist private List<Group> groupsInGroup; - private static final UserValueEncoder userEncoder = new UserValueEncoder(); - - private static final GroupValueEncoder groupEncoder = new GroupValueEncoder(); - + @Persist + private UserValueEncoder userEncoder; + + @Persist + private GroupValueEncoder groupEncoder; + void setup(int groupId) throws Exception { this.usersInGroup = new ArrayList<User>(); this.groupsInGroup = new ArrayList<Group>(); @@ -42,26 +44,28 @@ this.group = new Group(); this.group.setOwner(getUserLogged()); } else { - this.group = RemoteSecurityService.getAuthentificationService().getGroup( - groupId); + this.group = RemoteSecurityService.getAuthentificationService() + .getGroup(getToken(), groupId); User[] users = RemoteSecurityService.getAuthentificationService() - .getUsersOfGroup(group); + .getUsersOfGroup(getToken(), group); this.usersInGroup.addAll(Arrays.asList(users)); Group[] groups = RemoteSecurityService.getAuthentificationService() - .getGroupsOfGroup(group); + .getGroupsOfGroup(getToken(), group); this.groupsInGroup.addAll(Arrays.asList(groups)); } + userEncoder = new UserValueEncoder(getToken()); + groupEncoder = new GroupValueEncoder(getToken()); } public Object onSuccess() throws Exception { if (group.getId() == null) { - group = RemoteSecurityService.getAuthentificationService().saveGroup( - group.getName(), getUserLogged()); + group = RemoteSecurityService.getAuthentificationService() + .saveGroup(getToken(), group.getName(), getUserLogged()); } else { - group = RemoteSecurityService.getAuthentificationService().updateGroup( - group); + group = RemoteSecurityService.getAuthentificationService() + .updateGroup(getToken(), group); } Integer[] usersIds = new Integer[usersInGroup.size()]; @@ -70,8 +74,8 @@ usersIds[i] = user.getId(); i++; } - RemoteSecurityService.getAuthentificationService().setUsersOfGroup(group, - usersIds); + RemoteSecurityService.getAuthentificationService().setUsersOfGroup( + getToken(), group, usersIds); Integer[] groupsIds = new Integer[groupsInGroup.size()]; i = 0; @@ -79,8 +83,8 @@ groupsIds[i] = group.getId(); i++; } - RemoteSecurityService.getAuthentificationService().setGroupsOfGroup(group, - groupsIds); + RemoteSecurityService.getAuthentificationService().setGroupsOfGroup( + getToken(), group, groupsIds); return groupList; } @@ -90,14 +94,16 @@ } public List<User> getUsers() throws Exception { - User[] users = RemoteSecurityService.getAuthentificationService().getUsers(); + User[] users = RemoteSecurityService.getAuthentificationService() + .getUsers(getToken()); List<User> result = new ArrayList<User>(); result.addAll(Arrays.asList(users)); return result; } public List<Group> getGroups() throws Exception { - Group[] groups = RemoteSecurityService.getAuthentificationService().getGroups(); + Group[] groups = RemoteSecurityService.getAuthentificationService() + .getGroups(getToken()); List<Group> result = new ArrayList<Group>(); result.addAll(Arrays.asList(groups)); return result; @@ -106,21 +112,20 @@ public ValueEncoder getUserEncoder() { return userEncoder; } - + public ValueEncoder getGroupEncoder() { return groupEncoder; } - + public boolean getSuperAdmin() { return isUserSuperAdmin(); } - + public List<User> getUsersInGroup() throws NamingException { return usersInGroup; } - public void setUsersInGroup(List<User> usersInGroup) - throws NamingException { + public void setUsersInGroup(List<User> usersInGroup) throws NamingException { this.usersInGroup = usersInGroup; } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-22 16:32:43 UTC (rev 418) @@ -47,16 +47,16 @@ public Group[] getGroups() throws Exception { Group[] groups; if (isUserSuperAdmin()) { - groups = RemoteSecurityService.getAuthentificationService().getGroups(); + groups = RemoteSecurityService.getAuthentificationService().getGroups(getToken()); } else { groups = RemoteSecurityService.getAuthentificationService() - .getGroupsOwnedBy(getUserLogged()); + .getGroupsOwnedBy(getToken(),getUserLogged()); } return groups; } public Object onActionFromDelete(Integer context) throws Exception { - RemoteSecurityService.getAuthentificationService().deleteGroup(context); + RemoteSecurityService.getAuthentificationService().deleteGroup(getToken(),context); return null; } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-22 16:32:43 UTC (rev 418) @@ -4,9 +4,14 @@ import java.util.List; import java.util.Arrays; +import org.apache.tapestry.ComponentResources; import org.apache.tapestry.ValueEncoder; import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.Persist; +import org.apache.tapestry.annotations.Retain; +import org.apache.tapestry.beaneditor.BeanModel; +import org.apache.tapestry.ioc.annotations.Inject; +import org.apache.tapestry.services.BeanModelSource; import fr.cemagref.simexplorer.is.security.entities.Group; import fr.cemagref.simexplorer.is.security.entities.User; @@ -25,28 +30,54 @@ @Persist private List<Group> groupsOfUser; - private static final GroupValueEncoder groupEncoder = new GroupValueEncoder(); + @Persist + private GroupValueEncoder groupEncoder; + @Retain + private BeanModel groupModel; + + @Inject + private BeanModelSource beanModelSource; + + @Inject + private ComponentResources resources; + + private Group group; + + void pageLoaded() { + groupModel = beanModelSource.create(Group.class, true, resources); + List<String> wantedProperties = new ArrayList<String>(); + wantedProperties.add("name"); + List<String> properties = groupModel.getPropertyNames(); + for (String property : properties) { + if (!wantedProperties.contains(property)) { + groupModel = groupModel.remove(property); + } + } + } + void setup(int groupId) throws Exception { this.groupsOfUser = new ArrayList<Group>(); if (groupId == -1) { this.user = new User(); } else { - this.user = RemoteSecurityService.getAuthentificationService().getUser( - groupId); + this.user = RemoteSecurityService.getAuthentificationService() + .getUser(getToken(), groupId); Group[] groups = RemoteSecurityService.getAuthentificationService() - .getGroupsOfUser(this.user); + .getGroupsOfUser(getToken(), this.user); groupsOfUser.addAll(Arrays.asList(groups)); } + groupEncoder = new GroupValueEncoder(getToken()); } public Object onSuccess() throws Exception { if (user.getId() == null) { user = RemoteSecurityService.getAuthentificationService().saveUser( - user.getLogin(), user.getMail()); + getToken(), user.getLogin(), user.getMail()); } else { - user = RemoteSecurityService.getAuthentificationService().updateUser(user); + user = RemoteSecurityService.getAuthentificationService() + .updateUser(getToken(), user); } Integer[] groupsIds = new Integer[groupsOfUser.size()]; @@ -55,19 +86,25 @@ groupsIds[i] = group.getId(); i++; } - RemoteSecurityService.getAuthentificationService().setGroupsOfUser(user, - groupsIds); + RemoteSecurityService.getAuthentificationService().setGroupsOfUser( + getToken(), user, groupsIds); return userList; } public List<Group> getGroups() throws Exception { - Group[] groups = RemoteSecurityService.getAuthentificationService().getGroups(); + Group[] groups = RemoteSecurityService.getAuthentificationService() + .getGroups(getToken()); List<Group> result = new ArrayList<Group>(); result.addAll(Arrays.asList(groups)); return result; } + public Group[] getOwnedGroups() throws Exception { + return RemoteSecurityService.getAuthentificationService() + .getGroupsOwnedBy(getToken(), user); + } + public ValueEncoder getGroupEncoder() { return groupEncoder; } @@ -100,4 +137,16 @@ this.groupsOfUser = groupsOfUser; } + public BeanModel getGroupModel() { + return groupModel; + } + + public Group getGroup() { + return group; + } + + public void setGroup(Group group) { + this.group = group; + } + } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-22 16:32:43 UTC (rev 418) @@ -50,12 +50,12 @@ public User[] getUsers() throws Exception { User[] users; - users = RemoteSecurityService.getAuthentificationService().getUsers(); + users = RemoteSecurityService.getAuthentificationService().getUsers(getToken()); return users; } public Object onActionFromDelete(Integer context) throws Exception { - RemoteSecurityService.getAuthentificationService().deleteUser(context); + RemoteSecurityService.getAuthentificationService().deleteUser(getToken(),context); return null; } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java 2008-01-22 16:32:43 UTC (rev 418) @@ -38,10 +38,12 @@ public static void contributeValueEncoderSource( MappedConfiguration<Class, ValueEncoderFactory> configuration) { + /* configuration.add(User.class, new GenericValueEncoderFactory<User>( new UserValueEncoder())); configuration.add(Group.class, new GenericValueEncoderFactory<Group>( new GroupValueEncoder())); + */ } /** Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java 2008-01-22 16:32:43 UTC (rev 418) @@ -6,6 +6,13 @@ public class GroupValueEncoder implements ValueEncoder<Group> { + private String token; + + public GroupValueEncoder(String token) { + super(); + this.token = token; + } + public String toClient(Group arg0) { return Integer.toString(arg0.getId()); } @@ -13,7 +20,8 @@ public Group toValue(String arg0) { Group group = null; try { - group = RemoteSecurityService.getAuthentificationService().getGroup(Integer.decode(arg0)); + group = RemoteSecurityService.getAuthentificationService() + .getGroup(token, Integer.decode(arg0)); } catch (Exception e) { // TODO: handle exception } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java 2008-01-22 16:32:43 UTC (rev 418) @@ -6,6 +6,13 @@ public class UserValueEncoder implements ValueEncoder<User> { + private String token; + + public UserValueEncoder(String token) { + super(); + this.token = token; + } + public String toClient(User arg0) { return Integer.toString(arg0.getId()); } @@ -14,7 +21,7 @@ User user = null; try { user = RemoteSecurityService.getAuthentificationService().getUser( - Integer.decode(arg0)); + token, Integer.decode(arg0)); } catch (Exception e) { // TODO: handle exception } Modified: trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-22 16:32:43 UTC (rev 418) @@ -11,7 +11,7 @@ <t:if test="superAdmin"> <p><t:label for="owner" /> : <input t:type="Select" t:id="owner" - t:value="owner" model="users" /></p> + t:value="owner" model="users" encoder="userEncoder" /></p> </t:if> <p>${message:userMembers} : <input t:type="Palette" model="users" Modified: trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-22 16:32:43 UTC (rev 418) @@ -28,6 +28,16 @@ <p>${message:memberOf} : <input t:type="Palette" model="groups" selected="groupsOfUser" encoder="groupEncoder" /></p> + <p>${message:ownerOf} : + <table t:type="Grid" source="ownedGroups" row="group" + model="groupModel"> + <t:parameter name="empty"> + ${message:none} + </t:parameter> + + </table> + </p> + <input t:type="Submit" t:value="message:submit" /> <a t:type="actionlink" t:id="cancel">${message:cancel}</a> </t:form> Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-22 15:15:54 UTC (rev 417) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-22 16:32:43 UTC (rev 418) @@ -8,4 +8,6 @@ cancel=Cancel password=Password resetPassword=Reset password -memberOf=Member of \ No newline at end of file +memberOf=Member of +ownerOf=Owner of +none=None \ No newline at end of file
participants (1)
-
glandais@users.labs.libre-entreprise.org